Ok, Così ho fatto la mia sceneggiatura, ho lasciato cadere in /etc/cron.hourly
poi chmod 777
il file ma non verrà eseguito (automaticamente). Se lo eseguo manualmente, funziona bene. Devo fare qualcos'altro?
Ok, Così ho fatto la mia sceneggiatura, ho lasciato cadere in /etc/cron.hourly
poi chmod 777
il file ma non verrà eseguito (automaticamente). Se lo eseguo manualmente, funziona bene. Devo fare qualcos'altro?
Risposte:
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
cron.daily
e 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.
/etc/crontab
: cron.daily
, cron.weekly
e cron.monthly
correre con anacron (se disponibile), ma ogni ora run-parts --report /etc/cron.hourly
.
Le voci in cron.hourly
sono gestite dal meccanismo run-parts ( man run-parts
per 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
, .weekly
ecc), verificare sempre seguito che run-parts
sarà 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?
giving your script an extension will make it invalid and result in the job not being run
--report
per eseguire effettivamente gli script.
La risposta di DaithiF dovrebbe essere la risposta giusta.
Inoltre, la mia sceneggiatura non aveva #!/bin/bash
nella prima riga. Anche se lo script potrebbe essere eseguito con la riga di comando, lo ha run-parts
rifiutato dicendo "Errore formato Exec".
La modifica del nome del file da scriptname.sh
a scriptname
e l'aggiunta alla #!/bin/bash
prima riga ha permesso al mio script di funzionare ogni ora.
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 :)