我有一个 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 关注
- 81 浏览
添加回答
举报
0/150
提交
取消