Untuk menjawab pertanyaan:
- Apakah
/tmp
seharusnya dikosongkan secara otomatis:Ya - Apakah kita harus menghapus File di
/tmp
secara teratur dan manual:Tidak , sistem Anda akan menanganinya.
Jika Anda mungkin bertanya pada diri sendiri:
- Dapatkah saya menghapus file dari
/tmp
untuk alasan apa pun (butuh ruang, ingin menghapus jejak, dll.):Tergantung , baca terus .
Filesystem Hierarchy Standard (FHS) menyatakan:
Direktori /tmp harus tersedia untuk program yang membutuhkan file sementara.
Program tidak boleh berasumsi bahwa file atau direktori apa pun di /tmp disimpan di antara pemanggilan program.
/var/tmp/
memiliki tujuan yang sama, tetapi tidak boleh dihapus selama reboot.
Ini tidak dijamin /tmp/
itu atau /var/tmp/
dibersihkan secara teratur. Ini mungkin bergantung pada distribusi dan pengaturan Anda, meskipun sebagian besar sistem melakukan pembersihan dari waktu ke waktu. Lihat komentar dengan mike
.
Jika Anda perlu menghapus file di /tmp , lihat dulu apakah file sedang digunakan. Anda dapat melakukannya dengan mudah dengan:
lsof /tmp/file_to_delete
Jika Anda memiliki hak untuk melakukannya, ini akan menampilkan proses yang menahan pegangan ke file tersebut, seperti nama proses, PID, dan jenis file. Untuk benar-benar menampilkan semua proses, awali sudo
atau jalankan sebagai pengguna root .
lsof +D /tmp
akan menampilkan semua file di /tmp
dan direktori di bawah ini (+D
) yang sedang dibuka. Tentu saja Anda tidak boleh menghapus file-file ini.
Bahkan ketika Anda menghapus file yang masih dibuka - jika Anda memiliki hak untuk melakukannya - itu menjadi tidak dapat diakses dari ruang nama sistem file, tetapi masih ada untuk proses yang memiliki pegangan file terbuka untuk itu. Setelah menutup pegangan itu, file tidak dapat diakses lagi untuk proses itu, dan jika tidak ada proses yang membuka file lagi, file tersebut akhirnya dihapus. Suatu proses seharusnya tidak menganggap bahwa file bertahan antara open
berikutnya panggilan, tetapi pemrogram ceroboh, dan Anda tidak pernah tahu. Untuk alasan itu tidak pintar untuk menghapus file yang masih digunakan oleh beberapa program.
Saya pikir ini tergantung variasi OS. Saya membayangkan bahwa /tmp biasanya dihapus saat reboot, dan memang tidak aman bagi sistem untuk membersihkan dirinya sendiri di tengah sesi karena tidak akan tahu file apa yang sedang aktif.
Jika Anda berani, Anda mungkin ingin memasukkan perintah ke crontab yang menghapus file yang lebih tua dari usia tertentu, tetapi ini dapat menyebabkan beberapa masalah jika menghapus file yang masih digunakan. Anda dapat mencoba perintah (saya belum mencobanya) seperti
find /tmp -type f -ctime +10 -exec rm {} +
Yang secara teoritis akan menghapus semua file di bawah /tmp lebih lama dari 10 hari.
Direktori /tmp dan /var/tmp dibersihkan dengan jadwal normal. Ini mungkin tergantung pada distro Anda. Di sistem CentOS saya (tiruan RedHat) ada tugas cron yang dijadwalkan untuk menjalankan tmpwatch, pembersih dir tmp, dengan jadwal harian. File di /var/tmp dibiarkan bertahan sedikit lebih lama dari file di /tmp/. Saya juga melihat skrip yang memangkas /tmp (tetapi secara eksplisit bukan /var/tmp) saat reboot, mengetahui bahwa tidak ada yang menahan file itu tetap terbuka karena semua prosesnya baru.
Jadi, ya, /tmp memiliki pemeliharaan dari skrip dasar. Itu masih bisa mengisi di luar waktu pemeliharaan itu. Jika Anda memilih untuk membersihkan secara manual, praktik sysadmin terbaik adalah berhati-hati. Pengetahuan sysadmin berbicara tentang symlink di /tmp yang menunjuk ke file sistem yang diperlukan yang dihapus ketika sysadmin n00b menjalankan find
sederhana skrip.