time
ist ein brillanter Befehl, wenn Sie herausfinden möchten, wie viel CPU-Zeit ein bestimmter Befehl benötigt.
Ich suche nach etwas Ähnlichem, das die Dateien auflisten kann, auf die von einem Programm und seinen Kindern zugegriffen wird. Entweder in Echtzeit oder als Report im Nachhinein.
Derzeit verwende ich:
#!/bin/bash
strace -ff -e trace=file "[email protected]" 2>&1 | perl -ne 's/^[^"]+"(([^\"]|\[\"nt])*)".*/$1/ && print'
aber es schlägt fehl, wenn der auszuführende Befehl sudo
beinhaltet . Es ist nicht sehr intelligent (es wäre schön, wenn es nur Dateien auflisten könnte, die vorhanden sind oder die Berechtigungsprobleme hatten, oder sie in Dateien gruppieren könnte, die gelesen werden, und Dateien, die geschrieben werden). Auch strace
ist langsam, also wäre es gut mit einer schnelleren Auswahl.
Akzeptierte Antwort:
Ich gab auf und programmierte mein eigenes Tool. Um aus seinen Dokumenten zu zitieren:
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
Es gibt nur die Dateien aus, sodass Sie sich nicht mit der Ausgabe von strace
befassen müssen .
https://gitlab.com/ole.tange/tangetools/tree/master/tracefile