/ / Ako inak môžem vyriešiť túto úlohu cron? - python, cron, freebsd

Ako inak môžem odstrániť túto úlohu? - python, cron, freebsd

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ď č. 1

Po 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