Použijte zástupný znak. A jednoduše to vložte do crontab
použijte crontab -e
možnost upravit své úlohy crontab.
Viz příklad:
* * * * * find /path/to/*.log -mtime +7 -exec rm -f {} \;
Pro zvýšení odpovědi si přečtěte tento pěkný článek o tom, jak pracovat s crontab
! v Linuxu .
Upravíte své osobní crontab spuštěním crontab -e
.To se uloží do /var/spool/cron/<username>
. Soubor bude uživatelské jméno vlastníka, takže root by byl /var/spool/cron/root. Vše v souboru je spuštěno jako vlastník souboru.
Syntaxe pro crontab je následující:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
Když upravujete své vlastní osobní crontab prostřednictvím crontab -e
, vynecháte pole uživatelského jména, protože uživatel je odvozen podle názvu souboru (viz první odstavec).
Jak již bylo řečeno, váš záznam by měl vypadat takto:
0 5 * * * find /path/to/*.log -mtime +7 -delete
Toto se spustí každý den v 5:00 systémového času. Nemyslím si, že je potřeba, aby běžel častěji než denně, vzhledem k tomu, že odstraňujete soubory, které jsou 7 dní starý.
Nepoužívejte nadměrně -exec
možnost, když je -delete
volba dělá přesně to, co chcete dělat. Exec rozvětvuje shell pro každý soubor a nadměrně plýtvá systémovými prostředky.
Až budete hotovi, můžete použít crontab -l
vypsat svůj osobní crontab.
ps. Výchozí editor na většině systémů Linux je vi, pokud vi neznáte, použijte něco jednoduchého, jako je nano, nastavením proměnné prostředí export EDITOR=nano
find /path/to/dir-containing-files -name '*.log' -mtime +7 -exec rm -f {} \;
Chcete-li vytvořit úlohu cron, vložte do adresáře /etc/cron.daily soubor obsahující následující:
#!/bin/sh
find /path/to/dir-containing-files -name '*.log' -mtime +7 -exec rm -f {} \;