Domanda Dove è memorizzato l'utente crontab?


Da quando l'aggiornamento del crontab del mio utente è stato spazzato via. 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 del crontab per il mio utente, ma per questo ho bisogno di sapere dove è memorizzato.


217
2017-11-13 14:26


origine


sarebbe bello se qualcuno potesse anche dare una ragione PERCHÉ è stato spazzato via - Walter Tross
@WalterTross Sì, è piuttosto fastidioso. Direi che è un effetto collaterale dell'aggiornamento del cron pacchetto ma sono d'accordo - non è qualcosa che dovrebbe accadere. - Oli♦
Uh, non mi viene cancellato quel cron utente per l'aggiornamento del pacchetto cron! - pl1nk
@ pl1nk Non ho idea di cosa lo stia cancellando ma continua a succedere. Fantasma nella macchina, immagino. - Oli♦
Le tabelle utente sono memorizzate su un'area temporanea / var / spool / cron / crontabs / $ USER, in quanto tale potrebbe essere cancellato al prossimo avvio o aggiornamento. - fcm


risposte:


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

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

File sotto /var/spool sono considerati temporanei / funzionanti, è per questo che probabilmente vengono eliminati durante un aggiornamento, anche se uno sguardo più da vicino cron gli script di aggiornamento del pacchetto possono far luce su questo.

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

Presumo che tu stia usando 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

Questo fa la stessa sintassi controllando come crontab -e.


279
2017-11-13 15:21



crontab -l è più facile che passare /var/spool/cron/crontabs/$USER soprattutto a causa delle bizzarre autorizzazioni su quel file. - Oli♦
Il iptables-save di cron. Bello... - Parthian Shot
se usi il tuo account root per crontab, allora il suo sudo crontab -l> root-crontab per le radici crontab! - FreeSoftwareServers
Forse dovremmo mettere un crontab per ripristinarsi automaticamente> :)? - PascalVKooten
Sfogliando /var/spool/cron/crontabsè utile quando si desidera curare o esaminare crontabs da più utenti. - dhasenan


È memorizzato all'interno /var/spool/cron/crontabs cartella sotto nome utente.


46
2017-11-13 14:29





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

avevo /var/spool montato come a 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 /var/spool era come /proc/ o /run/ e che era utile solo per la durata della sessione. Ho sbagliato chiaramente.


27
2018-05-30 13:20



Dovrebbe essere sicuro da montare /tmp come tmpfs, ma non /var/tmp o /var/spool. /tmp viene utilizzato per l'archiviazione temporanea che potrebbe essere persa al riavvio. /var/tmp viene utilizzato per l'archiviazione temporanea che rimarrà dopo un riavvio. E come hai scoperto, /var/spool è per i dati da elaborare, che rimarrà anche dopo un riavvio. - thomasrutter
Vedere pathname.com/fhs/2.2/fhs-5.15.html - thomasrutter
Nota anche che il conteggio delle scritture non è più un problema con i moderni SSD. - thomasrutter


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

10
2018-03-28 12:39



se stai recuperando il crontab da un'altra unità, questo non funzionerà perché crontab -u è in esecuzione dal tuo sistema attuale. - JVE999
Mentre suppongo che sia un one-liner in quanto si adatta in meno di 80 caratteri ed è in qualche modo leggibile, in genere mi piace mettere il codice in un formato tale che una persona possa copiare o incollare o mettere in uno script (e, in una sceneggiatura, questo lo farebbe non essere una riga di codice). Suggerire modifica ... - Parthian Shot
Inoltre, stavo per trasformarlo in a while read user loop, per gestire il caso in cui il nome utente contiene spazi, ma a quanto pare non è un problema. Set di caratteri username molto limitato. - Parthian Shot