centos7使用systemctl

以下的 xxx为服务名称,需根据自身需求修改

1.进入目录

1
cd /usr/lib/systemd/system/

2.创建xxx.service文件

1
vi xxx.service

3.赋予xxx.service文件权限

1
chmod 754 xxx.service

xxx.service文件详解

[Unit] 部份

设置参数 参数意义说明
Description 服务名称
After 说明此服务 是在哪个服务启动之后才启动的意思!基本上仅是说明服务启动的顺序而已,并没有强制要求里头的服务一定要启动后此 unit 才能启动。
Before 与 After 的意义相反,是在什么服务启动前最好启动这个服务的意思。不过这仅是规范服务启动的顺序,并非强制要求的意思。
Requires 明确的定义此服务需要在哪个服务启动后才能够启动!就是设置相依服务!如果在此项设置的前导服务没有启动,那么此服务就不会被启动!
Conflicts 代表互斥的服务!亦即这个项目后面接的服务如果有启动,那么我们这个服务本身就不能启动!我们服务有启动,则此项目后的服务就不能启动!

[Service] 部份

设置参数 参数意义说明
Type 说明这个程序启动的方式,会影响到 ExecStart,一般来说,有下面几种类型 simple:默认值,这个程序主要由 ExecStart 接的指令串来启动,启动后常驻于内存中。forking:由 ExecStart 启动的程序通过 spawns 延伸出其他子程序来作为此程序 的主要服务。原生的父程序在启动结束后就会终止运行。 传统的 unit 服务大多属于这种项目.还有oneshot、dbus、idle等类型,请自行了解.
EnvironmentFile 可以指定启动脚本的环境配置文件.例如 sshd.service 的配置文件写入到 /etc/sysconfig/sshd 当中!你也可以使用 Environment= 后面接多个不同的 Shell 变量来给予设置
ExecStart 启动应用程序的命令
ExecStop 停止应用程序的命令
ExecReload 重载应用程序的命令
Restart 当设置 Restart=1 时,则当此服务终止后,会再次的启动此服务

[Install] 部份

设置参数 参数意义说明
WantedBy 这个设置后面接的大部分是 *.target unit,意思是这个服务本身是附挂在哪一个target unit下面的,都是附挂在 multi-user.target下面

redis及nginx为例

以redis为例,在该路径下 vi redis.service,并复制进去以下内容,进行相应修改.

1
2
3
4
5
6
7
8
9
10
11
12
[unit]
Description=redis - high performance web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/redis/redis-5.0.2/start.sh
ExecReload=
ExecStop=/usr/local/redis/redis-5.0.2/stop.sh

[Install]
WantedBy=multi-user.target

以nginx为例,在该路径下 vi nginx.service,并复制进去以下内容,进行相应修改.

1
2
3
4
5
6
7
8
9
10
11
12
[unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target

比如我mtex-auth服务的启动需要依赖mtex-config服务,可以这样配置vi mtex-auth.service

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=mtex-auth - high performance web server
After=network.target remote-fs.target nss-lookup.target mtex-config
Requires=mtex-config
[Service]
Type=forking
ExecStart=/home/jenkins-running-shell/mtex-auth/start.sh
ExecReload=
ExecStop=/home/jenkins-running-shell/mtex-auth/stop.sh

[Install]
WantedBy=multi-user.target

服务命令操作

以nginx为例,保存nginx.service文件后赋予执行权限

1
chmod 754 nginx.service

nginx开机自启

1
systemctl enable nginx.service

启动nginx

1
systemctl start nginx.service

停止nginx

1
systemctl stop nginx.service

重启nginx

1
systemctl restart nginx.service

centos7也可以使用旧版命令 system stop xxx 、system start xxx达到效果.

最后更新: 2020年11月12日 12:14

原始链接: https://midkuro.gitee.io/2020/05/20/linux-systemctl/

× 请我吃糖~
打赏二维码