Je ne comprends pas la sortie de la commande lsof.
Quand j'écris
lsof -p PID
J'obtiens 4 lignes et quand j'écris
lsof | grep PID
Je reçois des centaines de lignes.
Ne devrait-il pas retourner le même résultat?
Merci pour vos réponses. Voici la sortie. On dirait que c'est un sous-processus ou que signifient ces tâches?
lsof -p 29076
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 29076 pr cwd unknown /proc/29076/cwd (readlink: Permission denied)
java 29076 pr rtd unknown /proc/29076/root (readlink: Permission denied)
java 29076 pr txt unknown /proc/29076/exe (readlink: Permission denied)
java 29076 pr NOFD /proc/29076/fd (opendir: Permission denied)
lsof |grep 29076|head -20
java 29076 pr cwd unknown /proc/29076/cwd (readlink: Permission denied)
java 29076 pr rtd unknown /proc/29076/root (readlink: Permission denied)
java 29076 pr txt unknown /proc/29076/exe (readlink: Permission denied)
java 29076 pr NOFD /proc/29076/fd (opendir: Permission denied)
java 29076 300 pr cwd unknown /proc/29076/task/300/cwd (readlink: Permission denied)
java 29076 300 pr rtd unknown /proc/29076/task/300/root (readlink: Permission denied)
java 29076 300 pr txt unknown /proc/29076/task/300/exe (readlink: Permission denied)
java 29076 300 pr NOFD /proc/29076/task/300/fd (opendir: Permission denied)
java 29076 329 pr cwd unknown /proc/29076/task/329/cwd (readlink: Permission denied)
java 29076 329 pr rtd unknown /proc/29076/task/329/root (readlink: Permission denied)
java 29076 329 pr txt unknown /proc/29076/task/329/exe (readlink: Permission denied)
java 29076 329 pr NOFD /proc/29076/task/329/fd (opendir: Permission denied)
java 29076 330 pr cwd unknown /proc/29076/task/330/cwd (readlink: Permission denied)
java 29076 330 pr rtd unknown /proc/29076/task/330/root (readlink: Permission denied)
java 29076 330 pr txt unknown /proc/29076/task/330/exe (readlink: Permission denied)
java 29076 330 pr NOFD /proc/29076/task/330/fd (opendir: Permission denied)
java 29076 331 pr cwd unknown /proc/29076/task/331/cwd (readlink: Permission denied)
java 29076 331 pr rtd unknown /proc/29076/task/331/root (readlink: Permission denied)
java 29076 331 pr txt unknown /proc/29076/task/331/exe (readlink: Permission denied)
java 29076 331 pr NOFD /proc/29076/task/331/fd (opendir: Permission denied)
lsof - liste les fichiers ouverts, essayez de lire la page de manuel de lsof
#man lsof
lsof -p PID
répertorie les fichiers ouverts associés à l'ID de processus du PID.En l'absence d'options, lsof répertorie tous les fichiers ouverts appartenant à tous les processus actifs. lorsque vous le faites
lsof | grep PID
, il répertorie tous les fichiers ouverts appartenant à tous les processus actifs et grep le numéro PID, qui peut correspondre au PID lui-même et également n'importe où, où le PID apparaît comme faisant partie d'autres PID et peut également être le processus enfant du PID, et bientôt.Par conséquent, si vous souhaitez l'utiliser,
lsof | grep PID
vous devez faire correspondre le PID exactement, comme la correspondance de mots completslsof | grep -w PID
, mais cela entraînera toujours plus de lignes si le PID a d'autres processus enfants.la source
J'ai essayé cela sur mon système, et les deux commandes génèrent les mêmes listes, je vous suggère d'essayer les deux commandes consécutivement plusieurs fois, juste pour vous assurer que l'état du processus est stable. Selon la page de manuel et vos sorties, c'est la seule explication que je puisse avoir.
la source
Certaines versions de lsof incluent un identifiant de thread. Cela peut être déterminé par l'en-tête de colonne TID apparent dans la sortie. Une telle sortie entraînera une duplication des entrées car lsof affichera potentiellement des entrées dupliquées une pour chaque thread.
https://support.datastax.com/hc/en-us/articles/209826153-lsof-shows-Cassandra-is-holding-a-large-amount-of-files-open
la source