Hvordan kan jeg få en liste over alle planlagte cron-jobber på maskinen min?

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?

Løsning

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.

Kommentarer (7)

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å:

Kommentarer (8)

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
Kommentarer (3)