#cron #crontab #crontabguru #crontabgenerator met ``vi /etc/crontab`` kun je de systemwide crontab bewerken: Voorbeeld: ``` # /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh # You can also override PATH, but by default, newer versions inherit it from the environment #PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # 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 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.daily; } 47 6 * * 7 root test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.weekly; } 52 6 1 * * root test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.monthly; } # ``` In ``/etc/cron.daily`` , ``/etc/cron.weekly`` en in ``/etc/cron.monthly`` kun je dus scripts plaatsten die uitgevoerd worden, op de tijden in bovenstaande crontab file/ Bijvoorbeeld : ``/etc/crontab.daily/logrotate`` is een script om logs op te ruimen. De directory ``/etc/cron.d`` in Ubuntu wordt gebruikt voor systeem-brede cron-taken. Dat betekent dat: Systeem- en pakket-specifieke taken: Softwarepakketten of systeemonderdelen kunnen via deze map hun eigen cron-jobs installeren, zonder de hoofdcrontab (zoals /etc/crontab) te hoeven aanpassen. Bestandsformaat: De bestanden in /etc/cron.d hebben hetzelfde formaat als een reguliere crontab, maar bevatten meestal een extra kolom waarin wordt aangegeven onder welke gebruiker de taak moet worden uitgevoerd. Overzicht: Tijdens het opstarten of herladen van de cron daemon (meestal cron) worden alle cron-taken uit /etc/crontab, /etc/cron.d/, en de directories /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly en /etc/cron.monthly ingelezen en ingepland. Dit systeem maakt het makkelijker voor pakketten om hun geplande taken georganiseerd en gescheiden van elkaar te houden. De directory ``/var/spool/cron/crontabs`` bevat de individuele crontab-bestanden van gebruikers. Dit betekent: Per-gebruiker crontabs: Voor elke gebruiker die een crontab heeft, wordt er een bestand met de gebruikersnaam in deze directory opgeslagen. Hierin staan de geplande taken (cron jobs) die specifiek voor die gebruiker zijn ingesteld. Cron daemon: De cron daemon leest deze bestanden in om te bepalen welke taken wanneer moeten worden uitgevoerd. Wijzigingen via crontab-commando: Het is belangrijk dat je wijzigingen in deze bestanden altijd via het commando ``crontab -e`` doet. Dit zorgt ervoor dat de juiste syntaxis wordt gehandhaafd en dat de cron daemon op de hoogte is van de aanpassingen. Deze directory vergt root toegang. Want je wil niet dat verschillende gebruikers elkaar crontabs editten. ``crontab -l `` **List** de cronjobs voor de actieve gebruiker ``crontab -e`` **Edit** de cronfile voor de huidige gebruiker *voorbeeld*, elke minuut een touch draaien : `` * * * * * touch ~/demo/cron-$(date + \%F-\%H\%M") Wanneer je onder je gebruikersnaam een conjob hebt aangemaakt, dan verschijnt er in ``/var/spool/cron/crontabs`` een file met je username, met daarin je cronjobregel(s). met ``crontab -r`` verwijder je je eigen cronjobs De **/etc/anacrontab** file is het configuratiebestand voor **anacron**. Anacron is een taakplanner die speciaal bedoeld is voor systemen die niet continu draaien (zoals laptops of desktops die regelmatig uitstaan). In tegenstelling tot cron, dat op een vast schema werkt (en taken mist als het systeem uitstaat), zorgt anacron ervoor dat periodieke taken alsnog uitgevoerd worden zodra het systeem weer actief is. In de **/etc/anacrontab** file worden de volgende zaken gedefinieerd: - **Frequentie (in dagen):** Geeft aan hoe vaak een taak minimaal uitgevoerd moet worden. - **Vertraging (in minuten):** Bepaalt hoeveel minuten na het opstarten er gewacht wordt voordat de taak wordt gestart. - **Unieke ID:** Een identificator voor de taak. - **Het commando:** Het script of commando dat uitgevoerd moet worden. Op deze manier garandeert anacron dat belangrijke onderhoudstaken of andere periodieke taken niet worden overgeslagen, zelfs als het systeem niet 24/7 aan staat. Op Ubuntu schrijft de cron daemon standaard zijn logberichten naar de systeemlog, namelijk **/var/log/syslog**. Dit komt omdat cron gebruikmaakt van syslog om zijn uitvoeringsinformatie en eventuele foutmeldingen te loggen. Wil je specifiek de cron-logs zien, dan kun je bijvoorbeeld het volgende commando gebruiken: `grep CRON /var/log/syslog` Let op: - In sommige andere Linux-distributies (zoals #RHEL of #CentOS) worden cron-berichten in een aparte logfile (bijvoorbeeld **/var/log/cron**) opgeslagen. - Het is mogelijk om via de syslog-configuratie (bijv. in `/etc/rsyslog.d/50-default.conf`) aanpassingen te maken zodat cron-berichten naar een andere logfile worden geschreven, maar dit is in Ubuntu niet standaard zo ingesteld. [[CRON in AIX]] [[Create ScheduledTask on commandline]]