通过cron从bash脚本内部运行python文件
我创建了一个bash脚本,它首先激活一个python虚拟环境,然后运行一个python文件。当我手动执行bash脚本时,python文件按预期运行。Bash脚本代码: sample.sh通过cron从bash脚本内部运行python文件,python,bash,python-3.x,shell,cron,Python,Bash,Python 3.x,Shell,Cron,我创建了一个bash脚本,它首先激活一个python虚拟环境,然后运行一个python文件。当我手动执行bash脚本时,python文件按预期运行。Bash脚本代码: sample.sh #!/usr/bin/env bash source ./project/bin/activate python3 /home/abc/project/server/sample.py 但是,当我尝试使用cron运行这个bash脚本时,python文件不会执行。 克朗: 当这个cron在指定的时间触发时,b
#!/usr/bin/env bash
source ./project/bin/activate
python3 /home/abc/project/server/sample.py
但是,当我尝试使用cron运行这个bash脚本时,python文件不会执行。
克朗:
当这个cron在指定的时间触发时,bash脚本中的python文件不会运行,日志文件为空
我的代码似乎有什么问题?很可能是您在源代码命令中使用的相对路径。Cron将从不同的目录运行脚本,因此
source ./project/bin/activate
可能不是有效的路径。
试一试
。。。根据您的
python3…
行中的完整路径猜测路径。Cron写入日志,您可以找到它尝试执行任务时发生的错误-对的回答提到了查找这些日志的常用位置
最常见的问题是:
- cron正在使用
而不是sh
忽略脚本中的shebang-您可以尝试配置cron作业,如bash
6 12***/bin/bash/home/abc/sample.sh>/home/abc/bulkcat.log 2>&1
- 未设置可执行权限的脚本-可通过运行
或chmod 700/home/abc/sample.sh
chmod 755/home/abc/sample.sh来修复此问题-仅当您希望允许其他用户读取和执行您的脚本时,才应使用后者
- 正如在另一个答案中已经提到的,始终在cron job中使用绝对路径,因为cron可能会从您期望的其他目录执行您的脚本-在这种情况下,我也使用包装器bash脚本-我在cron job中为脚本提供绝对路径,bash脚本做的第一件事是
cd/desired/work/directory
SyntaxError:unknown decode error
看起来这个错误来自您的脚本我尝试给出激活虚拟环境的绝对路径,但这似乎没有解决我的问题。
source ./project/bin/activate
source /home/abc/project/bin/activate