Qual è il modo corretto per modificare un file crontab?


52

Sto cercando di automatizzare l'aggiornamento di awstats per il mio server web e capire che devo usare cron per configurarlo. Quindi ogni utente ha un file crontab?

Stavo seguendo le istruzioni qui community / AWStats

E dice di andare al file su: /etc/crontab

Quel file contiene già alcune informazioni. È questo il crontabfile principale o qualcosa del genere? Ho visto alcune istruzioni online per usare il file che si apre crontab -e.

Qual è il file corretto da usare e il modo migliore per farlo?

Se pianifico un'attività come utente non root, verrà eseguita da sola all'intervallo di tempo specificato, senza problemi?

Dovrò riavviare il server dopo aver salvato il processo cron nel crontabfile prima che inizi a funzionare?

Risposte:


50

Qual è il file corretto da usare e il modo migliore per farlo?

crontab -e è il modo migliore per farlo - questo ti permetterà di modificare facilmente i crontab per utente.

Se pianifico un'attività come utente non root, verrà eseguita da sola all'intervallo di tempo specificato, senza problemi?

Sì, e verrà eseguito con i privilegi di tale account utente.

In linea di principio, è consigliabile eseguire attività pianificate con i privilegi più bassi che è possibile ottenere, quindi se ciò che si sta facendo non richiede root, non utilizzare root. Se non è nemmeno necessario poter accedere ai file e alle cartelle del proprio account, è possibile creare un nuovo utente e utilizzare tale account utente solo per tale attività. D'altra parte se il compito non richiede radice, crontab l'uso di root ( su/ sudo suroot quindi utilizzare crontab -e).

Dovrò riavviare il server dopo aver salvato il processo cron nel file crontab prima che inizi a funzionare?

No, inizierà a funzionare immediatamente (beh, il prossimo orario programmato possibile).

Perché non modificare direttamente il file? Dove si trova?

I file crontab dell'utente si trovano in /var/spool/cron/crontabs, ma le loro autorizzazioni sono impostate in modo tale da non poter essere attraversate senza l'autorizzazione del superutente (ma una volta aperto e il processo cron elimina i privilegi può ancora accedere al file).

Il sistema non è progettato per consentire agli utenti finali di modificare direttamente questi file e in effetti la parte superiore del file presenta un DO NOT EDIT THIS FILEavviso di poppa nella parte superiore di questo effetto. Il file è invece progettato per essere modificato tramite il crontab -equale imposta un mirror temporaneo del file /tmpper la modifica - senza l'avvertimento di poppa - dopodiché controlla e installa il file crontab permanente stesso. Tutto ciò può essere fatto senza l'autorizzazione del superutente.

Se hai modificato direttamente il file crontab non so quale sarebbe il risultato. Probabilmente semplicemente non avrebbe effetto fino al prossimo riavvio e qualsiasi errore potrebbe essere difficile da debug.


5
crontab -eti permette di modificare il crontab dell'utente senza sudo. I crontab dell'utente si trovano in /var/spool/cron/crontabsuna directory alla quale non è possibile accedere senza l'autorizzazione del superutente (ma in modo tale che una volta che cron abbia abbandonato i privilegi sia ancora in grado di leggerlo). Anche se usi sudo per provare a modificare direttamente il file, nella parte superiore viene visualizzato un grande avviso "NON MODIFICARE QUESTO FILE": il file è progettato per essere modificato utilizzando il crontabcomando che utilizza una copia temporanea /tmpe quindi installa dopo aver salvato.
thomasrutter,

25

Ogni utente ha il suo crontab.

Per vederlo basta digitare

crontab -l

e, sì, l'hai visto bene, quando vuoi aggiungere un, crontaballora semplicemente fallo

crontab -e

per la prima volta ti verrà chiesto dell'editor da usare crontab. Dato che sei un principiante come dici, ti consiglio di usare nano, è l'editor più semplice da usare.

Il crontab stesso funziona in questo modo

MIN =  Minute 0-60
HOUR = Hour [24-hour clock] 0-23
MDAY = Day of Month 1-31
MON = Month 1-12 OR jan,feb,mar,apr ...
DOW =  Day of Week 0-6 OR sun,mon,tue,wed,thu,fri,sat
COMMAND = Command to be run Any valid command-line

Ad esempio, per attivare un lavoro ogni 15 minuti solo il lunedì, lo fai in questo modo

*/15 * * * mon /home/me/yourscript.sh

e SÌ è molto importante mettere il tuo cronjob nel crontab dell'utente che ha abbastanza diritti per eseguirlo.

Quindi, se il tuo script deve essere root o un utente speciale, assicurati di fare un sopralluogo a quell'utente e aggiungere il cronjob lì.

Anche molto importante!

cronjob è stupido! Sì, l'ho detto. Assicurati sempre di inserire il PERCORSO completo per quello application/command/scriptche stai utilizzando, perché crontab non funzionerà con .bashrco simili. Devi sempre assicurarti di dire a cron dove possono trovare i file e le directory.

Per rispondere al resto delle tue domande:

Ovviamente funzionerà da solo, ecco a cosa serve. Ma devi controllare che cronjob lo faccia davvero, o se manca qualcosa. Ad esempio, accedi a un file di registro per vedere se funziona davvero.

E NO, non è necessario un riavvio. Un riavvio con Linux è normalmente necessario solo se si installa un nuovo kernel. Per usarlo dovresti riavviare. Quasi tutto il resto può essere fatto senza riavviare in Linux. Naturalmente ci sono eccezioni, ma in generale questa affermazione è corretta.


per controllare il formato dell'ora, rivedere questo sito crontab.guru
Astm
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.