Systemadministratoren min har satt opp en rekke cron-jobber på maskinen min. Jeg vil gjerne vite nøyaktig hva som er planlagt til hvilken tid. Hvordan kan jeg få den listen?
Avhengig av hvordan Linux-systemet ditt er konfigurert, kan du se i:
/var/spool/cron/*
(brukerens crontabs)/etc/crontab
(crontab for hele systemet)Mange distroer har også:
/etc/cron.d/*
.
Disse konfigurasjonene har samme syntaks som /etc/crontab
.
/etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
, /etc/cron.monthly
.
Dette er rett og slett kataloger som inneholder kjørbare filer som kjøres hver time, hver dag, hver uke eller hver måned, i henhold til katalognavnet.
I tillegg kan du ha at-jobber (sjekk /var/spool/at/*
), anacron (/etc/anacrontab
og /var/spool/anacron/*
) og sikkert flere jeg har glemt.
Med de fleste Crons (f.eks. Vixie-Cron - Debian/Ubuntu-standard, Cronie - Fedora-standard, Solaris Cron ...) får du listen over planlagte cron-jobber for den aktuelle brukeren via:
$ crontab -l
eller for en annen bruker via
# crontab -l -u juser
Hvis du vil hente crontabs for alle brukere, kan du gå gjennom alle brukerne og bruke denne kommandoen.
Alternativt kan du slå opp spool-filene. Vanligvis lagres de under /var/spool/cron
, f.eks. for vcron følgende katalog
/var/spool/cron/crontabs
inneholder alle konfigurerte crontabs for alle brukere - bortsett fra root-brukeren som også kan konfigurere jobber via den systemomfattende crontab, som ligger på
/etc/crontab
Med cronie (standard på Fedora/CentOS) finnes det også en .d
-lignende konfigurasjonskatalog for systemets cron-jobber:
/etc/cron.d
(Som alltid gjør .d
-katalogen det enklere å vedlikeholde konfigurasjonsoppføringer som er en del av ulike pakker).
For enkelhets skyld tilbyr de fleste distribusjoner også en katalog der lenkede/lagrede skript kjøres med jevne mellomrom, f.eks:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
Tidspunktet for kjøring av disse skriptene styres vanligvis via run-parts
-oppføringer i systemets crontab eller via anacron.
Med Systemd (f.eks. på Fedora, CentOS 7, ...) kan periodisk jobbutførelse i tillegg konfigureres via timer units. De aktiverte systemtimerne kan vises via:
$ systemctl list-timers
Vær oppmerksom på at brukere i tillegg til root kan ha systemd-instanser som kjører der timere også er konfigurert. På Fedora startes det for eksempel som standard en user systemd-instans for hver bruker som er logget inn. De kan gjenkjennes via:
$ ps aux | grep 'systemd[ ]--user'
Disse brukertimerne kan listes opp via:
$ systemctl --user list-timers
Et alternativ til å bruke kommandoen list-timers
er å søke etter timer-enhetsfiler (mønster: *.timer
) og symbolske lenker til dem i de vanlige system- og brukerkatalogene for systemd:
$ 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
(Som med vanlige serviceenheter aktiveres en timerenhet ved å opprette en symbolsk lenke i riktig systemd-konfigurasjonskatalog).
Se også:
For å liste opp alle crons for den oppgitte brukeren.
crontab -u brukernavn -l;
For å liste opp alle crons for alle brukere
Kjør den som superbruker
#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do
crontab -l -u $user;
done