web-dev-qa-db-fra.com

Pourquoi lsof se plaint-il de tracefs?

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?

9
Zilk

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.

10
EnzoR

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.

3
damko

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.

2
nevets

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é,

0
QuickPrototype