我有一個 python 腳本,從命令行執行時可以正常工作。但是當我嘗試從 cron 運行它時,它不起作用。command = "rsync -avHP --delete --bwlimit=800 rsync://mirror.nsc.liu.se/CentOS/7.8.2003/ /home/me/reposync/centos"
proc=subprocess.run(command.split(), capture_output=True)cronjob 運行。cronfile 看起來像這樣:PATH=/home/me
40 13 * * * me cd $PATH && ./reposync.py sync 2> /tmp/test.txt但是我從以下位置收到此錯誤(是的,兩次)print(proc.stderr.decode('utf-8')):-avHP: rsync: command not found看來問題與找不到rsync有關,但我不知道該怎么辦。輸出來自/tmp/test.txt:FileNotFoundError: [Errno 2] No such file or directory: 'rsync'我試過添加shell=True到,subprocess.run但它似乎沒有什么不同?;蛘咚粫伋鲈摦惓?,但從 proc 打印 stderr 時我仍然遇到相同的錯誤。我想我可以通過包含絕對路徑來解決它,rsync但感覺這是個壞主意。但我可能錯了。如果這是正確的方法,請解釋原因。
2 回答

慕桂英3389331
TA貢獻2036條經驗 獲得超8個贊
在您的 crontab 中,您正在覆蓋您的$PATH
變量,該變量現在僅包含目錄/home/me
. rsync
現在找不到您的可執行文件,因為它不在您的主目錄中。
PATH=...
通過刪除該行并使用完整路徑調用腳本來更改您的 crontab 條目:
40 13 * * * me /home/me/reposync.py sync 2> /tmp/test.txt
- 2 回答
- 0 關注
- 108 瀏覽
添加回答
舉報
0/150
提交
取消