Ako získať zoznam všetkých naplánovaných úloh cron v mojom počítači?

Môj správca systému nastavil na mojom počítači niekoľko úloh cron. Chcel by som presne vedieť, čo je naplánované na aký čas. Ako môžem získať tento zoznam?

Riešenie

V závislosti od toho, ako je váš systém Linux nastavený, môžete sa pozrieť do:

  • (používateľ crontabs)
  • /etc/crontab (systémový crontab)

Mnohé distribúcie majú tiež:

  • /etc/cron.d/* Tieto konfigurácie majú rovnakú syntax ako /etc/crontab

  • /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly

Sú to jednoducho adresáre, ktoré obsahujú spustiteľné súbory, ktoré sa vykonávajú každú hodinu, deň, týždeň alebo mesiac podľa názvu adresára.

Okrem toho môžete mať at jobs (pozrite si /var/spool/at/*), anacron (/etc/anacrontab a /var/spool/anacron/*) a pravdepodobne aj ďalšie, na ktoré som zabudol.

Komentáre (7)

S väčšinou Cronov (napr. Vixie-Cron - predvolený Debian/Ubuntu, Cronie - predvolený Fedora, Solaris Cron ...) získate zoznam naplánovaných cronových úloh pre aktuálneho používateľa prostredníctvom:

$ crontab -l

alebo pre iného používateľa prostredníctvom

# crontab -l -u juser

Ak chcete získať crontabs pre všetkých používateľov, môžete prechádzať cez všetkých používateľov a zavolať tento príkaz.

Prípadne môžete vyhľadať súbory spoolu. Zvyčajne sú uložené v adresári /var/spool/cron, napr. pre vcron v tomto adresári

/var/spool/cron/crontabs

obsahuje všetky nakonfigurované crontaby všetkých používateľov - okrem používateľa root, ktorý môže konfigurovať úlohy aj prostredníctvom celosystémového crontabu, ktorý sa nachádza v adresári

/etc/crontab

Pomocou cronie (predvolené nastavenie v systéme Fedora/CentOS) sa nachádza aj konfiguračný adresár v štýle .d pre systémové úlohy cron:

/etc/cron.d

(Ako vždy, adresár .d zjednodušuje udržiavanie konfiguračných položiek, ktoré sú súčasťou rôznych balíkov.)

Väčšina distribúcií pre väčšie pohodlie poskytuje aj adresáre, v ktorých sa pravidelne spúšťajú prepojené/uložené skripty, napr:

/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly

Včasné spustenie týchto skriptov sa zvyčajne riadi prostredníctvom záznamov run-parts v systémovom crontab alebo prostredníctvom anacron.

Pomocou Systemd (napr. v systémoch Fedora, CentOS 7, ...) možno periodické vykonávanie úloh dodatočne konfigurovať prostredníctvom timer units. Zapnuté systémové časovače možno zobraziť prostredníctvom:

$ systemctl list-timers

Upozorňujeme, že používatelia okrem roota môžu mať spustené aj používateľské inštancie systemd, v ktorých sú časovače nakonfigurované. Napríklad v systéme Fedora je v predvolenom nastavení spustená inštancia systemd pre každého používateľa, ktorý je práve prihlásený. Možno ich rozpoznať prostredníctvom:

$ ps aux | grep 'systemd[ ]--user'

Tieto používateľské časovače možno zobraziť prostredníctvom:

$ systemctl --user list-timers

Alternatívou k príkazu list-timers je hľadanie súborov časovacej jednotky (vzor: *.timer) a symbolických odkazov na ne v obvyklých systémových a užívateľských adresároch konfigurácie 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

(Rovnako ako pri bežných servisných jednotkách sa jednotka časovača aktivuje vytvorením symbolického odkazu v správnom konfiguračnom adresári systemd.)

Pozri tiež:

Komentáre (8)

Vypísanie všetkých cronov pre daného používateľa.

crontab -u username -l;

Ak chcete vypísať všetky crony pre všetkých používateľov

Spustite ho ako super používateľ

#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do 
crontab -l -u $user;
done
Komentáre (3)