Bagaimana cara /tmpmembersihkan direktori? Apakah ini otomatis? Jika ya, seberapa sering dibersihkan?
Bagaimana cara /tmpmembersihkan direktori? Apakah ini otomatis? Jika ya, seberapa sering dibersihkan?
Jawaban:
Catatan! Jawaban ini sudah usang sejak setidaknya ubuntu 14.04. Lihat jawaban lain untuk situasi saat ini dan jika mereka terbukti benar maka angkatlah mereka dengan marah. Juga posting komentar sehingga saya dapat menaruh tautan di sini ke jawaban yang benar saat ini
Untuk 14,04 lihat https://askubuntu.com/a/759048/1366
Untuk 16.10 lihat https://askubuntu.com/a/857154/453746
Jawaban lama dari 2011:
Pembersihan /tmpdilakukan oleh skrip pemula /etc/init/mounted-tmp.conf. Script dijalankan oleh pemula setiap kali /tmpdipasang. Praktis itu berarti di setiap boot.
Script kira-kira melakukan hal-hal berikut: jika suatu file /tmplebih tua dari $TMPTIMEhari maka akan dihapus.
Nilai default $TMPTIMEadalah 0, yang berarti setiap file dan direktori dalam /tmpdihapus. $TMPTIMEadalah variabel lingkungan yang didefinisikan dalam /etc/default/rcS.
Direktori dihapus secara default di setiap boot, karena TMPTIME0 secara default.
Di sini Anda dapat mengubah waktu dalam file berikut:
/etc/default/rcS
TMPTIME mengatakan seberapa sering dir tmp bisa dihapus dalam beberapa hari
tmpreaperkesempatan.
tmpwatchharus menjadi alat yang tepat.
Walaupun /tmpfolder tersebut bukan tempat untuk menyimpan file jangka panjang, kadang-kadang Anda ingin menyimpan beberapa hal lebih lama daripada saat Anda reboot , yang merupakan default pada sistem Ubuntu. Saya tahu satu atau dua kali saya mengunduh sesuatu /tmpselama pengujian, reboot setelah melakukan perubahan dan kemudian kehilangan data asli lagi. Ini dapat diubah jika Anda ingin menyimpan /tmpfile Anda sedikit lebih lama.
Mengubah /tmpFrekuensi Pembersihan
Pengaturan default yang memberitahu sistem Anda untuk menghapus /tmpsaat reboot disimpan dalam /etc/default/rcSfile. Nilai yang akan kita lihat adalah TMPTIME.
Nilai saat ini TMPTIME=0mengatakan hapus file saat reboot meskipun usia file. Mengubah nilai ini ke nomor (positif) yang berbeda akan mengubah jumlah hari file dapat bertahan /tmp.
TMPTIME=7
Pengaturan ini akan memungkinkan file untuk tetap masuk /tmpsampai mereka berumur seminggu, dan kemudian menghapusnya pada reboot berikutnya. Angka negatif ( TMPTIME=-1) memberi tahu sistem untuk tidak pernah menghapus apa pun di /tmp. Ini mungkin bukan sesuatu yang Anda inginkan, tetapi tersedia.
/etc/init/mounted-temp.conf, tetapi memiliki garis start on mounted MOUNTPOINT=/tmpyang membuat saya berpikir itu tidak berlaku.
/var/tmpbukan /tmp.
Saya memeriksa ini di Ubuntu 16.10. Saya dapat menyatakan bahwa pengeditan / etc / default / rcS tidak memiliki efek sama sekali dan file dalam tmp dihapus oleh reboot tidak peduli apa yang Anda masukkan ke dalam file itu. Seperti yang disebutkan orang lain, tmpreaper tidak lagi digunakan.
Saya pikir jawaban yang tepat adalah bahwa Ubuntu 16.10 memiliki pengaturan baru. Ada folder /etc/tmpfiles.d, yang didokumentasikan di halaman manual "tmpfiles.d". Dalam folder itu, seseorang harus meletakkan file konfigurasi untuk mengontrol apakah / tmp akan dihapus. Inilah yang saya lakukan untuk menghentikan reboot dari menghapus file di / tmp kecuali mereka berumur 20 hari:
#/etc/tmpfiles.d/tmp.conf
d /tmp 1777 root root 20d
Ganti "20d" dengan "-" jika Anda tidak ingin file dihapus. Ini adalah upaya terbaik saya, halaman manual itu hampir tidak bisa ditembus dengan detail.
Keuntungan dari pengaturan baru adalah bahwa pembersih file masih dapat berjalan bahkan jika sistem tidak di-boot ulang (seperti dalam kasus selalu di server). Itu nilai tambah yang besar, saya pikir.
man tmpfiles.d
d /tmp/ - - - 20d
systemctl start systemd-tmpfiles-clean
Di Ubuntu 14.04 ini dilakukan oleh tmpreaper, yang disebut setiap hari oleh cron (dari /etc/cron.daily). Program ini dapat dikonfigurasi melalui /etc/default/rcSdan /etc/tmpreaper.conf.
Itu dibersihkan setiap kali Anda reboot.
tmpreaper.
Di systemdUbuntu (15.10 dan yang lebih baru), ini dilakukan oleh systemd, menggunakan systemd-tmpfiles-cleanlayanan dan timer:
$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-sync.target
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle
Dan
$ systemctl cat systemd-tmpfiles-clean.timer
# /lib/systemd/system/systemd-tmpfiles-clean.timer
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
Jadi systemd-tmpfiles-cleanberjalan pada saat shutdown, dan sekali sehari sebaliknya. File yang dibersihkan dapat diperpanjang menggunakan yang /etc/tmpfiles.ddisebutkan dalam jawaban lain .
Anda dapat mengubah perilaku penghitung waktu itu sendiri menggunakan systemctl edit systemd-tmpfiles-clean.timer, dan menggunakan berbagai Timeropsi konfigurasi systemd (lihat man 5 systemd.timer).
/tmpmasih belum dibersihkan. dan saya perlu dibersihkan. bahkan mulai manual sudo systemctl start systemd-tmpfiles-cleantidak melakukan trik. Ada ide mengapa?
Di salah satu server kami yang menjalankan Ubuntu, kami memiliki skrip untuk menghapus file di / tmp dan berjalan setiap malam.
Scriptnya adalah:
#!/bin/sh
# Clean file and dirs more than 3 days old in /tmp nightly
/usr/bin/find /tmp -type f -atime +2 -mtime +2 |xargs /bin/rm -f &&
/usr/bin/find /tmp -type d -mtime +2 -exec /bin/rm -rf '{}' \; &&
/usr/bin/find /tmp -type l -ctime +2 |xargs /bin/rm -f &&
/usr/bin/find -L /tmp -mtime +2 -print -exec rm -f {} \;
Cukup simpan konten di atas ke file chmod 775 file dan buat entri cron untuk menjalankannya. Karena ini adalah server web, kami tidak ingin mem-boot ulang untuk alasan yang jelas.
ln -s /usr /tmp/kaboomatau bahkan ln -s /* /tmp/...
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0/ etc / fstab.