Používám desktop Ubuntu 14. Tento stroj používám k zálohování jiných strojů a jako FTP server pro bezpečnostní kamery.
Potřebuji vytvořit úlohu cron, která automaticky odstraní soubory starší než 30 dní. Trochu jsem hledal a myslím, že jsem našel správný příkaz, ale před jeho provedením se chci ujistit, že mi něco nechybí.
* 4 * * * find /home/USER/DIRECTORY1/DIRECTORY2/ -mindepth 1 -type f -mtime 29 -delete
Musím před příkaz find vložit „sudo“?
Musím dát „+“ před počet dní „29“?
Přijatá odpověď:
Nejprve vložte svůj find ... příkaz v bash skript a zavolejte tento skript z vašeho crontab . Pokud máte zašifrovaný domovský adresář (cat /home/.ecryptfs/$USER/.ecryptfs/Private.mnt ) budete muset skript uložit mimo svůj $HOME adresářový strom. Uchování příkazu v crontab ztěžuje konfiguraci, protokolování a ladění a crontab parser příkazů není tak chytrý jako bash ‘s.
Za druhé, vždy, Vždy, VŽDY test find pomocí -print , a zprovozněte jej, než zvážíte -delete .
Za třetí, find test “-mtime 29 ” říká find „Najděte mtime souboru a vrátí True pokud se rovná 29 . Měli byste použít -mtime +29 , které find vidí jako „more than 29 “, což je to, co chcete. Z man find :
Numeric arguments can be specified as
+n for greater than n,
-n for less than n,
n for exactly n.
Za čtvrté, ujistěte se, že máte přístup pro zápis do adresářů v /home/USER/DIRECTORY1/DIRECTORY2/ .
Za páté, máte na mysli /home/USER/DIRECTORY1/DIRECTORY2/ nebo /home/$USER/DIRECTORY1/DIRECTORY2/ ? Pokud $USER je pro uživatelské ID uživatele, máte problém:cron nedefinuje $USER v běhovém prostředí. Definuje $HOME , takže můžete použít $HOME/DIRECTORY1/DIRECTORY2 .