# Linux 创建 systemd 服务
为应用程序创建 systemd 守护进程
注意
仅适用于支持 systemd
服务的发行版,例如 Ubuntu 16.04 或者 CentOS 7 以上系统
创建一个 .service
后缀的文件
vi /etc/systemd/system/test.service
填充以下内容,并根据实际情况更改;所有的路径均为绝对路径
[Unit]
Description=test
After=network.target
Wants=network.target
[Service]
User=root
Group=root
PIDFile=/run/test.pid
#Environment=""
#WorkingDirectory=/root/gopath/src/test
ExecStart=/root/gopath/src/test/test
#Restart=on-failure
#RestartSec=60s
# file size
#LimitFSIZE=infinity
# cpu time
#LimitCPU=infinity
# virtual memory size
#LimitAS=infinity
# open files
#LimitNOFILE=100000000
# processes/threads
#LimitNPROC=100000000
# locked memory
#LimitMEMLOCK=infinity
# total threads (user+kernel)
#TasksMax=infinity
#TasksAccounting=false
#LimitCORE=infinity
[Install]
WantedBy=multi-user.target
[Unit]
- Description:备注,一般填写服务名称
- After:指哪个服务启动之后才启动本服务;
network.target
表示网卡服务 - Wants:本服务启动之后还要启动什么服务,如果这 Wants 后面接的服务没有启动成功,其实不会影响本服务运行
[Service]
- User:运行程序的用户
- Group:用户的用户组
- PIDFile:pid 文件位置
- Environment:环境变量
- WorkingDirectory:工作文件夹
- ExecStart:启动的程序
- Restart:定义了程序退出后,Systemd 的重启方式
- no(默认值):退出后不会重启
- on-success:只有正常退出时(退出状态码为0),才会重启
- on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
- on-abnormal:只有被信号终止和超时,才会重启
- on-abort:只有在收到没有捕捉到的信号终止时,才会重启
- on-watchdog:超时退出,才会重启
- always:不管是什么退出原因,总是重启
- RestartSec:表示 Systemd 重启服务之前,需要等待的秒数。上面的例子设为等待60秒
以下为系统文件句柄数量配置。对于需要大量写入文件的服务需要配置此项以免受系统限制
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=100000
[Install]
- WantedBy:表示该服务所在的 Target
启用服务;启用后会开机自启
systemctl enable test
操作:启动、停止、重启
systemctl start|stop|restart test
禁用服务;禁用后开机不会再启动
systemctl disable test
文章部分内容参考链接: