Mijn systeembeheerder heeft een aantal cron jobs ingesteld op mijn machine. Ik zou graag precies willen weten wat er op welk tijdstip gepland staat. Hoe kan ik die lijst krijgen?
Afhankelijk van hoe uw linux systeem is ingesteld, kunt u kijken in:
/var/spool/cron/*
(gebruikers crontabs)/etc/crontab
(systeem-wijde crontab)Ook hebben veel distro's:
/etc/cron.d/*
Deze configuraties hebben dezelfde syntaxis als /etc/crontab
/etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
, /etc/cron.monthly
Dit zijn eenvoudigweg directories die uitvoerbare bestanden bevatten die om het uur, dagelijks, wekelijks of maandelijks worden uitgevoerd, volgens hun directory naam.
Daarbovenop kun je nog at jobs hebben (kijk in /var/spool/at/*
), anacron (/etc/anacrontab
en /var/spool/anacron/*
) en waarschijnlijk nog andere die ik'vergeet.
Met de meeste Crons (b.v. Vixie-Cron - Debian/Ubuntu standaard, Cronie - Fedora standaard, Solaris Cron ...) krijg je de lijst van geplande cron jobs voor de huidige gebruiker via:
$ crontab -l
of voor een andere gebruiker via
# crontab -l -u juser
Om de crontabs voor alle gebruikers te krijgen kun je alle gebruikers lussen en dit commando oproepen.
Als alternatief kun je de spool bestanden opzoeken. Meestal worden ze opgeslagen onder /var/spool/cron
, bv. voor vcron volgende directory
/var/spool/cron/crontabs
bevat alle geconfigureerde crontabs van alle gebruikers - behalve de root gebruiker die ook jobs kan configureren via de systeembrede crontab, die zich bevindt op
/etc/crontab
Met cronie (standaard op Fedora/CentOS), is er ook een .d
stijl config directory voor systeem cron jobs:
/etc/cron.d
(Zoals altijd, de .d
directory vereenvoudigt het onderhouden van configuratie regels die onderdeel zijn van verschillende pakketten).
Voor het gemak voorzien de meeste distributies ook in een directory waar gelinkte/opgeslagen scripts periodiek worden uitgevoerd, bv:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
De tijdige uitvoering van die scripts wordt meestal beheerd via run-parts
regels in de systeem crontab of via anacron.
Met Systemd (b.v. op Fedora, CentOS 7, ...) kan de periodieke uitvoering van opdrachten aanvullend worden ingesteld via timer units. De ingeschakelde systeemtimers kunnen worden weergegeven via:
$ systemctl list-timers
Merk op dat gebruikers naast root mogelijk gebruikersinstanties voor systemd hebben draaien waar timers ook zijn geconfigureerd. Bijvoorbeeld, op Fedora wordt standaard een gebruiker-systemd instantie gestart voor iedere gebruiker die op dat moment is ingelogd. Ze kunnen herkend worden via:
$ ps aux | grep 'systemd[ ]--user'
Die gebruikerstimers kunnen opgesomd worden via:
$ systemctl --user list-timers
Een alternatief voor het uitvoeren van het list-timers
commando is het zoeken naar timer unit bestanden (patroon: *.timer
) en symbolische links daarnaar in de gebruikelijke systeem en gebruiker systemd configuratie directories:
$ find /usr/lib/systemd/ /etc/systemd -name '*.timer'
$ find /home '(' -path '/home/*/.local/share/systemd/user/*' \
-o -path '/home/*/.config/systemd/*' ')' \
-name '*.timer' 2> /dev/null
(Net als bij normale service units wordt een timer unit ingeschakeld door een symbolische link te maken in de juiste systemd config directory).
Zie ook:
Om een lijst te maken van alle crons voor de opgegeven gebruiker.
crontab -u gebruikersnaam -l;
Om alle crons voor alle gebruikers op te sommen
Start het als een super gebruiker
#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do
crontab -l -u $user;
done