Saya menggunakan desktop Ubuntu 14. Saya menggunakan mesin ini untuk membuat cadangan mesin lain dan sebagai server FTP untuk kamera keamanan.
Saya perlu membuat pekerjaan cron yang secara otomatis menghapus file yang lebih lama dari 30 hari. Saya melakukan pencarian dan saya pikir saya menemukan perintah yang tepat, tetapi saya ingin memastikan bahwa saya tidak melewatkan sesuatu sebelum menjalankannya.
* 4 * * * find /home/USER/DIRECTORY1/DIRECTORY2/ -mindepth 1 -type f -mtime 29 -delete
Apakah saya perlu meletakkan "sudo" sebelum perintah find?
Apakah saya perlu menempatkan "+" sebelum jumlah hari "29"?
Jawaban yang Diterima:
Pertama, masukkan find ...
perintah dalam bash
skrip, dan panggil skrip itu dari crontab
. Anda . Jika Anda memiliki direktori home terenkripsi (cat /home/.ecryptfs/$USER/.ecryptfs/Private.mnt
) Anda harus menyimpan skrip Anda di luar $HOME
pohon direktori. Menyimpan perintah di crontab
membuat konfigurasi, logging, dan debugging menjadi lebih sulit, dan crontab
parser perintah tidak secerdas bash
's.
Kedua, selalu, Selalu, SELALU uji find
dengan -print
, dan membuatnya berfungsi, sebelum mempertimbangkan -delete
.
Ketiga, find
tes “-mtime 29
” memberitahu find
“Temukan mtime
file tersebut , dan kembalikan True
jika sama dengan 29
. Anda harus menggunakan -mtime +29
, yang find
dilihat sebagai “more than 29
“, yang kamu inginkan. Dari man find
:
Numeric arguments can be specified as
+n for greater than n,
-n for less than n,
n for exactly n.
Keempat, pastikan Anda memiliki akses Tulis ke direktori di /home/USER/DIRECTORY1/DIRECTORY2/
.
Kelima, maksud Anda /home/USER/DIRECTORY1/DIRECTORY2/
atau /home/$USER/DIRECTORY1/DIRECTORY2/
? Jika $USER
adalah untuk userid pengguna, Anda memiliki masalah:cron
tidak mendefinisikan $USER
di lingkungan runtime. Itu mendefinisikan $HOME
, jadi Anda bisa menggunakan $HOME/DIRECTORY1/DIRECTORY2
.