Pipes speichern keine Daten auf der Festplatte. / bin / echo foo | grep bar erstellt keine Dateien. Versuchen Sie
strace -f sh -c '/bin/echo foo | grep bar'
, alle Systemaufrufe anzuzeigen, die von einer Shell ausgeführt werden, wenn Sie eine Pipeline ausführen.echo
ist eine eingebaute Shell, daher schlug ich vor/bin/echo
, die Shell als ausführbare Datei auszuführen./tmp
muss nicht auf der Festplatte sein. Es kann auf tmpfs gemountet werden (dh durch virtuellen Speicher gesichert werden). Beachten Sie, dass ein Neustart/tmp
in diesem Fall leer ist. Verwenden/var/tmp
Sie also alles, was Sie in der Nähe haben möchten.
Wenn Sie Daten in eine Datei schreiben, wird keine Pipe verwendet. Wenn es sich bei der Datei um eine FIFO-Datei handelt, keine reguläre Datei, handelt es sich lediglich um einen Rendezvous mit Namen, der keine Daten enthält. Benutze ls -l um es herauszufinden.
Beachten Sie, dass Sie, wenn Sie die Benutzer daran hindern möchten, zu sehen, was durch die Pipes in Prozessen geht, die sie besitzen, so ziemlich SOL sind, da Sie strace
alles überprüfen können, was ein Prozess tut, der mit etwas außerhalb des Prozesses interagiert, außer dem Lesen / Schreiben von Mapped Shared Erinnerung. ltrace
ist noch invasiver. Wenn Ihr Programm auf Systemen läuft, auf denen der lokale Benutzer root hat, können Sie diese überhaupt nicht anhalten. Auf Unix kann root alles tun und verfügt über leistungsstarke Tools für diesen Zweck.