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.

Tim
la source

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.

Tshepang
la source
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"
James Sumners
la source
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

Utilisez strace.

Mehrdad
la source
6
Cela va vous dire ce que fait un processus particulier, cela n'aidera pas à trouver quel processus fait quelque chose.
Gilles 'SO- arrête d'être méchant'
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
Frank Breitling
la source
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