Cron Tab 作為特定使用者和 python 虛擬環境

Cron Tab 作為特定使用者和 python 虛擬環境

想要以特定使用者 (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 下執行的排程批次作業:

  1. 正如中所解釋的這個答案為該使用者設定個人 crontab。個人 crontab 中的作業將始終以其所有者的使用者 ID 執行。
    請注意,當您作為管理員為另一個使用者設定個人 crontab 時,該使用者將能夠修改和刪除該 cron 作業規範,從而撤銷您的工作。

  2. 或者你也可以從系統 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 時直接傳送給使用者。

據我所知,這兩種方法都會產生相同的工作條件,除了對工作規範和電子郵件的所有權的擔憂之外,它們是等效的。

相關內容