Cron.hourly non funzionerà


55

Ok, Così ho fatto la mia sceneggiatura, ho lasciato cadere in /etc/cron.hourlypoi chmod 777il file ma non verrà eseguito (automaticamente). Se lo eseguo manualmente, funziona bene. Devo fare qualcos'altro?


Questa risposta non avrebbe dovuto ricevere così tanti voti senza nome del file e del contenuto.
utente sconosciuto

Risposte:


13

Perché non usare crontab (/ etc / crontab) e usare * / 1 nel campo dell'ora. L'ho usato per eseguire uno script ogni 5 minuti e funziona bene:

# m h dom mon dow user  command
* */1  * * *   user    command

6
L'uso cron.dailye gli amici funzionano un po 'meglio se la macchina non è sempre in esecuzione, perché anacron cerca di approssimare il programma giusto mentre il semplice cron non li eseguirà se la macchina non è accesa tutta la notte. Per i lavori orari questo probabilmente non ha molta importanza.
Poolie,

9
Apprezzo molto la prossima risposta, poiché affronta il problema con cron.hourly, piuttosto che trovare una soluzione alternativa.
tishma,

4
Questa non è una risposta alla domanda
josh123a123,

@poolie Come può essere visto su/etc/crontab : cron.daily, cron.weeklye cron.monthly correre con anacron (se disponibile), ma ogni ora run-parts --report /etc/cron.hourly.
Pablo A

144

Le voci in cron.hourlysono gestite dal meccanismo run-parts ( man run-partsper maggiori informazioni). Ed run-partsè esigente su quali nomi di file considera validi.

Ad esempio, assegnare un'estensione al tuo script renderà non valido e causerà la mancata esecuzione del lavoro. [a-zA-Z0-9_-]sono i caratteri validi, quindi il '.' lo rende non valido.

Quando si aggiunge un lavoro /etc/cron.hourly(o .daily, .weeklyecc), verificare sempre seguito che run-partssarà effettivamente eseguirlo con il comando:

run-parts --test /etc/cron.hourly

Se eseguendo questo comando mostra il tuo file significa che ha funzionato. Altrimenti, se non mostra nulla, il nome del tuo file non è valido.

Qual era il nome della tua sceneggiatura?


Ci sono due: cerebro_random_response.sh e Cerebro Temperature.sh non va bene?
Switchkick,

21
corretto, non va bene :) [a-zA-Z0-9_-] sono i caratteri validi, quindi il '.' lo rende non valido. Questo è ciò che intendevo sopra con "dare l'estensione al tuo script rendendolo non valido"
DaithiF,

11
oMG, questo ha appena salvato un enorme mal di testa. GRAZIE! giving your script an extension will make it invalid and result in the job not being run
Jonathan S. Fisher,

È inoltre possibile utilizzare --reportper eseguire effettivamente gli script.
Pablo A

5

Il tuo problema è probabilmente dovuto alle autorizzazioni eccessivamente aperte, che consentono a chiunque di modificare il tuo file. Prova 755invece.

Cercare le voci cron nell'output di syslog dovrebbe confermarlo.


4

La risposta di DaithiF dovrebbe essere la risposta giusta.

Inoltre, la mia sceneggiatura non aveva #!/bin/bashnella prima riga. Anche se lo script potrebbe essere eseguito con la riga di comando, lo ha run-partsrifiutato dicendo "Errore formato Exec".

La modifica del nome del file da scriptname.sha scriptnamee l'aggiunta alla #!/bin/bashprima riga ha permesso al mio script di funzionare ogni ora.


-1

Quando corri

crontab -l

questa attività è nell'elenco?

in caso contrario, aggiungilo

crontab -e

aggiungi questa linea

0 * * * * yourScript

se è in questo elenco, prova ad aggiungere il percorso del linguaggio di programmazione all'inizio dello script

Esempio:

bash: #!/bin/bash

Queste 2 cose hanno sempre risolto i miei problemi :)


Fatto tutto e la sceneggiatura è buona, funziona come un fascino. È anche nell'elenco crontab ma non viene eseguita alcuna attività oraria. Grazie comunque :(
Switchkick il
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.