我正在使用Ubuntu Server 16.04。
这是.service文件:
[Unit] Description=NoDescpt [Service] ExecStart=/home/git/cmd/daphnei Restart=always KillSignal=SIGQUIT Type=notify NotifyAccess=all [Install] WantedBy=multi-user.target
和相关的脚本/home/git/cmd/daphnei :
#!/bin/bash cd /home/git/hsfzmun/server /home/git/virtualenvs/hsfzmun/bin/daphne -b 0.0.0.0 -p 8001 -v2 config.asgi:channel_layer
我感到困惑的是,服务将每90秒重启一次,但是我找不到原因。
我发现服务的状态总是activating ,这意味着systemd不知道服务已经启动。 然而,脚本确实开始,因为我可以访问我的网站。 那么它有什么问题?
您正在使用
Type=Notify
在你的单元文件中。 这意味着应用程序在通过sd-notify准备通过服务器通知 systemd时可能没有收到来自应用程序的通知并重新启动它。
除非你的应用程序正在向systemd发送通知,否则你应该更新相应的行
Type=simple
其他选项是检查daphne是否可以发送通知给systemd并打开通知。
有关Type=notify更多详细信息,请查看有关通知的systemd文档
由于它没有声明在90秒内准备就绪(默认启动超时),systemd已经决定你的服务已经失败。 失败的服务让所有的东西都被杀死。
因为Restart=always ,你的失败的服务然后重新启动,循环重复。
另外,在这种情况下Restart=on-failure可能会更好。