time
est une commande géniale si vous voulez savoir combien de temps CPU prend une commande donnée.
Je recherche quelque chose de similaire qui puisse répertorier les fichiers auxquels un programme et ses enfants accèdent. Soit en temps réel, soit sous forme de rapport par la suite.
Actuellement j'utilise :
#!/bin/bash
strace -ff -e trace=file "[email protected]" 2>&1 | perl -ne 's/^[^"]+"(([^\"]|\[\"nt])*)".*/$1/ && print'
mais cela échoue si la commande à exécuter implique sudo
. Ce n'est pas très intelligent (ce serait bien s'il ne pouvait lister que les fichiers existants ou qui avaient des problèmes de permission ou les regrouper en fichiers lus et en fichiers écrits). Aussi strace
est lent, donc ce serait bien avec un choix plus rapide.
Réponse acceptée :
J'ai abandonné et j'ai codé mon propre outil. Pour citer ses documents :
SYNOPSIS
tracefile [-adefnu] command
tracefile [-adefnu] -p pid
OPTIONS
-a List all files
-d List only dirs
-e List only existing files
-f List only files
-n List only non-existing files
-p pid Trace process id
-u List only files once
Il ne produit que les fichiers, vous n'avez donc pas besoin de gérer la sortie de strace
.
https://gitlab.com/ole.tange/tangetools/tree/master/tracefile