Chaque exécution de lsof
émet un avertissement concernant TraceFS:
$ lsof any-file
lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
Output information may be incomplete.
$ mount | grep trace
tracefs on /sys/kernel/debug/tracing type tracefs (rw,relatime)
(Ceci est sur Ubuntu 15.10, entièrement mis à jour)
Est-il normal que TraceFS soit monté en mode de fonctionnement normal?
Si oui, comment puis-je dire à lsof
de le sauter?
La réponse à votre question se trouve dans les autorisations de fichiers:
essayer:
$ ls -l /sys/kernel/debug/tracing
ls: cannot access '/sys/kernel/debug/tracing': Permission denied
$ ls -l /sys/kernel
total 0
...
drwx------ 31 root root 0 2016-06-15 11:06:47 debug
...
Ainsi, les utilisateurs normaux ne sont pas autorisés à accéder à /sys/kernel/debug/tracing
et il semble n'y avoir aucun moyen de demander à lsof
d'éviter d'y accéder.
Nous pourrions ensuite déterminer s'il s'agit d'un bogue ou non, mais la réponse à votre question se résume à ceci.
J'ai eu le même problème et ceci réponse m'a aidé à comprendre le problème un peu mieux.
J'ai découvert qu'un moyen de supprimer l'avertissement gênant consiste à démonter umount debugfs
mount | grep debugfs
none on /sys/kernel/debug type debugfs (rw,_netdev)
Sudo umount $(mount | grep debugfs | awk '{print $3}')
Si vous exécutez maintenant lsof
, il n'y a pas d'avertissement.
Le problème est que vous n'êtes pas autorisé à accéder au répertoire debugfs. Le répertoire tracefs a été créé pour permettre aux utilisateurs de monter le répertoire de traçage directement sur/sys/kernel/tracing et ne nécessite pas l'activation de debugfs. Mais pour des raisons de compatibilité ascendante, lors du montage du répertoire debugfs, le système monte automatiquement tracefs dans le répertoire "traçage" de debugfs.
Maintenant, lorsque vous effectuez lsof, il examine le fichier/proc/filesystems ainsi que/proc/mounts. Il voit que tracefs est monté sur/sys/kernel/debug/tracing, et tente donc de le statuer. Malheureusement, parce que/sys/kernel/debug ne permet pas aux utilisateurs non root de voir l’intérieur de celui-ci, vous obtenez le message d’erreur lorsque vous essayez de stater le répertoire "traçage" dans/sys/kernel/debug. Si vous démontez le répertoire debugfs, l'avertissement disparaîtra.
L'avertissement est écrit dans stderr. Vous pouvez toujours simplement rediriger ceci vers le répertoire/dev/null:
lsof <any-file> 2>/dev/null
À votre santé,