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 | [unit] |
以nginx为例,在该路径下 vi nginx.service
,并复制进去以下内容,进行相应修改.
1 | [unit] |
比如我mtex-auth服务的启动需要依赖mtex-config服务,可以这样配置vi mtex-auth.service
1 | [Unit] |
服务命令操作
以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