Mój sysadmin skonfigurował kilka zadań cron na moim komputerze. Chciałbym dokładnie wiedzieć, co jest zaplanowane na jaki czas. Jak mogę uzyskać tę listę?
Mój sysadmin skonfigurował kilka zadań cron na moim komputerze. Chciałbym dokładnie wiedzieć, co jest zaplanowane na jaki czas. Jak mogę uzyskać tę listę?
Odpowiedzi:
W zależności od konfiguracji systemu Linux, możesz zajrzeć do:
/var/spool/cron/*
(crontabs użytkownika)/etc/crontab
(crontab dla całego systemu)ponadto wiele dystrybucji ma:
/etc/cron.d/*
Te konfiguracje mają tę samą składnię co /etc/crontab
/etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
,/etc/cron.monthly
Są to po prostu katalogi zawierające pliki wykonywalne, które są wykonywane co godzinę, codziennie, co tydzień lub co miesiąc, według nazwy katalogu.
/var/spool/at/*
Ponadto możesz mieć w pracy (czek ), anakron ( /etc/anacrontab
i /var/spool/anacron/*
) i prawdopodobnie inne, o których zapominam.
/etc/cron.daily
. Jak działa ten daily
plik? O której godzinie będą wykonywane codzienne zadania? Na mojej maszynie wydają się działać około południa, ale chciałbym powiedzieć mojemu administratorowi, jak zamiast tego zmienić to na północ.
/etc/crontab
np. w moim systemie Ubuntu to: 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
oznacza 6:25.
cronie
demon zajmuje się tymi, którzy używają konfiguracji w /etc/anacrontab
.
/var/cron
środku.
W przypadku większości Cronów (np. Vixie-Cron - domyślny Debian / Ubuntu, Cronie - domyślny Fedora, Solaris Cron ...) otrzymujesz listę zaplanowanych zadań cron dla bieżącego użytkownika poprzez:
$ crontab -l
lub dla innego użytkownika za pośrednictwem
# crontab -l -u juser
Aby uzyskać crontabs dla wszystkich użytkowników, możesz zapętlić wszystkich użytkowników i wywołać to polecenie.
Alternatywnie możesz wyszukać pliki buforowania. Zazwyczaj są one zapisywane w /var/spool/cron
, np. Dla następującego katalogu vcron
/var/spool/cron/crontabs
zawiera wszystkie skonfigurowane tabele crontab wszystkich użytkowników - z wyjątkiem użytkownika root, który jest również w stanie konfigurować zadania za pośrednictwem ogólnosystemowego crontab, który znajduje się w
/etc/crontab
W przypadku cronie (domyślnie w Fedorze / CentOS) istnieje także .d
katalog konfiguracji stylów dla zadań cron systemowych:
/etc/cron.d
(Jak zawsze .d
katalog upraszcza obsługę wpisów konfiguracji, które są częścią różnych pakietów).
Dla wygody większość dystrybucji udostępnia również katalogi, w których połączone / przechowywane skrypty są okresowo wykonywane, np .:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
Terminowe wykonanie tych skryptów jest zwykle zarządzane za pomocą run-parts
wpisów w systemie crontab lub za pomocą anakronu .
W Systemd (np. W Fedorze, CentOS 7, ...) okresowe wykonywanie zadań można dodatkowo konfigurować za pomocą jednostek czasowych . Włączone timery systemowe można wyświetlić za pomocą:
$ systemctl list-timers
Pamiętaj, że użytkownicy obok root mogą mieć uruchomione systemowo instancje użytkownika, w których skonfigurowane są również liczniki czasu. Na przykład w Fedorze domyślnie uruchamiana jest instancja systemowa dla każdego zalogowanego użytkownika. Można je rozpoznać po:
$ ps aux | grep 'systemd[ ]--user'
Liczniki czasu użytkownika można wyświetlić za pomocą:
$ systemctl --user list-timers
Alternatywą dla wydania list-timers
polecenia jest wyszukiwanie plików jednostek czasowych (wzorzec *.timer
:) i dowiązań symbolicznych do nich w zwykłych katalogach konfiguracji systemu i użytkownika:
$ 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
(Podobnie jak w przypadku zwykłych jednostek serwisowych, jednostka czasowa jest włączana poprzez utworzenie dowiązania symbolicznego we właściwym katalogu konfiguracji systemowej).
Zobacz też:
crontab -l -u root
(ponieważ te cronjobs, o których chcę wiedzieć, działają poniżej root
) i mówi, że nie mam uprawnień do korzystania -u
.
root
użytkownik.
cronie
, jak dostarczane w Fedorze i RHEL6, nie odnoszą się do tych w /etc/crontab
, lecz zamiast tego używają /etc/anacrontab
. Mogę się mylić co do faktycznych implementacji, które nie odnoszą się do nich w żadnym pliku konfiguracyjnym. (Ale potem też nie głosowałem ... Po prostu mówię.)
Aby wyświetlić listę wszystkich cronów dla danego użytkownika.
crontab -u nazwa użytkownika -l;
Aby wyświetlić listę wszystkich cronów dla wszystkich użytkowników
Uruchom jako superużytkownik
#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do
crontab -l -u $user;
done
root
lubapache
czy cokolwiek, ale jedno należy użyć/etc/crontab
lub (lepiej, w większości dystrybucji)/etc/cron.d
i/etc/cron.[timeframe]
.