Rulând ca un anumit utilizator, va trebui să adaug locația scriptului în PATH?
De obicei, nu trebuie să modificați variabila de mediu PATH atunci când utilizați căi absolute, cum faceți acum cu /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
În calitate de administrator de sistem, aveți mai multe opțiuni pentru a crea joburi batch programate care rulează sub un alt ID de utilizator:
După cum se explică în acest raspuns: configurați un crontab personal pentru acel utilizator. Lucrările dintr-un crontab personal vor rula întotdeauna sub ID-ul de utilizator al proprietarului lor.
Rețineți că atunci când dvs., în calitate de administrator, configurați un crontab personal pentru un alt utilizator, acel utilizator va putea modifica și șterge specificația jobului cron, anulând munca dvs.
Alternativ, poți programați o lucrare de sistem din crontab de sistem. Sistemul crontab (de obicei /etc/crontab
și/sau fișiere drop-in în /etc/cron.d/
) este deținut de root și nu poate fi modificat de utilizatori neprivilegiati. Specificația jobului din sistemul crontab acceptă un câmp suplimentar care nu este prezent în fișierele crontab personale: câmpul #6 necesită un nume de utilizator, cum ar fi xfeautomatizare
a ID-ului utilizatorului care va fi folosit pentru a executa jobul.
Sintaxa pe care ați postat-o este corectă pentru o intrare în /etc/crontab
sau un fișier drop-in ca /etc/cron.d/wf_api_linux
0 * * * * xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
Deoarece înregistrați toate ieșirile și erorile nu reprezintă o preocupare, dar, în mod normal, cron va trimite prin e-mail rezultatul standard și erorile la root atunci când configurați un crontab de sistem și direct către utilizator atunci când utilizați un crontab personal.
Din câte știu efectiv, ambele metode duc la aceleași condiții pentru job și, în afară de preocupările legate de proprietatea specificațiilor postului și a e-mailurilor, ele sunt echivalente.