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?
V závislosti od toho, ako je váš systém Linux nastavený, môžete sa pozrieť do:
/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.
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ž:
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