Il processo Cron non si avvia dopo una modifica del fuso orario


13

Ho provato a eliminare molti degli errori comuni,

  1. assicurando che i PERCORSI siano disponibili per cron

  2. c'è una fine alla fine del file crontab

  3. il fuso orario è impostato da:

    cd /etc
    cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
    

Correndo datein bash, ottengo:

Tue Sep 17 15:14:30 SGT 2013

Per verificare se cron sta usando lo stesso tempo,

* * * * * date >> date.txt

sta dando lo stesso output di data in date.txt.

Questo è lo script che sto cercando di eseguire:

event.sh:

#!/usr/bin/env bash
echo data > /root/data.txt

Utilizzando crontab -e, la riga sotto funziona,

* * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1

15 * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1

Tuttavia, quando ho provato alcuni altri argomenti, sperando che funzionasse alle 2.50pm:

50 14 * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1

o

50 14 * * * (cd /root ; ./event.sh >/tmp/debug.log 2>&1)

non funzionerà più. Sembra che ci sia un problema con il mio argomento dell'ora. Nulla è stato trovato nel /tmp/debug.logfile.

SOLUZIONE:

Si è scoperto che devo riavviare il servizio cron dopo aver apportato modifiche a TZ.


1
qualche errore nei registri? puoi per favore provare con il percorso assoluto invece di ~/event.shprovare con/home/username/event.sh
Rahul Patil,

1
fai anche piccole modifiche come* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
Rahul Patil,

1
Dici che il fuso orario è impostato correttamente, ma ne sei assolutamente sicuro ? Prova ad aggiungere una voce simile * * * * * datee conferma che datemostra il tempo previsto. Si noti che l'impostazione della variabile di ambiente TZ dall'interno del crontab potrebbe non influire sul fuso orario utilizzato dal demone cron stesso, ma influirà sui processi avviati tramite cron, quindi se si imposta TZ nel crontab suggerirei di commentarlo temporaneamente e impostare l'ora usando il fuso orario dell'orologio di sistema (probabilmente UTC se si sta avviando Linux con avvio singolo, ma potrebbe essere l'ora locale).
un CVn il

1
Ti manca il punto, @adsisco. Ti sto chiedendo di rimuovere qualsiasi direttiva TZ che potrebbe trovarsi nel crontab e quindi riprovare. Ciò farà sì che la data venga eseguita con la stessa TZ del demone cron stesso, permettendoci di vedere in quale fuso orario cron vuole che i campi dell'ora. / Etc / localtime influiscano solo sulla visualizzazione, non sull'orologio di sistema, e dubito che influisca su cron. Effettuando questo test, possiamo essere certi che il tuo problema non è in alcun modo correlato ai fusi orari (che sinceramente mi sembra).
un CVn il

1
in realtà, penso di averlo appena riparato riavviando il sistema ... potrebbe essere che devo riavviare il servizio cron dopo aver apportato modifiche a TZ? @ MichaelKjörling. GRAZIE! per indicarmi possibili problemi di fuso orario.
Adsisco,

Risposte:


7

Prima di tutto, le probabilità che tu stia colpendo un bug che fa in modo che un campo venga considerato erroneamente sembrano eccezionalmente basse. È più probabile che sia un fraintendimento di ciò che sta accadendo e di ciò che cron si aspetta.

In questo caso, nei commenti alla domanda abbiamo scoperto che si trattava molto probabilmente di un problema relativo al fuso orario. Per questo, dovresti:

  • Aggiungi una voce simile * * * * * dateal crontab
  • Rimuovere (o commentare) qualsiasi assegnazione TZ dal crontab

Questo forza datel'esecuzione con l'impostazione del fuso orario di invoker, il che significa che il demone cron . Guarda l'output; mostrerà quale fuso orario cron sta usando internamente, e quindi molto probabilmente in quale fuso orario desidera inserire i suoi campi orari. Se hai un'assegnazione TZ nel crontab, è facilmente possibile che l'assegnazione della variabile d'ambiente TZ sia passata al comandi invocati ma cron stesso utilizza qualche altro fuso orario . Commentando o rimuovendo l'assegnazione TZ, si evita questa ambiguità.

Si noti inoltre che qualsiasi modifica alle impostazioni globali del fuso orario del sistema (incluso ad esempio / etc / localtime) richiede quasi sicuramente almeno un riavvio del demone cron e possibilmente (anche se improbabile) un riavvio del sistema per rendere pienamente operativo. La modifica dell'assegnazione TZ nel crontab non dovrebbe richiedere un ricaricamento del demone cron, in quanto dovrebbe rilevare che il file è stato modificato e ricaricarlo automaticamente.

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.