Il mio sysadmin ha impostato un mucchio di cron jobs sulla mia macchina. Mi piacerebbe sapere esattamente cosa è programmato a che ora. Come posso ottenere questa lista?
A seconda di come è impostato il vostro sistema linux, potete guardare in:
/var/spool/cron/*
(crontab degli utenti)/etc/crontab
(crontab di sistema)Inoltre, molte distro hanno:
/etc/cron.d/*
.
Queste configurazioni hanno la stessa sintassi di `/etc/crontab
/etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
, /etc/cron.monthly
.
Queste sono semplicemente directory che contengono eseguibili che vengono eseguiti ogni ora, ogni giorno, ogni settimana o ogni mese, secondo il loro nome di directory.
Oltre a questo, puoi avere a jobs (controlla /var/spool/at/*
), anacron (/etc/anacrontab
e /var/spool/anacron/*
) e probabilmente altri che sto dimenticando.
Con la maggior parte dei Crons (ad esempio Vixie-Cron - Debian/Ubuntu default, Cronie - Fedora default, Solaris Cron ...) si ottiene la lista dei lavori cron programmati per l'utente corrente tramite:
$ crontab -l
o per un altro utente tramite
# crontab -l -u juser
Per ottenere i crontabs per tutti gli utenti puoi fare un loop su tutti gli utenti e chiamare questo comando.
In alternativa, puoi cercare i file di spool. Di solito sono salvati sotto /var/spool/cron
, ad esempio per vcron la seguente directory
/var/spool/cron/crontabs
contiene tutti i crontab configurati di tutti gli utenti - tranne l'utente root che è anche in grado di configurare i lavori tramite il crontab di sistema, che si trova in
/etc/crontab
Con cronie (predefinito su Fedora/CentOS), c'è anche una directory di configurazione stile .d
per i cron job di sistema:
/etc/cron.d
(Come sempre, la directory .d
semplifica il mantenimento delle voci di configurazione che fanno parte di diversi pacchetti).
Per comodità, la maggior parte delle distribuzioni fornisce anche una directory in cui gli script collegati/memorizzati vengono eseguiti periodicamente, ad es:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
L'esecuzione puntuale di questi script è solitamente gestita tramite le voci run-parts
nel crontab di sistema o tramite anacron.
Con Systemd (ad esempio su Fedora, CentOS 7, ...) l'esecuzione periodica del lavoro può essere configurata anche tramite timer units. I timer di sistema abilitati possono essere visualizzati tramite:
$ systemctl list-timers
Si noti che gli utenti oltre a root possono avere istanze systemd utente in esecuzione dove i timer sono configurati, pure. Per esempio, su Fedora, per default, un'istanza systemd utente è avviata per ogni utente che è attualmente loggato. Possono essere riconosciuti tramite:
$ ps aux | grep 'systemd[ ]--user'
Questi timer utente possono essere elencati tramite:
$ systemctl --user list-timers
Un'alternativa al comando list-timers
è quella di cercare i file delle unità timer (modello: *.timer
) e i collegamenti simbolici ad essi nelle solite directory di sistema e di configurazione utente di 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
(Come per le normali unità di servizio, un'unità timer è abilitata tramite la creazione di un collegamento simbolico nella giusta directory di configurazione di systemd).
Vedere anche:
Per elencare tutti i cron per l'utente dato.
crontab -u username -l;
Per elencare tutti i cron per tutti gli utenti
Eseguilo come super utente
#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do
crontab -l -u $user;
done