一个程序的 Systemd 启动

2020-04-28 18:00:50 浏览数 (1)

在之前的文章里,我们了解了一个webhooks的使用。那么如何使用 Systemd 启动并守护webhooks呢。

一.部署应用

首先部署程序到指定的位置。

假设,我们的程序在/foo/bar/webhook,配置文件在/foo/bar/hooks.json.

编写systemd配置文件

我们在/etc/systemd/system文件夹中编写文件webhooks.service,内容如下:

代码语言:javascript复制
[Unit]
Description=webhooks https://github.com/adnanh/webhook

Wants=network-online.target

After=network.target

[Service]
Type=simple

ExecStart=/fool/bar/webhook -port 9001 -hooks /fool/bar/hooks.json -verbose -hotreload

Restart=always
User=root
Group=root


[Install]
WantedBy=multi-user.target
Alias=webhooks

配置文件解释

简单解释一下,上面的配置文件的几个参数。

Unit区块的Description字段,是服务的简单描述。

Service区块的字段含义如下。

  • ExecStart:启动命令
  • Restart:如何重启。always表示如果进程退出,总是重启
  • Type:启动方式。simple意思是Ctrl c才能退出的程序。
  • User:以什么用户启动
  • Group:以什么组启动

Install区块的WantedBy字段指定,设为开机启动时,该服务所在的 Target 是multi-user.target。Alias别名字段是指命令启动该服务时可以不用webhooks.service直接用webhooks

启动服务

代码语言:javascript复制
# 重载配置文件
$ sudo systemctl daemon-reload

# 启动服务
$ sudo systemctl start webhooks

查看状态

如果启动失败,或者想查看日志,就要执行下面的命令。

代码语言:javascript复制
# 查看状态
$ sudo systemctl status webhooks

# 查看日志
$ sudo journalctl -u webhooks

# 实时输出最新日志
$ sudo journalctl -f -u webhooks

在shell中输入以下命令:

代码语言:javascript复制
journalctl -f -u webhooks
代码语言:javascript复制
curl http://127.0.0.1:9001/hooks/test_or_your_id

如果看到日志有响应则代表服务启动成功

重启服务和停止服务

代码语言:javascript复制
# 重启服务
$ sudo systemctl restart webhooks

# 停止服务
$ sudo systemctl stop webhooks

如果想设为开机启动,就要执行systemctl enable。

代码语言:javascript复制
$ sudo systemctl enable webhooks

如果要取消开机启动,就要执行systemctl disable。

代码语言:javascript复制
$ sudo systemctl disable webhooks

0 人点赞