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?
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?
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.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.
/etc/crontab : cron.daily, cron.weeklye cron.monthly correre con anacron (se disponibile), ma ogni ora run-parts --report /etc/cron.hourly.
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?
giving your script an extension will make it invalid and result in the job not being run
--reportper eseguire effettivamente gli script.
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.
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 :)