GNU/Linux >> Linux Esercitazione >  >> Linux

Pipe deve scrivere un file temporaneo?

  1. le pipe non memorizzano i dati su disco. /bin/echo pippo | grep bar non crea alcun file. prova strace -f sh -c '/bin/echo foo | grep bar' per vedere tutte le chiamate di sistema effettuate da una shell durante l'esecuzione di una pipeline. echo è un built-in della shell, quindi ho suggerito /bin/echo per fare in modo che la shell esegua un eseguibile.

  2. /tmp non deve essere su disco. Può essere montato su tmpfs (ovvero supportato da memoria virtuale). Nota che un riavvio svuoterà /tmp in tal caso, usa /var/tmp per qualsiasi cosa tu voglia lasciare in giro.

Se quello che stai facendo è inserire dati in un file, allora non sta usando una pipe. Se il file è un fifo, non un file normale, allora è solo un rendezvous con nome e non contiene dati. Usa ls -l per scoprirlo.

E nota che se speri di impedire agli utenti di vedere cosa sta succedendo attraverso le pipe nei processi di loro proprietà, sei praticamente SOL, perché strace può ispezionare tutto ciò che fa un processo che interagisce con qualsiasi cosa al di fuori del processo, ad eccezione della lettura/scrittura della memoria condivisa mappata. ltrace è ancora più invasivo. Se il tuo programma verrà eseguito su sistemi in cui l'utente locale ha root, non puoi fermarli affatto. Su Unix, root può fare qualsiasi cosa e dispone di potenti strumenti per questo scopo.


Linux
  1. Lo scopo dell'utilizzo di un Fifo contro un file temporaneo o una pipe?

  2. Scrivi tutto Tmux Scorri indietro su un file?

  3. Il curl ha un timeout?

  4. Reindirizzamento e uscita del tubo?

  5. Nascondere i dati nei filesystem?

Bash:Scrivi su file

Come scrivere dati in file in Linux

Python ha la sincronizzazione?

Come funziona rm? Cosa fa rm?

Come posso fare in modo che tcpdump scriva su file e emetta in output standard i dati appropriati?

Avere un file chiamato ~ (tilde) nella mia directory home