time
es un comando brillante si desea averiguar cuánto tiempo de CPU requiere un comando dado.
Estoy buscando algo similar que pueda enumerar los archivos a los que accede un programa y sus hijos. Ya sea en tiempo real o como informe posterior.
Actualmente uso:
#!/bin/bash
strace -ff -e trace=file "[email protected]" 2>&1 | perl -ne 's/^[^"]+"(([^\"]|\[\"nt])*)".*/$1/ && print'
pero falla si el comando a ejecutar involucra sudo
. No es muy inteligente (sería bueno si solo pudiera enumerar los archivos existentes o que tienen problemas de permisos o agruparlos en archivos que se leen y archivos que se escriben). También strace
es lento, por lo que sería bueno con una opción más rápida.
Respuesta aceptada:
Me rendí y codifiqué mi propia herramienta. Para citar de sus documentos:
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
Solo genera los archivos, por lo que no necesita lidiar con la salida de strace
.
https://gitlab.com/ole.tange/tangetools/tree/master/tracefile