Esecuzione del comando all'avvio su crontab


24

Volevo eseguire un comando sul nostro Linux dopo il suo riavvio, ho visto che può essere fatto usando crontab. Volevo eseguire questo comando

sudo ifdown eth0 && sudo ifup -v eth0

sul crontab posso solo fare:

@reboot sudo ifdown eth0 && sudo ifup -v eth0

o devo memorizzarlo in uno script?

grazie


7
Crontab sembra uno strumento sbagliato per riavviare eth0. Perché non mettere quel comando (senza sudo) in /etc/rc.local?
mikewhatever,

Per cosa hai bisogno di fare questo? Queste attività vengono in genere eseguite automaticamente durante il processo di avvio e quasi MAI devono essere eseguite separatamente dai processi di avvio automatizzati ...
Thomas Ward

1
@mikewhatever non posso votare al momento, ma voglio solo ringraziarti per averlo suggerito.
Lottie,

Risposte:


34

Alcune note qui prima funzionerebbe:

  1. Non utilizzare sudoin un lavoro cron. Invece modifica rootil crontab anziché il tuo, ad esempio, sudo crontab -equindi inserisci i comandi senza sudo.
  2. Come menzionato @mikewhatever, questo è uno strano uso per cron, e probabilmente sarebbe meglio posizionarlo /etc/rc.localprima della exit 0linea.
  3. Se ci dici esattamente quello che stai cercando, potremmo essere in grado di indirizzarti a un'opzione di registro o di configurazione (riavviare i servizi di rete all'avvio sembra un po 'hacker).
  4. Sulla maggior parte dei sistemi @rebootdovrebbe essere eseguito anche dopo un arresto o un arresto anomalo, ma esistono diverse implementazioni cron quindi YMMV. Ho visto commenti in diversi luoghi affermando entrambi.

EDIT (2016/02/17): rimosso blurb errato su percorsi assoluti; kudos @muru
EDIT (2016/10/17): aggiunta nota di arresto
EDIT (2017/09/11): nota di arresto rivista. Non ne sono davvero sicuro.


ok voglio solo chiarire, dovrei semplicemente scrivere il comando completo etc/rc.localsenza il sudo. quindi sarà solo ifdown eth0 && sudo ifup -v eth0 uscita 0
Lottie

cronusa il PATHdato in /etc/environment, che ha /sbin.
Muru,

Ho fatto ciò che mi ha suggerito @mikewhatever e ha funzionato. grazie
Lottie,

1
@TheSchwa Dovrebbe essere. Almeno dal 12.04, /etc/pam.d/croncarica pam_env, quindi /etc/environmentdovrebbe essere letto e l'impostazione predefinita è PATHutilizzata. Quella risposta è stata pubblicata poco prima dell'uscita del 12.04.
Muru,

2
@TheSchwa L'affermazione che il riavvio di cron non viene eseguito a avvio a freddo è errata. Le linee con riavvio vengono eseguite all'avvio del demone crond, punto. Questo è se si tratta di un avvio a caldo, di un avvio a freddo o se non è stato avviato e ho appena arrestato manualmente crond e riavviato. Il demone crond non sa né si preoccupa del motivo per cui viene riavviato, eseguirà semplicemente le linee di riavvio ogni volta che lo fa.
Kurt Fitzner,

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.