Dove è memorizzato l'utente crontab?

216

Da quando l'aggiornamento del crontab del mio utente è stato cancellato. Questa non è la prima volta che questo è successo quest'anno ed è un dolore ripristinarlo ogni volta.

Mi piacerebbe essere in grado di eseguire il backup di crontab per il mio utente, ma per questo ho bisogno di sapere dove è memorizzato.

    
posta Oli 13.11.2012 - 15:26

4 risposte

277

In realtà, non è consigliabile gestire questi file a mano. Per crontab man page:

  

Ogni utente può avere il proprio crontab, e anche se   questi sono file in /var/spool/cron/crontabs , non sono in
  destinato a essere modificato direttamente.

I file sotto /var/spool sono considerati temporanei / funzionanti, motivo per cui probabilmente vengono eliminati durante un aggiornamento, anche se uno sguardo più ravvicinato agli script di aggiornamento del pacchetto cron può far luce su questo.

Comunque, è sempre una buona pratica eseguire il backup delle voci di cron o tenerle in un file nella tua home directory.

Suppongo che tu stia utilizzando crontab -e per creare file crontab al volo. Se è così, puoi ottenere una "copia" del tuo file crontab facendo crontab -l . Condividilo in un file per ottenere un "backup":

crontab -l > my-crontab

Quindi puoi modificare quel file my-crontab per aggiungere o modificare le voci, quindi "installarlo" assegnandolo a crontab:

crontab my-crontab

Fa la stessa sintassi verificando come crontab -e .

    
risposta data roadmr 13.11.2012 - 16:21
45

È memorizzato all'interno della cartella /var/spool/cron/crontabs sotto username.

    
risposta data Manula Waidyanatha 13.11.2012 - 15:29
27

Alla fine ho scoperto perché il mio crontabs e l'installazione di Postfix continuavano a rompersi dopo l'avvio. È una ragione davvero stupida, ma ...

Ho montato /var/spool come tmpfs RAM-drive.

Sembra idiota e lo è, ma avevo seguito uno dei vecchi tweet di SSD per allungare la vita del mio SSD. In tal modo, ho montato ciecamente /tmp , /var/tmp e /var/spool come tmpfs senza pensare alle ripercussioni. Ho pensato che /var/spool era come /proc/ o /run/ e che era utile solo per la durata della sessione. Mi sbagliavo chiaramente.

    
risposta data Oli 30.05.2013 - 15:20
10

Per elencare tutti i lavori cron da tutti gli utenti nel tuo sistema:

for user in $(cut -f1 -d: /etc/passwd)
do
  echo $user
  crontab -u $user -l
done

Un'alternativa al tuo problema sarebbe quella di metterli nella cartella cron.d e specificare l'utente appropriato per cron come nell'esempio:

00 01 * * * user /home/user/user-script.sh
    
risposta data pl1nk 28.03.2013 - 13:39

Leggi altre domande sui tag