GNU/Linux >> Belajar Linux >  >> Linux

Apakah pipa harus menulis file sementara?

  1. pipa tidak menyimpan data pada disk. /bin/gema foo | grep bar tidak membuat file apa pun. coba strace -f sh -c '/bin/echo foo | grep bar' untuk melihat semua panggilan sistem yang dilakukan oleh shell saat menjalankan saluran pipa. echo adalah shell bawaan, jadi saya menyarankan /bin/echo untuk membuat shell menjalankan executable.

  2. /tmp tidak harus di disk. Itu dapat dipasang di tmpfs (yaitu didukung oleh memori virtual). Perhatikan bahwa reboot akan mengosongkan /tmp dalam hal ini, jadi gunakan /var/tmp untuk apa pun yang ingin Anda tinggalkan.

Jika yang Anda lakukan adalah memasukkan data ke dalam file, maka itu tidak menggunakan pipa. Jika file tersebut adalah file fifo, bukan file biasa, maka itu hanya nama rendezvous, dan tidak berisi data. Gunakan ls -l untuk mencari tahu.

Dan perhatikan bahwa jika Anda berharap untuk menghentikan pengguna melihat apa yang terjadi melalui pipa dalam proses yang mereka miliki, Anda cukup SOL, karena strace dapat memeriksa semua yang dilakukan proses yang berinteraksi dengan apa pun di luar proses, kecuali untuk membaca/menulis memori bersama yang di-mmap. ltrace bahkan lebih invasif. Jika program Anda akan berjalan pada sistem di mana pengguna lokal memiliki root, Anda tidak dapat menghentikannya sama sekali. Di Unix, root dapat melakukan apa saja, dan memiliki alat canggih untuk tujuan tersebut.


Linux
  1. Tulis Semua Tmux Scrollback Ke File?

  2. Apakah Curl Memiliki Timeout?

  3. Redirect Dan Output Pipa?

  1. Bagaimana cara menulis stderr ke file saat menggunakan tee dengan pipa?

  2. Tulis ke file .txt?

  3. Shell - Tulis konten variabel ke file

  1. Apakah Python memiliki sinkronisasi?

  2. Bagaimana rm bekerja? Apa yang rm lakukan?

  3. wc -l TIDAK menghitung file terakhir jika tidak memiliki karakter baris akhir