此处只介绍通过Systemctl管理的,添加自定义服务到系统服务的开机启动方式。
Centos 7 系统开机启动服务文件集中存放在如下目录,可以在该目录中新建自定义启动项配置文件:
[root@localhost system]# pwd
/usr/lib/systemd/system
正式添加启动项前,学习一下启动项服务文件如何编写:
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径
[Install]服务安装的相关设置,可设置为多用户
以 elasticsearch.service、elasticsearch-head.service、kibana.service为例:
## elasticsearch.service
[Unit]
Description=Elasticsearch for search, analysis
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
PIDFile=/run/elasticsearch.pid
User=elk
Group=elk
LimitNOFILE=131072
LimitNPROC=4096
ExecStart=/app/elasticsearch-6.5.0/bin/elasticsearch
KillSignal=SIGQUIT
TimeoutStopSec=3
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target
## elasticsearch-head.service
[Unit]
Description=Elasticsearch-head for es Web
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
PIDFile=/run/elasticsearch-head.pid
WorkingDirectory=/app/elasticsearch-head
ExecStart=/app/node-v10.16.3/bin/npm run start
KillSignal=SIGQUIT
TimeoutStopSec=3
KillMode=process
PrivateTmp=true
User=root
Group=root
Environment=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/app/jdk1.8.0_211/bin:/app/jdk1.8.0_211/jre/bin:/app/node-v10.16.3/bin:/root/bin
[Install]
WantedBy=multi-user.target
## kibana
[Unit]
Description=Kibana
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
PIDFile=/run/kibana.pid
ExecStart=/app/kibana-6.5.0-linux-x86_64/bin/kibana
KillSignal=SIGQUIT
TimeoutStopSec=3
KillMode=process
PrivateTmp=true
User=root
Group=root
[Install]
WantedBy=multi-user.target
完成文件编写后,可通过下列命令将服务添加到开机启动项:
## 设置开机自启动
systemctl enable nginx.service
## 其他命令
## 启动nginx服务
systemctl start nginx.service
## 停止开机自启动
systemctl disable nginx.service
## 查看服务当前状态
systemctl status nginx.service
## 重新启动服务
systemctl restart nginx.service
## 查看所有已启动的服务
systemctl list-units --type=service
网友评论