Découvrez quels processus écrivent sur le disque dur


32

Sur mon Lenovo T400 et Ubuntu, le voyant d'écriture sur le disque dur continue de clignoter. Je me demandais si sous Linux, il était possible de savoir quels processus faisaient des E / S sur le disque dur? Tout comme par top, vous pouvez découvrir quels processus utilisent le plus de CPU et de mémoire.

Réponses:


42

Iotop est un bon outil pour ce que vous voulez. Il permet également d'afficher la quantité cumulée d'E / S sur l'un des disques DISK READ, DISK WRITE, SWAPIN et IO (pourcentage global). C'est à travers une interface astucieuse:

  • Vous appuyez simplement asur le clavier, et il triera les processus les plus affamés.
  • Pour inverser l'ordre, il vous suffit d'appuyer sur r.
  • Si vous souhaitez trier par d'autres colonnes, il vous suffit d'appuyer sur la touche gauche / droite.

Comme top, la présentation est plutôt chargée. Une autre chose est qu'il n'a pas les innombrables options qui topont (par exemple, je ne peux pas choisir de masquer les colonnes qui ne m'intéressent pas), mais l'outil est plus que suffisant pour son objectif spécifique.


3
Powertop est également utile pour trouver ce qui utilise la batterie sur un ordinateur portable; iotop est toujours le premier endroit pour rechercher des accès au disque.
Gilles 'SO- arrête d'être méchant'

on peut passer -o( --only) pour filtrer toutes les tâches ne faisant aucune E / S. Cela rend la liste moins encombrée
Marcin Orlowski

15

Vous pouvez utiliser lsof( man lsof ). Ce qui suit renverra une liste de tous les fichiers ouverts en écriture:

lsof | grep -e "[[:digit:]]\+w"

1
Les fichiers ouverts et les fichiers auxquels on accède sont deux choses différentes.
psusi

@psusi Un fichier ouvert pour l'écriture est très probablement "accédé". En outre, plus d'informations peuvent être récupérées en apprenant lsof via sa page de manuel.
James Sumners

5
Les fichiers ouverts en écriture peuvent être écrits à un moment donné, mais pas nécessairement en ce moment. De nombreux fichiers restent ouverts mais sont rarement écrits. D'un autre côté, les fichiers en cours d'écriture peuvent être ouverts et fermés rapidement et n'apparaîtront donc pas dans lsof. Quoi qu'il en soit, il est peu utile de déterminer quel processus écrit actuellement sur le disque.
psusi

La wcommande ci-dessus vous permet de rechercher des fichiers ouverts en écriture uniquement . Les fichiers ouverts pour l'écriture et la lecture ( u) ne seront pas affichés, mais ils peuvent également y être écrits. Si vous souhaitez voir les fichiers ouverts en écriture et en lecture + écriture, je crois que c'est ce que vous recherchez:lsof | grep -e "[[:digit:]]\+[wu]\{1\}"
Martijn

1
@Martijn Vous voudrez utiliser grep -e**w**pour éviter la correspondance à l' [0-9]\+[wu]intérieur d'une autre colonne


2

Surtout pour une faible activité du disque, il est nécessaire d'utiliser iotop en mode batch, pour éviter que les lignes d'accès courtes ne disparaissent rapidement. La réponse par Comment enregistrer le système de fichiers en lecture / écriture par nom de fichier sous Linux? montre comment procéder.

Jusqu'à présent, iotopc'est la meilleure solution globale. La commande suivante vous donne une sortie en temps réel de tous les processus utilisant le disque.

iotop -bktoqqq -d .5

where: -b     is batch mode
       -k     is kilobytes/s
       -t     adds timestamp
       -o     only show processes or threads actually doing I/O
       -qqq   removes output headers
       -d .5  updates every .5 seconds

Une fois que vous avez l'ID de processus, vous pouvez également trouver les fichiers avec

 lsof -p $PID

1
En quoi cette réponse diffère-t-elle des réponses ci-dessus (très anciennes)? Il est bon de répondre à une ancienne question pour expliquer en quoi votre réponse diffère des réponses précédentes. Cela aide le lecteur à trier les réponses.
Stephen Rauch

Merci de l'avoir signalé. J'ai modifié cette réponse en tenant compte de votre commentaire.
Frank Breitling du
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.