Pracujem (a hľadám), aby som to získalskript úlohy cron / python už nejaký čas beží. Avšak to očividne nefunguje. Nie som si istý, ako inak vyriešiť problém, a vyskúšal som niekoľko vecí, ktoré som tu našiel v ďalších otázkach týkajúcich sa SO.
cesta k skriptu: /home/phil/cron_jobs/octoStatus.py
Bol by som rád, keby cron bežal každú minútu.
Súbor Crontab.txt:
*/1 * * * * python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt
Octolog.txt mal zachytiť informácie STDOUT a STDERR. Výstup "sudo tail / var / log / cron"
Jul 3 10:20:00 bsd /usr/sbin/cron[83876]: (root) CMD (/usr/libexec/atrun)
Jul 3 10:20:00 bsd /usr/sbin/cron[83877]: (phil) CMD (python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt)
Jul 3 10:21:00 bsd /usr/sbin/cron[83903]: (phil) CMD (python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt)
Jul 3 10:22:00 bsd /usr/sbin/cron[83934]: (phil) CMD (python /home/phil/cron_jobs/octoStatus/octoStatus.py &> octolog.txt)
Zdá sa, že beží každú minútu podľa želania.Očakávané výsledky skriptu sa však nevyskytujú. octolog.txt sa tiež nevytvára. Keď manuálne spustím presný príkaz zobrazený v cron-log, všetko funguje správne podľa očakávaní a vytvorí sa súbor octolog.txt.
Používam to na FreeBSD a išiel som sa pozrieť na / var / log / syslog, ale neexistuje. Som vo FreeBSD nový, ale nie som si istý, či to v tejto situácii znamená veľa, ale Myslel som si, že to spomeniem.
Nie som si istý, aké ďalšie informácie by boli užitočné, pretože som uviazol. Vďaka. Phil
odpovede:
5 pre odpoveď č. 1Po prvé, na spustenie skriptu každú minútu nepotrebujete */1
. Cron je predvolene spustený každú minútu, takže:
* * * * * /path/to/command
Ďalej môže byť vaše presmerovanie narušené. The bash
man stránka má &>
formát uvedený v časti „Presmerovanie štandardného výstupu a štandardnej chyby“, takže predpokladám, že sa to snažíte urobiť. Ale FreeBSD /bin/sh
nie je bash, takže:
* * * * * /path/to/command >/path/to/output.txt 2>&1
Toto pošle štandardný výstup do vášho súboru a duplikuje štandardný výstup na štandardný výstup.
To nás privádza k:
* * * * * python /home/phil/cron_jobs/octoStatus/octoStatus.py > octolog.txt 2>&1
Všimnite si tiež podľa man 5 crontab
, môžete nastaviť a MAILTO
premenná vo vašom súbore crontab, ktorá nasmeruje výstup / chyby z vašich úloh na e-mailovú adresu.
Pozor, PATH používanú používateľom cron
nemusí obsahovať /usr/local/bin
, kde je nainštalovaný python. Ak tvoj octoStatus.py
skript obsahuje znak „shebang“, potom ho možno budete môcť vykonať priamo. V opačnom prípade budete musieť poskytnúť úplnú cestu k svojmu python
binárne, alebo pridajte do svojho crontabu premennú PATH (podobnú MAILTO, ktorú som spomínal vyššie). Vo všetkých prípadoch môžete prečítať pokyny na formátovanie man 5 crontab
.
2 pre odpoveď č. 2
Odporučil by som vám priamo zapísať do súboru z vášho python skriptu s append
mode.
Tiež len hádam, ale myslím si, že by ste mali dať absolútnu cestu k výstupnému súboru, ako je uvedené v komentári python home/phil/cron_jobs/octoStatus/octoStatus.py &> /home/phil/cron_jobs/octoStatus/octolog.txt