Saya mendapat kesan bahwa file "lama" di /tmp
akan secara teratur dihapus. Namun, menurut saya itu /tmp
hanya akan tumbuh selama yang diinginkan, dan tidak ada yang akan dihapus. Beberapa orang mengatakan lebih baik membiarkannya /tmp
sendiri dan menghapus isinya hanya jika disk sudah penuh.
Pertanyaan saya adalah, apakah /tmp
benar - benar dirancang untuk tidak mengurus dirinya sendiri? Apa praktik terbaik?
/tmp
dibersihkan setelah reboot, tetapi ini tergantung pada sistem file yang terpasang di sana. Apa yangdf -h
dikatakan?Jawaban:
Untuk menjawab pertanyaan:
/tmp
seharusnya dikosongkan secara otomatis: Ya/tmp
secara teratur dan manual: Tidak , sistem Anda akan menjaganya.Jika Anda bertanya pada diri sendiri:
/tmp
untuk alasan apa pun (butuh ruang, ingin menghapus jejak, dll.): Tergantung , baca terus .Status Sistem Hierarki Standar (FHS) menyatakan :
/var/tmp/
memiliki tujuan yang serupa , tetapi tidak boleh dihapus saat reboot.Hal ini tidak dijamin bahwa
/tmp/
atau/var/tmp/
dibersihkan secara teratur. Ini mungkin tergantung pada distribusi dan pengaturan Anda, meskipun sebagian besar sistem melakukan pembersihan dari waktu ke waktu. Lihat komentar olehmike
.Jika Anda perlu menghapus file di / tmp , lihat dulu apakah file tersebut digunakan. Anda dapat melakukannya dengan mudah dengan:
Jika Anda memiliki hak untuk melakukannya, ini akan menunjukkan proses memegang pegangan untuk file itu, seperti nama proses, PID dan jenis file. Untuk benar-benar menunjukkan semua proses, tambahkan
sudo
atau jalankan sebagai root pengguna .akan menampilkan semua file di
/tmp
dan direktori di bawah (+D
) yang saat ini terbuka. 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 namespace filesystem, tetapi masih ada untuk proses yang memiliki pegangan file terbuka untuk itu. Setelah menutup pegangan itu, file tidak dapat diakses untuk proses itu lagi, dan jika tidak ada proses membuka file lagi akhirnya dihapus. Suatu proses seharusnya tidak mengira bahwa file bertahan antara
open
panggilan berikutnya , tetapi programmer ceroboh, dan Anda tidak pernah tahu. Karena alasan itu, tidak sepandai itu untuk menghapus file yang masih digunakan oleh beberapa program.sumber
Saya rasa ini tergantung pada varian OS. Saya membayangkan bahwa / tmp biasanya dihapus saat reboot, dan memang tidak akan aman bagi sistem untuk membersihkan dirinya sendiri di pertengahan sesi karena tidak akan tahu file apa yang aktif.
Jika Anda berani, Anda mungkin ingin melemparkan perintah ke crontab yang menghapus file lebih tua dari usia tertentu, tetapi ini dapat menyebabkan beberapa masalah jika menghapus file yang masih digunakan. Anda mungkin mencoba perintah (saya belum mencobanya) seperti
Yang secara teoritis akan menghapus semua file di bawah / tmp lebih lama dari 10 hari.
sumber
-r
ituDirektori / tmp dan / var / tmp dibersihkan pada jadwal normal. Ini mungkin tergantung pada distro Anda. Pada sistem CentOS saya (klon dari RedHat) ada tugas cron dijadwalkan untuk menjalankan tmpwatch , pembersih tmp dir, pada jadwal harian . File di / var / tmp diizinkan untuk bertahan sedikit lebih lama dari file di / tmp /. Saya juga melihat skrip yang memangkas / tmp (tetapi secara eksplisit tidak / var / tmp) pada reboot, mengetahui bahwa tidak ada yang menahan file itu terbuka karena semua prosesnya baru.
Jadi, ya, / tmp memiliki pemeliharaan dari skrip dasar. Itu masih dapat mengisi di luar waktu perawatan tersebut. Jika Anda memilih untuk membersihkan barang secara manual, praktik sysadmin terbaik adalah berhati-hati. Sysadmin bercerita tentang symlinks di / tmp menunjuk ke file sistem yang diperlukan yang dihapus ketika n00b sysadmin menjalankan
find
skrip sederhana .sumber
Di CentOS ada pekerjaan yang
/etc/cron.daily
disebuttmpwatch
yang akan menghapus file secara rekursif yang belum diakses untuk waktu tertentu. Biasanya, ini digunakan untuk membersihkan direktori yang digunakan untuk ruang penyimpanan sementara seperti / tmp.Ini
/etc/cron.daily/tmpwatch
skripnya/tmp
isi direktori bisa dihapus hanya ketika sistem reboot, karena proses yang berjalan mungkin memiliki mengakses file dari direktori itu.sumber
Anda dapat menghapus konten dari
/tmp/
; tetapi masalah dengan melakukannya adalah jika Anda memiliki layanan yang secara teratur menulis/tmp/
dan menghapus file, Anda dapat membuat layanan macet atau rusak hingga dimulai ulang.sumber
The FHS mendefinisikan
/tmp
direktori sebagai "file sementara (lihat juga / var / tmp), sering tidak diawetkan antara reboot sistem", dan/var/tmp
sebagai "file sementara dipertahankan antara reboot".Saat ini, dengan
/tmp
menjadi sistem file RAM (tmpfs) secara default (meskipun opsional) di banyak distribusi GNU / Linux,/tmp
secara efektif tidak persisten.(Dapat diperdebatkan) aplikasi harus mengelola file sementara mereka yang sesuai, yang menurut saya, termasuk menghapusnya ketika penggunaannya telah berakhir, dan tidak memerlukan administrator untuk menjadwalkan kemungkinan penghapusan yang merusak.
sumber
/tmp
ketika mereka selesai dengan mereka, atau ketika mereka keluar, tetapi masih ada masalah file yang tersisa/tmp
setelah penghentian (crash) program yang tidak normal.Jika Anda menjalankan Debian (atau turunan seperti Ubuntu), Anda harus melihat file / etc / default / rcS Anda dan sesuaikan
TMPTIME
variabel lingkungan. Menurut definisi apa yang berada di / tmp tidak ada hubungannya di sini pada reboot berikutnya.saya merekomendasi
TMPTIME
variabel di serversumber
Distribusi berbeda tentu saja, tetapi saya berharap file sementara dikelola secara otomatis oleh sistem out-of-the-box. Mereka mungkin akan menggunakan pekerjaan cron atau layanan systemd-tmpfiles-clean. Jika Anda khawatir tentang ruang disk, ini adalah perintah yang berguna untuk melihat berapa banyak ruang yang diambil setiap folder root:
Untuk melihat apakah sistem Anda menggunakan layanan systemd untuk mengelola file sementara, Anda bisa mencoba:
Di bagian bawah Anda akan melihat sesuatu seperti berikut ini, yang memberi tahu Anda ketika layanan terakhir kali dijalankan:
Perhatikan bahwa layanan ini akan keluar segera setelah selesai dengan pembersihan. Layanan pengatur waktu bertanggung jawab untuk memicu secara teratur. Anda dapat memeriksanya dengan:
Dan Anda harus mengharapkan sesuatu seperti berikut:
Jika Anda melihat lagi pada layanan aktual yang bertanggung jawab untuk membersihkan file, Anda akan melihat bahwa semua itu dijalankan:
Jadi Anda bisa menjalankan perintah itu secara langsung, atau melakukannya dengan benar, cukup lakukan:
Yang akan menjalankan perintah yang sesuai untuk sistem Anda. Namun, Anda harus sadar bahwa ini bukan perintah "hapus semua file sementara sekarang". Ada beberapa file konfigurasi yang mengontrol apa yang sebenarnya dihapus dan kapan sehingga aplikasi dapat secara individual mengkonfigurasi file sementara mereka.
Satu tempat untuk mencari penanganan generik dari file sementara dapat berupa
/usr/lib/tmpfiles.d/tmp.conf
baris yang relevan berikut ini:Anda bisa mengubahnya menjadi waktu yang lebih singkat, jika sistem Anda terus kehabisan ruang, misalnya, untuk:
Untuk memastikan apa yang Anda lakukan, lakukan
man tmpfiles.d
membaca manual. Sekali lagi, saya telah menemukan pendekatan yang disajikan di sini relevan pada CentOS (berbasis RedHat) dan sistem Ubuntu, tetapi saya tidak tahu banyak tentang distribusi lainnya.sumber