我的应用程序有两个 python 脚本可以运行。 我希望它们在启动时启动,但只有一个(gunicorn/mon)脚本启动。
我的定时任务:
@reboot /home/daniel/mon/start.sh
@reboot /home/daniel/bot1/start.sh
周一开始.sh
#!/bin/bash
/usr/bin/screen -dmS bb-mon /bin/bash -c 'cd /home/daniel/mon &&
/usr/local/bin/gunicorn app:app --bind 0.0.0.0:9999'
有效。
Bot1 start.sh
#!/bin/bash
/usr/bin/screen -dmS bb-bot /bin/bash -c 'cd /home/daniel/bot1 &&
/usr/bin/python3 app.py'
不工作。我在出现的屏幕 session 中测试了几个输出。屏幕 session 也将启动,但 python 脚本不会启动。
如果我在 python 调用之后添加类似 > log.txt
的内容,则文件为空。
在没有屏幕的情况下启动脚本也不起作用。
最佳答案
如果您的 cron 设置正确,当 cronjob 失败时您应该会收到一封电子邮件。
但是,由于 bash
调用 screen
调用 bash
来运行 Python 的复杂设置,错误可能未被记录。
尝试直接从 cron 运行 Python,使用脚本的绝对路径:
@reboot /usr/bin/python3 /home/daniel/bot1/app.py 2>&1 > /var/log/bot1.log
我建议您在日志文件中捕获 app.py
的所有输出,就像我在上面的示例中所做的那样。
关于python - Crontab 在重新启动时不运行 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48038293/