Il mio amministratore di sistema ha impostato un sacco di lavori cron sulla mia macchina. Mi piacerebbe sapere esattamente cosa è programmato per che ora. Come posso ottenere quell'elenco?
Il mio amministratore di sistema ha impostato un sacco di lavori cron sulla mia macchina. Mi piacerebbe sapere esattamente cosa è programmato per che ora. Come posso ottenere quell'elenco?
Risposte:
A seconda di come è configurato il tuo sistema Linux, puoi consultare:
/var/spool/cron/*
(crontabs utente)/etc/crontab
(crontab a livello 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, giornalmente, settimanalmente o mensilmente, in base al nome della loro directory.
Inoltre, puoi avere lavori (controllo /var/spool/at/*
), anacron ( /etc/anacrontab
e /var/spool/anacron/*
) e probabilmente altri che sto dimenticando.
/etc/cron.daily
. Come funziona quel daily
file? A che ora verranno eseguiti i lavori quotidiani? Sulla mia macchina sembrano correre verso mezzogiorno, ma vorrebbe dire al mio amministratore di sistema come cambiarlo invece a mezzanotte.
/etc/crontab
, ad esempio sul mio sistema Ubuntu è: 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
che significa 6:25.
cronie
demone si prende cura di quelli che usano la configurazione in /etc/anacrontab
.
/var/cron
anche dentro .
Con la maggior parte dei Crons (ad es. Vixie-Cron - Debian / Ubuntu predefinito, Cronie - Fedora predefinito, Solaris Cron ...) si ottiene l'elenco dei lavori cron programmati per l'utente corrente tramite:
$ crontab -l
o per un altro utente tramite
# crontab -l -u juser
Per ottenere i crontab per tutti gli utenti è possibile eseguire il ciclo su tutti gli utenti e chiamare questo comando.
In alternativa, puoi cercare i file di spool. Di solito, vengono salvati in /var/spool/cron
, ad es. Per vcron 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 a livello di sistema, che si trova in
/etc/crontab
Con cronie (impostazione predefinita su Fedora / CentOS), esiste anche una .d
directory di configurazione dello stile per i processi cron di sistema:
/etc/cron.d
(Come sempre, la .d
directory semplifica il mantenimento delle voci di configurazione che fanno parte di pacchetti diversi.)
Per comodità, la maggior parte delle distribuzioni fornisce anche una directory in cui gli script collegati / memorizzati vengono periodicamente eseguiti, ad esempio:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
L'esecuzione tempestiva di tali script è generalmente gestita tramite run-parts
voci nel crontab di sistema o tramite anacron .
Con Systemd (ad es. Su Fedora, CentOS 7, ...) l'esecuzione periodica dei lavori può essere configurata tramite unità timer . I timer di sistema abilitati possono essere visualizzati tramite:
$ systemctl list-timers
Si noti che gli utenti accanto a root possono avere anche istanze di systemd utente in esecuzione in cui sono configurati i timer. Ad esempio, su Fedora, per impostazione predefinita, viene avviata un'istanza di systemd utente per ciascun utente attualmente connesso. Possono essere riconosciuti tramite:
$ ps aux | grep 'systemd[ ]--user'
Questi timer utente possono essere elencati tramite:
$ systemctl --user list-timers
Un'alternativa all'emissione del list-timers
comando è la ricerca di file di unità timer (modello *.timer
:) e collegamenti simbolici ad essi nelle normali directory di sistema e configurazione utente:
$ 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 viene abilitata creando un collegamento simbolico nella giusta directory di configurazione del sistema.)
Guarda anche:
crontab -l -u root
(perché quei cronjob che voglio sapere su run under root
), e dice che non ho privilegi da usare -u
.
root
utente.
cronie
, come spedito in Fedora e RHEL6, non si riferiscono a quelli in /etc/crontab
, ma invece usano /etc/anacrontab
. Potrei sbagliarmi su eventuali implementazioni reali che non si riferiscono a queste in qualsiasi file di configurazione. (Ma poi, non ho neanche votato ... sto solo dicendo.)
Per elencare tutti i croni per l'utente specificato.
crontab -u username -l;
Per elencare tutti i croni per tutti gli utenti
Eseguilo come un 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
root
oapache
qualsiasi cosa, ma si dovrebbero usare/etc/crontab
o (meglio, nella maggior parte delle distro)/etc/cron.d
e/etc/cron.[timeframe]
.