2023年11月27日发(作者:)
编写使⽤systemctl启动服务脚本
CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和⽤户(user)之分,像需要开机不登陆就能运
⾏的程序,还是存在系统服务⾥吧,即:/usr/lib/systemd/system⽬录下
[Unit]
Description=MonitorJSCloud
After=e
[Service]
Type=simple
ExecStart=/usr/bin/python/root/test/ping_
Restart=always
RestartSec=10
PrivateTmp=true
[Install]
WantedBy=
对于那些⽀持 Systemd 的软件,安装的时候,会⾃动在/usr/lib/systemd/system⽬录添加⼀个配置⽂件。
systemctl enable httpd
上⾯的命令相当于在 /etc/systemd/system ⽬录添加⼀个符号链接,指向 /usr/lib/systemd/system ⾥⾯的 e ⽂件。
这是因为开机时, Systemd 只执⾏ /etc/systemd/system ⽬录⾥⾯的配置⽂件。这也意味着,如果把修改后的配置⽂件放在该
⽬录,就可以达到覆盖原始配置的效果。
$ sudo systemctl status httpd
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since ⾦ 2014-12-05 12:18:22 JST; 7min ago
Main PID: 4349 (httpd)
Status: "Total requests: 1; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─4349 /usr/sbin/httpd -DFOREGROUND
├─4350 /usr/sbin/httpd -DFOREGROUND
├─4351 /usr/sbin/httpd -DFOREGROUND
├─4352 /usr/sbin/httpd -DFOREGROUND
├─4353 /usr/sbin/httpd -DFOREGROUND
└─4354 /usr/sbin/httpd -DFOREGROUND
12⽉ 05 12:18:22 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
12⽉ 05 12:18:22 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
12⽉ 05 12:22:40 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Loaded⾏:配置⽂件的位置,是否设为开机启动
Active⾏:表⽰正在运⾏
Main PID⾏:主进程ID
Main PID⾏:主进程ID
Status⾏:由应⽤本⾝(这⾥是 httpd )提供的软件当前
CGroup块:应⽤的所有⼦进程
状态
⽇志块:应⽤的⽇志
$ systemctl cat sshd.service
查看配置⽂件
配置⽂件详解
Unit
After
Before
Wants
Requires***停⽌之后本服务也必须停⽌
EnvironmentFileEnvironmentFile=/etc/sysconfig/sshd
ExecStart
ExecReload
ExecStop
ExecStartPre
ExecStartPost
ExecStopPost
所有的启动设置之前,都可以加上⼀个连词号(-),表⽰"抑制错误",即发⽣错误的时候,不影响其他命令的执⾏。⽐
如,EnvironmentFile=-/etc/sysconfig/sshd(注意等号后⾯的那个连词号),就表⽰即使/etc/sysconfig/sshd⽂件不存在,也不
会抛出错误。
Type
simple(默认值):ExecStart字段启动的进程为主进程
forking:ExecStart字段将以fork()⽅式启动,此时⽗进程将会退出,⼦进程
将成为主进程
类似于simple,但只执⾏⼀次,Systemd 会等它执⾏完,才启动其oneshot:
他服务
类似于simple,但会等待 D-Bus 信号后启动dbus:
类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动notify:
其他服务
类似于simple,但是要等到其他任务都执⾏完,才会启动该服务。idle:
⼀种使⽤场合是为让该服务的输出,不与其他服务的输出相混合
KillMode
control-group(默认值):当前控制组⾥⾯的所有⼦进程,都会被杀掉
process:只杀主进程
mixed:主进程将收到 SIGTERM 信号,⼦进程收到 SIGKILL
信号
没有进程会被杀掉,只是执⾏服务的 stop 命令。none:
Restart
no(默认值):退出后不会重启
on-success:只有正常退出时(退出状态码为0),才会重启
on-failure:⾮正常退出时(退出状态码⾮0),包括被信号终⽌和超
时,才会重启
on-abnormal:只有被信号终⽌和超时,才会重启
on-abnormal:只有被信号终⽌和超时,才会重启
on-abort:只有在收到没有捕捉到的信号终⽌时,才会重启
on-watchdog:超时退出,才会重启
always:不管是什么退出原因,总是重启
修改配置⽂件以后,需要重新加载配置⽂件,然后重新启动相关服务。
# 重新加载配置⽂件
$ systemctl daemon-reload


发布评论