-
Pipes speichern keine Daten auf der Festplatte. /bin/echo foo | grep bar erstellt keine Dateien. versuchen Sie es mit
strace -f sh -c '/bin/echo foo | grep bar'
um alle Systemaufrufe anzuzeigen, die von einer Shell beim Ausführen einer Pipeline ausgeführt werden.echo
ist eine eingebaute Shell, also habe ich/bin/echo
vorgeschlagen damit die Shell eine ausführbare Datei ausführt. -
/tmp
muss nicht auf der Festplatte sein. Es kann auf tmpfs gemountet werden (d. h. durch virtuellen Speicher unterstützt). Beachten Sie, dass ein Neustart/tmp
leert Verwenden Sie in diesem Fall also/var/tmp
für alles, was Sie herumlassen möchten.
Wenn Sie Daten in eine Datei einfügen, wird keine Pipe verwendet. Wenn die Datei eine Fifo-Datei ist, keine normale Datei, dann ist sie nur ein benanntes Rendezvous und enthält keine Daten. Verwenden Sie ls -l, um es herauszufinden.
Und beachten Sie, dass Sie, wenn Sie hoffen, Benutzer daran zu hindern, zu sehen, was durch Pipes in Prozessen läuft, die ihnen gehören, ziemlich SOL sind, weil strace
kann alles untersuchen, was ein Prozess tut, was mit irgendetwas außerhalb des Prozesses interagiert, mit Ausnahme des Lesens/Schreibens von mmapped Shared Memory. ltrace
ist noch invasiver. Wenn Ihr Programm auf Systemen ausgeführt wird, auf denen der lokale Benutzer root ist, können Sie sie überhaupt nicht stoppen. Unter Unix kann root alles tun und verfügt über leistungsstarke Tools für diesen Zweck.