time
è un comando brillante se vuoi capire quanto tempo di CPU impiega un determinato comando.
Sto cercando qualcosa di simile in grado di elencare i file a cui accede un programma e i suoi figli. O in tempo reale o come report successivo.
Attualmente uso:
#!/bin/bash
strace -ff -e trace=file "[email protected]" 2>&1 | perl -ne 's/^[^"]+"(([^\"]|\[\"nt])*)".*/$1/ && print'
ma fallisce se il comando da eseguire coinvolge sudo
. Non è molto intelligente (sarebbe bello se potesse elencare solo i file esistenti o che hanno avuto problemi di autorizzazione o raggrupparli in file che vengono letti e file che vengono scritti). Anche strace
è lento, quindi sarebbe utile con una scelta più veloce.
Risposta accettata:
Ho rinunciato e codificato il mio strumento. Per citare dai suoi documenti:
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
Produce solo i file, quindi non è necessario gestire l'output da strace
.
https://gitlab.com/ole.tange/tangetools/tree/master/tracefile