我有一个启动位于 /home/webserver/run-website 的网站的脚本
#!/bin/bash
echo "launching website..."
service nginx start
cd /home/webserver/django_personal_website
screen -S website /home/webserver/uwsgi_run
uwsgi_run 文件如下所示
#!/bin/bash
uwsgi --socket blog.sock --module django_personal_website.wsgi --chmod-socket=666
当我尝试使用 ./run-website 独立测试第一个脚本时,它运行良好。
我希望 Crontab 在重启时执行此脚本,因此我在 sudo crontab -e 中添加了以下行
@reboot bash /home/webserver/run-website
我甚至在终端中测试了命令 bash /home/webserver/run-website,它也可以运行,但由于某种原因,当我重新启动电脑时,它无法启动网站。
有人知道为什么会发生这种情况吗?
答案1
Screen 需要 tty 才能启动。Crontab 作业不需要 tty。
在屏幕内运行 uwsgi 可能没有必要。
如果可以的话,最好将其作为 systemd 服务启动,而不是在 cron 作业中运行此屏幕。乍一看,这些说明似乎可能有用https://uwsgi-docs.readthedocs.io/en/latest/Systemd.html
如果无法将其设置为 systemd 服务,还有其他几种方法可以允许后台作业将其输出保存到日志文件。