Saya sering menggunakan /tmp
direktori pada mesin Linux saya untuk menyimpan file sementara (mis. PDF dari situs yang ingin saya unduh terlebih dahulu dll.) Dan saya sering membuat direktori dengan nama pengguna saya. Tetapi pada setiap startup itu (termasuk semua file) akan dihapus. Sekarang saya tahu saya bisa memasukkannya /var/tmp
, tetapi saya ingin semua isinya dihapus, tetapi untuk direktori itu sendiri yang harus disimpan. Begitu:
tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...
Apakah ada cara untuk melakukan ini? Mungkin dengan izin atau dengan konfigurasi khusus?
/tmp
kemungkinan merupakantmpfs
sistem file. File-file itu tidak benar-benar dihapus; mereka hanya disimpan dalam RAM dan hilang saat reboot. Itu sebabnya Anda mendapatkan jawaban yang bermula untuk "membuat ulang saat boot atau masuk"Jawaban:
Salah satu solusinya adalah menggunakan
@reboot
pekerjaan cron:Menambahkan ini ke crontab Anda
crontab -e
akan membuatnya dijalankan setiap kali mesin dinyalakan.Atau, gunakan
dalam file startup shell Anda.
Dalam kedua kasus itu, Anda mungkin juga ingin menggunakannya
dalam file startup shell Anda jika Anda ingin menggunakan direktori itu sebagai direktori sementara default.
sumber
@reboot mkdir -p "/tmp/$USER"
akhir crontab tidak melakukan apa-apa, saat menjalankanmkdir -p "/tmp/$USER"
sebenarnya membuat direktori./tmp
@reboot
Pekerjaan cron tidak membuat direktori? Apakah Anda menerima email yang dikirim ke akun Anda dengan pesan kesalahan dari cron daemon?mail
? Atau itu tidak diperlukan?Saya menggunakan
pam-tmpdir
untuk ini: itu menciptakan direktori sementara pengguna-pribadi saat masuk. Untuk mengaturnya, tambahkanke layanan PAM yang sesuai; pada sistem berbasis Debian, menginstal
libpam-tmpdir
paket akan menawarkan untuk melakukan ini untuk Anda, atau Anda dapat menambahkan baris ke/etc/pam.d/common-session
. Lain kali Anda masuk, Anda akan menemukan direktori di bawah/tmp/user
dengan id pengguna Anda,TMP
danTMPDIR
mengaturnya dengan tepat.sumber
Jika Anda tidak menjalankan sistem dengan systemd dan menggunakan systemd-tmpfiles untuk mengelola pembersihan, maka Anda harus mengkonfigurasi direktori menggunakan sistem itu.
Berikut dokumentasi lengkapnya . Anda mungkin dapat mencapai apa yang Anda inginkan dengan membuat
/etc/tmpfiles.d/something.conf
dengan konten seperti:sumber
Seperti yang ditunjukkan dalam komentar,
/tmp
untuk file yang sementara dan tidak akan terlewatkan jika dihapus. Jika Anda berada di tengah-tengah sesuatu dan mesin dinyalakan ulang, apa pun yang Anda tulis di sana akan menghilang dan Anda harus memulai dari awal, yang berarti file-file itu mungkin tidak bersifat sementara.Saya memelihara direktori sementara di direktori home saya selama bertahun-tahun mulai ketika satu gigabyte banyak ruang dan menemukan bahwa diperlukan perawatan berkala untuk menyingkirkan file yang telah menjadi tua dan kasar. Sebagian besar waktu yang tersisa setelah proses itu kurang dari beberapa minggu, jadi sekarang saya membersihkannya dengan pekerjaan cron yang berjalan sekali sehari:
Apa pun yang saya unduh atau buat sebagai semi-sementara masuk ke sana dan sistem membersihkan apa pun yang saya tinggalkan. Apa pun yang membutuhkan rumah permanen memerlukan waktu lama sebelum pekerjaan cron menyingkirkannya.
sumber
mkdir a a/b; touch a/b/c
. Sekarang tunggu hingga 30 hari Anda telah berakhir. Ketika Anda menghapusnyac
akan diperbaruib
, yang berarti harus menunggu selama 30 hari. Begitu juga dengana
saat Anda menghapusb
. Kedua, jika Anda membuat fileb
tetapi tidak menyentuha
selama 30 hari,a
direktori akan terkenarm -rf
dan menghapus file terbaru Anda di bawahb
.find "$HOME"/tmp -mtime +30 -type f -delete; find "$HOME/tmp" -depth -mmin +60 -type d -exec rmdir {} + 2>/dev/null
bekerja untuk saya