Kapan / tmp dibersihkan?

143

Saya mengambil untuk memasukkan berbagai file /tmp, dan saya bertanya-tanya tentang aturan menghapusnya?

Saya membayangkan itu berbeda untuk distribusi yang berbeda, dan saya sangat tertarik dengan versi desktop Ubuntu dan Fedora.

Tetapi cara umum yang bagus untuk mencari tahu akan menjadi hal yang hebat.

Bahkan yang lebih baik akan menjadi cara umum yang baik untuk mengendalikannya! (Sesuatu seperti 'setiap hari jam 3 pagi, hapus semua /tmpfile yang lebih tua dari 60 hari, tetapi jangan hapus direktori saat reboot')

John Lawrence Aspden
sumber
Terkait: askubuntu.com/questions/20783/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

155

Itu tergantung pada distribusi Anda. Pada beberapa sistem, itu dihapus hanya ketika boot, yang lain memiliki cronjobs yang berjalan menghapus item yang lebih lama dari n jam.

  • Pada sistem seperti Debian: saat boot (aturannya didefinisikan dalam /etc/default/rcS).
  • Pada sistem seperti RedHat: berdasarkan usia (RHEL6 itu /etc/cron.daily/tmpwatch; RHEL7 dan RedHat seperti dengan systemd itu dikonfigurasi dalam /usr/lib/tmpfiles.d/tmp.conf, dipanggil oleh systemd-tmpfiles-clean.service).
  • Di Gentoo /etc/conf.d/bootmisc.
kba
sumber
19
Dan terlepas dari kapan ini terjadi, satu-satunya momen aman umumnya pada saat boot, tepat setelah memasangnya, karena proses yang sedang berjalan mungkin memiliki file terkunci di sana, dan ini tidak boleh dihapus.
adapttr
Ada juga paket yang tersedia yang dapat menghapusnya secara berkala.
Samuel Edwin Ward
2
Pada sistem seperti RedHat dengan systemd (centos7 / rhel7), itu dikonfigurasikan di /usr/lib/tmpfiles.d/tmp.conf. Ini disebut oleh target systemd systemd-tmpfiles-clean.service.
Franklin Piat
1
Pada Debian lawas, Anda dapat mempertimbangkan tmpreaperpaket, ini versi forked tmpwatch.
Věroš K.
Ubuntu 19.04:cat: /etc/default/rcS: No such file or directory
Boris
24

Pada CentOS (dan saya berasumsi Fedora), ada pekerjaan di /etc/cron.daily disebut tmpwatch. Ini berjalan /usr/sbin/tmpwatch, yang akan menghapus file yang belum diakses dalam jumlah jam yang ditentukan, yaitu, perilaku default adalah untuk memeriksa atimeapakah file akan dievaluasi jika sudah digunakan baru-baru ini.

http://linux.die.net/man/8/tmpwatch

Distro lain (dan instalasi) mungkin memiliki / tmp dipasang sebagai tmpfs, yang merupakan sistem file dalam memori. Ini akan dihapus saat boot.

cjc
sumber
Saya tidak punya ini di CentOS 7.4.
Kevin Lemaire
@KevinLemaire Fungsionalitas dipindahkan ke layanan systemd. lists.centos.org/pipermail/centos/2014-October/147155.html
cjc
Jika Anda tidak menemukan file tmpwatch, Anda dapat mengunduh tmpwatch dengan menggunakanyum install tmpwatch
Ng Sek Long
Bisakah saya mendapatkan tmpwatch di distro lain? Kedengarannya luar biasa. Saya menggunakan distro berbasis debian
Jonathan
sudo find /tmp -type f -atime +10 -deleteakan menghapus file tmp yang belum diakses dalam 10 hari, gunakan dengan hati
Jonathan
13

Di Ubuntu 11.10 yang saya gunakan, ada skrip pemula di /etc/init/mounted-tmp.conf. Awal mula kata ini:

# mounted-tmp - Clean /tmp directory
#
# Cleans up the /tmp directory when it does not exist as a temporary
# filesystem.

description "Clean /tmp directory"

start on (mounted MOUNTPOINT=/tmp) or (mounted MOUNTPOINT=/usr)

Anda dapat membaca lebih detail, namun secara umum /tmpdibersihkan saat dipasang atau /usrdipasang. Ini secara teratur terjadi pada saat boot, sehingga /tmppembersihan ini berjalan pada setiap boot.

Di /etc/default/rcSAnda telah TMPTIMEmengatur, yang digunakan dalam skrip init di atas untuk memberi makan dua findperintah pada akhirnya - pada dasarnya mengendalikan penghapusan file berdasarkan waktu mereka (dimodifikasi, diubah, diakses).

icyrock.com
sumber
5

Pada RHEL 6.2 file dalam / tmp dihapus oleh tmpwatch jika belum diakses dalam 10 hari.

File /etc/cron.daily/tmpwatch mendefinisikan cara tmpwatch dipanggil.

#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
    -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
    -X '/tmp/hsperfdata_*' 10d /tmp

Argumen -x adalah file yang akan dikecualikan. Argumen 2 ke terakhir adalah waktu untuk menunggu setelah waktu terakhir diakses. Argumen terakhir adalah direktori untuk diperiksa.

johnjamesmiller
sumber
5

Dari Fedora 18 aktif, /tmpsudah terpasang pada tmpfs(yaitu RAM) secara default, dan dengan demikian terhapus saat dimatikan.

Perilaku ini dapat dinonaktifkan dengan mengeluarkan systemctl mask tmp.mountdan me-reboot (dan mengaktifkan kembali dengan mengeluarkan systemctl unmask tmp.mountdan me-reboot), dan kemudian /tmpakan dipasang pada sistem /file dan dapat dikontrol oleh /usr/lib/tmpfiles.d/tmp.confpengaturan.

Lihat http://fedoraproject.org/wiki/Features/tmp-on-tmpfs dan man tmpfiles.duntuk detail lebih lanjut tentang setiap kasus.

Skippy le Grand Gourou
sumber
3

Pada openSUSE 13.2, perilaku kliring dapat dikontrol dengan variabel berikut di sysconfig.

  • MAX_DAYS_IN_TMP
  • MAX_DAYS_IN_LONG_TMP
  • TMP_DIRS_TO_CLEAR
  • LONG_TMP_DIRS_TO_CLEAR
  • OWNER_TO_KEEP_IN_TMP
  • CLEAR_TMP_DIRS_AT_BOOTUP

Anda dapat memodifikasi variabel-variabel ini dengan (penggunaan setiap variabel juga dapat ditemukan di sana)

  1. Edit /etc/sysconfig/cronfile secara manual di baris perintah.
  2. Buka Yast dan navigasikan ke System -> / etc / sysconfig Editor -> System -> Cron
leodream
sumber
2

Bahkan yang lebih baik akan menjadi cara umum yang baik untuk mengendalikannya! (Sesuatu seperti 'setiap hari jam 3 pagi, hapus file / tmp apa pun yang lebih dari 60 hari, tetapi jangan hapus direktori saat reboot')

File sortir-tempy yang tidak ingin Anda hapus saat boot masuk / var / tmp

Itu untuk :-)

nemo
sumber