Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。
Systemd 默认从目录/etc/systemd/system/
读取配置文件。里面存放的大部分文件都是符号链接,它们指向目录/usr/lib/systemd/system/
,真正的配置文件(以 .service 结尾的文件)存放在那个目录。
我们可以将自定义程序注册为systemd service进程管理交给系统管理,可以方便启动停止,也可以实现服务异常退出重启,开机自启动,减少自定义程序服务管理的时间消耗。
Systemd启停命令(以 web1 为例)
1.开机启动
systemctl enable web1
2.启动服务
systemctl start web1
3.服务状态查看
systemctl status web1
4.停止服务
终止正在运行的服务
systemctl stop web1
如 stop 无响应则使用 kill 强制终止
systemctl kill web1
5.重启服务
systemctl restart web1
Golang集成到Systemd
Service文件主要包含三个部分,分别是:[Unit]、[Service]、[Install] ,下面使用golang web1 为例,新建文件web1.service
[Unit]
Description=web1
[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/home/web/web1
WorkingDirectory=/home/web/
[Install]
WantedBy=multi-user.target
ExecStart是go可执行文件的路径
WorkingDirectory要注意,如果程序中使用了相对路径来加载一些配置文件,如果在Service中没有配置WorkingDirectory,默认是根路径,所以配置文件就从根路径来寻找,会造成一些意想不到的情况
保存文件后可创建软链接到 /lib/systemd/system
ln -s /home/web/web1.service /lib/systemd/system/web1.service