为什么 crontab 不是 运行 一个 python 脚本
Why is crontab not running a python script
这就是我配置 crontab 的方式(使用 crontab -e
)
* * * * * /home/jeff/Desktop/scripts/job_pull_queue.sh >> /home/jeff/Desktop/scripts/log.txt
这是/home/jeff/Desktop/scripts/job_pull_queue.sh
的内容
#!/bin/bash
echo "Running job_pull_queue.sh @ $(date)"
cd /home/jeff/Documents/code/some_project
echo $(printenv)
/home/jeff/miniconda3/bin/python -m util.main
现在的问题是,当 运行 ./job_pull_queue.sh
在终端中时,它可以工作,但我可以从日志文件中看出 crontab
永远不会执行最后一行 /home/jeff/miniconda3/bin/python -m util.main
(我可以在日志文件中看到之前 echo
的结果,但看不到 python 脚本本身),发生了什么?我该如何解决?
更新:这是 crontab
在 运行 时 printenv
的结果
SHELL=/bin/sh PWD=/home/jeff/Documents/code/some_project LOGNAME=jeff HOME=/home/jeff LANG=en_US.UTF-8 SHLVL=0 PATH=/usr/bin:/bin OLDPWD=/home/jeff _=/usr/bin/printenv
好的...
我的 Python 脚本从我的用户配置文件中读取了几个环境变量,当然,当 crontab
是 运行 脚本时,这些变量不存在...
而且我没有 detection/logging,所以我不知道缺少环境变量。
这就是我配置 crontab 的方式(使用 crontab -e
)
* * * * * /home/jeff/Desktop/scripts/job_pull_queue.sh >> /home/jeff/Desktop/scripts/log.txt
这是/home/jeff/Desktop/scripts/job_pull_queue.sh
#!/bin/bash
echo "Running job_pull_queue.sh @ $(date)"
cd /home/jeff/Documents/code/some_project
echo $(printenv)
/home/jeff/miniconda3/bin/python -m util.main
现在的问题是,当 运行 ./job_pull_queue.sh
在终端中时,它可以工作,但我可以从日志文件中看出 crontab
永远不会执行最后一行 /home/jeff/miniconda3/bin/python -m util.main
(我可以在日志文件中看到之前 echo
的结果,但看不到 python 脚本本身),发生了什么?我该如何解决?
更新:这是 crontab
在 运行 时printenv
的结果
SHELL=/bin/sh PWD=/home/jeff/Documents/code/some_project LOGNAME=jeff HOME=/home/jeff LANG=en_US.UTF-8 SHLVL=0 PATH=/usr/bin:/bin OLDPWD=/home/jeff _=/usr/bin/printenv
好的...
我的 Python 脚本从我的用户配置文件中读取了几个环境变量,当然,当 crontab
是 运行 脚本时,这些变量不存在...
而且我没有 detection/logging,所以我不知道缺少环境变量。