
想要以特定使用者 (xfeautomation) 和 python 虛擬環境執行每小時的 cron 作業。作為特定用戶運行,我是否必須將腳本位置添加到 PATH 中?我目前的 cron 作業如下所示:
0 * * * * xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
這是正確的還是最佳的方法? TIA
答案1
切換到該用戶。
sudo su - xfeautomation
跑步
crontab -e
將出現一個帶有有空文件的文件編輯器。新增您的職位(不含用戶名)並儲存。
0 * * * * /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
確認:
sudo su - xfeautomation
crontab -l
或者
sudo crontab -u xfeautomation
答案2
作為特定用戶運行,我是否必須將腳本位置添加到 PATH 中?
當您使用絕對路徑時,通常不需要修改 PATH 環境變量,例如現在使用/opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
身為系統管理員,您有多種選擇來建立在不同使用者 ID 下執行的排程批次作業:
正如中所解釋的這個答案:為該使用者設定個人 crontab。個人 crontab 中的作業將始終以其所有者的使用者 ID 執行。
請注意,當您作為管理員為另一個使用者設定個人 crontab 時,該使用者將能夠修改和刪除該 cron 作業規範,從而撤銷您的工作。或者你也可以從系統 crontab 排程系統作業。系統 crontab(通常
/etc/crontab
和/或 中的插入檔案/etc/cron.d/
)由 root 擁有,且非特權使用者無法修改。系統 crontab 中的作業規格支援個人 crontab 檔案中不存在的額外欄位:欄位 #6 需要使用者名,例如xfeautomation
將用於執行作業的使用者 ID。
您發布的語法對於條目/etc/crontab
或嵌入式文件來說是正確的,例如/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
由於您記錄了所有輸出和錯誤,所以不必擔心,但通常 cron 會在您設定係統 crontab 時將標準輸出和錯誤透過電子郵件傳送給 root,並在使用個人 crontab 時直接傳送給使用者。
據我所知,這兩種方法都會產生相同的工作條件,除了對工作規範和電子郵件的所有權的擔憂之外,它們是等效的。