Systemd守护进程
场景
docsify 启动的服务进程经常挂掉,使用 Systemd 设置守护进程,崩溃或退出后自动重启服务。
Systemd和systemctl的关系
Systemd 是 Linux 的一个服务管理器,用于启动、停止、管理和监视 Linux 上的各种服务和守护进程;而 systemctl 是与 Systemd 集成的用于控制和管理服务的命令行工具。
systemctl设置守护进程
创建 Systemd 服务单元文件:在
/etc/systemd/system/
目录下创建一个以.service
结尾的文件,比如docsify.service
。1
sudo vim /etc/systemd/system/docsify.service
添加以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[Unit]
服务的描述。
Description=docsify
After=network.target
[Service]
服务运行的用户名。
User=root
启动命令
ExecStart=/usr/local/bin/docsify serve /root/docs
设置服务在崩溃或退出后自动重启。
Restart=always
[Install]
WantedBy=multi-user.target重新加载 Systemd 配置。
1
sudo systemctl daemon-reload
启动服务,服务名称是文件名。
1
sudo systemctl start docsify
验证服务是否成功启动。
1
sudo systemctl status docsify
如果应用正在运行,会看到输出中包含 “active (running)” 的标识。这将显示服务的当前状态,包括是否正在运行、最后一次的活动时间以及是否存在任何错误或警告信息。
如果希望服务在系统启动时自动启动,可以执行以下命令将其添加到启动项中。
1
sudo systemctl enable docsify
服务名称由文件名决定
在 Systemd 中,服务的名称是由服务单元文件的文件名决定的,而不是由其中的
Description
字段确定的。文件名应该以.service
结尾,并且通常会反映服务的名称。比如有一个名为
your-service.service
的服务单元文件,那么服务的名称就是your-service
。Systemd 会根据服务单元文件的文件名来识别和操作服务。服务单元文件中的
Description
字段是对服务的描述,它用于提供关于服务的简要说明,但它不会直接影响服务的名称或标识。所以,服务的名称是由服务单元文件的文件名决定的,而不是由其中的
Description
字段确定的。
查看服务日志
要查看 systemctl
服务的日志,可以使用 journalctl
命令。journalctl
是 CentOS 系统中用于查看系统日志的工具,它可以显示各个服务的日志记录。
查看指定服务的日志:
1 | journalctl -u docsify.service |
实时查看服务日志:
1 | journalctl -u docsify.service -f |
参考
https://youwu.today/skill/linux/setup-a-daemon-process-on-linux/