当想要在服务器上部署一个常驻程序时,不想让程序随着Terminal的退出而中止,你可以使用docker nohup supervisor 这些工具来实现。但是处于想学习Linux中Systemd的目的,我使用Systemd来实现把一个Golang程序作为一个系统服务
新建Systemd的Service
目前go build
得到的可执行文件放在/root/glass/go
下
首先新建Service,名称叫做glass-apitouch /lib/systemd/system/glass-api.service
下一步,编辑该文件
1 | [Unit] |
ExecStart是go可执行文件的路径
WorkingDirectory要注意,如果程序中使用了相对路径来加载一些配置文件,如果在Service中没有配置WorkingDirectory,默认是根路径,所以配置文件就从根路径来寻找,会造成一些意想不到的情况
运行Service
启动service glass-api start
停止service glass-api stop
查看状态service glass-api status
输出结果
1 | Redirecting to /bin/systemctl status glass-api.service |
如果想要开机启动service glass-api enable