it-swarm.it

Come posso ottenere un elenco di tutti i lavori cron programmati sul mio computer?

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?

215
Frank

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 dei lavori (seleziona /var/spool/at/*), anacron (/etc/anacrontab e /var/spool/anacron/*) e probabilmente altri che sto dimenticando.

150
jsbillings

Con la maggior parte dei Crons (ad es. Vixie-Cron - impostazione predefinita Debian/Ubuntu, Cronie - impostazione predefinita Fedora, 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 (predefinito su Fedora/CentOS), esiste anche una directory di configurazione in stile .d Per i lavori di cron del sistema:

/etc/cron.d

(Come sempre, la directory .d 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 es .:

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

L'esecuzione tempestiva di tali script è generalmente gestita tramite voci run-parts Nella finestra di sistema o tramite anacron .

Con Systemd (ad es. Su Fedora, CentOS 7, ...) l'esecuzione periodica del lavoro può essere ulteriormente configurata tramite nità 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 comando list-timers È la ricerca di file di unità timer (modello: *.timer) E collegamenti simbolici ad essi nelle normali directory di configurazione del sistema e dell'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:

149
maxschlepzig

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