在 17.04 上运行 upstart 脚本?

在 17.04 上运行 upstart 脚本?

运行 17.04 (Zesty Zapus) 并尝试启动 upstart 脚本,但我注意到它没有执行。然后我注意到 upstart 甚至没有被列为已安装包,即使 中有很多脚本/etc/init。显然它们没有运行,因为在 cron 等中引入拼写错误不会影响其启动。

我应该如何运行 upstart 脚本?安装 upstart 还是通过某些 systemd 层运行它?当其他脚本/etc/init突然运行时,安装 upstart 会破坏某些东西吗?

答案1

显然,尽管有脚本,但 upstart 并不包含在服务器版本 OOTB 中/etc/init(有点令人困惑)。

我使用以下代码将 upstart 脚本重写为 systemd 单元文件:面向新用户的 Ubuntu wiki 页面中的 systemd作为指南并以正常方式启用它。

答案2

上述步骤非常有效,我在回答中给出了一些详细的步骤:

我的环境如下

  1. Ubuntu 17.10
  2. 我在 Gunicorn 19.x 服务器上有一个 python 应用程序,我需要将该应用程序作为服务启动。

首先您需要编写一个 foo.service 文件。

[Unit] 
Description=FooServer 

[Service] 
Restart=on-failure
WorkingDirectory=/path/to/your/working/directory/where the foo lives
ExecStart=/what/process/will call foo eg: in my case I used gunicorn app:app
ExecReload=/bin/kill -HUP $MAINPID 
KillSignal=SIGINT 

[Install] 
WantedBy=multi-user.target

'=' 符号左侧每个单词的含义以及它们在 upstart 中的对应含义(与之前的版本相同)位于链接中https://wiki.ubuntu.com/SystemdForUpstartUsers

文件准备好后,假设您将其命名为“foo.service”(.service 扩展名很重要)

您需要将文件放在/lib/systemd/system

之后你需要通过调用来启用该服务

systemctl enable foo

这将提示您输入 root 密码,因为它将在所有服务参与的某些基于 root 访问的文件夹中创建符号链接。

如果您毫无困难地到达这里,那就太好了。您的服务就此创建。通过调用来启动它

sudo service foo start

systemctl status foo查看 sudo service foo stop停止服务的状态

我今天一整天都在 Gunicorn 页面上,尝试了各种选项,但都不起作用,最后这个起作用了。非常感谢 @Zanna 和 @Nicklas Karlsson

相关内容