新建systemd自启动服务

0. golang程序

package main

import (
	log "github.com/sirupsen/logrus"
	"time"
)

func main() {
	for {
		log.Infof("hello, %v", time.Now())
		time.Sleep(5*time.Second)
	}
}

编译安装

go build -o myApp
sudo install myApp /usr/local/myApp

1. 编写unit service

服务分为系统服务和用户服务,系统服务开机不登陆就能运行,常用于开机自启。

系统服务目录:/usr/lib/systemd/system/
用户服务目录:/usr/lib/systemd/user/

我们想新建一个开机自启动的服务,在/usr/lib/systemd/system目录下新建myapp.service`文件

[UNIT]
#服务描述
Description=My App Service
#指定了在systemd在执行完那些target之后再启动该服务
#network-online.target 指定网络服务配置完成后再启动
After=network-online.target
Wants=network-online.target

[Service]
#默认值,ExecStart字段启动的进程为主进程
Type=simple
#定义systemctl start|stop|reload xxxxx.service 执行的命令(需要写绝对路径)
#启动前执行的命令
#ExecStartPre=
ExecStart=/usr/local/myApp
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
#只杀主进程
KillMode=process
#异常退出时重启
Restart=on-failure
RestartSec=5s
#创建私有的内存临时空间
PrivateTmp=True

[Install]
#表示多用户命令行状态
WantedBy=multi-user.target

2. 设置systemd

# 新增xxx.service文件需要reload一下
systemctl daemon-reload
# 设置开机启动
systemctl enable myapp.service
# 启动服务
systemctl start myApp
# 停止服务
systemctl stop myApp
# 重启服务
systemctl restart myApp

3. 查看日志

journalctl -u myApp.service -n 20

参考资料

https://www.jianshu.com/p/79059b06a121

https://winddoing.github.io/post/50280.html

https://www.cnblogs.com/jhxxb/p/10654554.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值