Saat mengkonfigurasi aplikasi, Anda dapat sering menggunakan /dev/null
file konfigurasi jika Anda ingin aplikasi membaca file kosong. Tetapi, jika aplikasi membaca daftar file dari direktori, Anda tidak dapat menggunakan trik ini. Anda harus memberikannya direktori kosong untuk dibaca.
Saya bertanya-tanya: apakah Linux memiliki direktori kosong default yang dapat digunakan untuk tujuan seperti itu? Saya tahu OpenSSH menggunakan / var / empty untuk sementara waktu, dan saya tentu saja dapat membuat direktori kosong sendiri, tetapi mungkin FHS telah menentukan direktori standar untuk ini?
/var/empty
tidak kosong, tetapi berisi folder bernamasshd
, jadi Anda mungkin tidak ingin menggunakannya./dev/null
tidak begitu banyak untuk membaca seperti untuk menulis. Data yang ditulis/dev/null
hanya menghilang. Jadi, direktori yang setara akan menjadi tempat di manamv yourfile /dev/empty
hasil akan menghapus file Anda.mv yourfile /dev/empty/
. Jika yamv yourfile /dev/empty
, Anda mencoba mengganti direktori khusus./dev/null
dandd
karenadd
akan mendapatkan EOF sebelum bahkan dituliskan satu byte. Saya pikir Anda sedang memikirkan/dev/zero
, yang sering digunakan untuk mengisi sesuatu dengan atau menghasilkan angka nol tertentu./dev/null
dengan/dev/zero
.Jawaban:
The FHS tidak memberikan "standar" direktori kosong.
Adalah umum bagi sistem Linux untuk menyediakan direktori
/var/empty
, tetapi direktori ini tidak didefinisikan dalam FHS dan mungkin sebenarnya tidak kosong. Sebaliknya, daemon tertentu akan membuat direktori kosongnya sendiri di sini. Sebagai contoh, openssh menggunakan direktori kosong/var/empty/sshd
untuk pemisahan hak istimewa.Jika kebutuhan Anda untuk direktori kosong sementara, Anda dapat membuat direktori kosong sendiri, sebagai subdirektori dari
/run
atau/tmp
. Jika Anda melakukan ini di luar program, Anda dapat menggunakanmktemp -d
ini, atau menggunakanmkdtemp(3)
fungsi C di dalam program Anda. Meskipun jika Anda selalu memerlukan direktori kosong untuk hadir, pertimbangkan/var/empty
untuk membuatnya di bawah seperti yang dilakukan openssh.Untuk kasus penggunaan ini, membuat direktori di bawah
/tmp
mungkin yang paling cocok, meskipun dalam praktiknya tidak masalah di mana Anda meletakkannya.sumber
/var/empty
, karena setiap program yang menggunakannya (seperti OpenSSH dalam konfigurasi default -nya ) mungkin mengharapkannya menjadi benar-benar kosong. (/var/empty/sshd
Masalahnya tampaknya RedHat-isme yang aneh;/var/run/sshd
Sebaliknya , Debian menggunakan .)/var/empty
menjadi kosong. Apakah ada tempat lain yang bisa dicari orang ini?/var/empty
tetapi kode yang digunakan/var/empty/sshd
. Coba lagi. :)/var/empty
untuk apa pun, karena Anda tidak dapat memastikan semantiknya pada sistem yang diberikan. Membuat direktori kosong Anda sendiri misalnya di bawah/var/run
, seperti yang dilakukan Debian, tampaknya lebih masuk akal.Anda dapat menggunakan
mktemp -d
untuk membuat direktori sementara kosong baru dengan izin aman, secara default di/tmp/
. Utilitas akan menampilkan jalur direktori baruSTDOUT
, sehingga berguna dalam shell.Ini lebih portabel daripada file unit systemd.
sumber
Pertanyaan Unix ini memiliki beberapa saran untuk membuat direktori "lubang hitam ", termasuk sistem file FUSE nullfs .
sumber
Untuk layanan, systemd menyediakan opsi
PrivateTmp
untuk membuat direktori pribadi/tmp
dan/var/tmp
yang tidak dibagi oleh proses di luar ruang nama untuk layanan itu dan yang harusnya kosong (awalnya).sumber
/tmp
akan kosong hanya karena sudah di-namespace.