启动脚本目录
- 系统的启动脚本目录:/usr/lib/systemd/system/
- 自定义的启动脚本目录:/etc/systemd/system/
启动脚本文件说明
以nginx为例,systemd中nginx的启动脚本如下:
[Unit]
Description=The Nginx HTTP Server Manager
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
脚本文件说明:
- [Unit] 服务的说明
- Description:服务描述;
- After:服务的依赖,当依赖的服务启动之后再启动自定义的服务;
- [Service] 服务的运行参数设置
- Type:
1)Type=simple(默认值):systemd认为该服务将立即启动,服务进程不会fork,如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型;
2)Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程;
3)Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes使得systemd在服务进程退出之后仍然认为服务处于激活状态;
4)Type=notify:与 Type=simple相同,但约定服务会在就绪后向systemd发送一个信号。这一通知的实现由 libsystemd-daemon.so提供;
5)Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。 - PIDFile:pid文件路径;
- ExecStartPre:服务启动前要运行的命令;
- ExecStart:服务的具体运行命令;
- ExecReload:服务的重启命令;
- ExecStop:服务的停止命令;
注意:服务启动、重启、停止命令全部要求使用绝对路径。 - PrivateTmp:是否给服务分配独立的临时空间;
- Type:
- [Install] 服务安装的相关设置,可设置为多用户
使用命令(以nginx为例)
- 启动服务
systemctl start nginx.service #或者nginx.service可以省略service(其余命令同样适用) systemctl start nginx
- 重启服务
systemctl restart nginx
- 关闭服务
systemctl stop nginx
- 设置开机自动启动服务
systemctl enable nginx
- 停止开机自动启动服务
systemctl disable nginx
- 查看服务运行状态
systemctl status nginx
- 查看所有正在运行的服务
systemctl list-units --type=service #查看所有服务(包括不在运行的) systemctl list-units --all --type=service
网友评论