转载: https://blog.csdn.net/QQ _ 29663071/article/details/80814081
systemctl是RHEL 7 的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。
1.服务权限
系统有系统和用户之分的系统(/user/lib/systemd/system/)、用户)/etc/lib/systemd/user/)。
典型的系统管理员手动创建的设备文件最好存储在/etc/systemd/system/目录下。
2.创建服务文件
?
[单元]
escription=nginx-highperformanceweb服务器
文档=http://nginx.org/en/docs /
after=network.target remote-fs.target NSS-lookup.target
服务
类型=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/s雅致水壶/nginx-t-c/etc/nginx/nginx.conf
ExecStart=/usr/s雅致水壶/nginx -c /etc/nginx/nginx.conf
ExecReload=/雅致的水壶/kill -s HUP $MAINPID
ExecStop=/雅致的水壶/kill -s QUIT $MAINPID
私密tmp=true
[Install]
WantedBy=multi-user.target
[Unit]
Description :服务简要说明
文档:服务文档
Before,After:定义启动顺序。 Before=xxx.service,即本服务将在xxx.service启动之前启动。 After=xxx.service,即本服务在xxx.service之后启动。
Requires :此设备将启动,所需的设备也将启动; 所需的单元已停止,该单元也已停止。
Wants :推荐。 该单元启动,所需单元也启动; 所需单元将被停止,不影响本单元。
[Service]
Type=simple (默认) systemd认为服务将立即启动。 服务进程不会冻结。 除非服务是套接字启动类型,否则如果服务启动其他服务,请不要使用此类型启动。
Type=forking:systemd认为在服务进程已冻结且父进程终止后,服务启动成功。 对于普通守护程序(守护程序),只要该启动方法不判断为不能满足需要,就以该类型启动即可。 对于此启动类型,还必须指定PIDFile=,以便systemd可以跟踪服务的主进程。
Type=oneshot :此选项适用于只执行一项任务并立即关闭的服务。 可能需要同时设置RemainAfterExit=yes,以便在服务进程结束后,系统仍认为服务处于活动状态。
type=notify :与type=simple相同,但约定服务在准备好后向systemd发送信号。 该通知的实现由libsystemd-daemon.so提供。
Type=DBus :以这种方式启动时,当指定的BusName显示在dbus系统总线上时,systemd认为服务已准备好。
Type=idle: systemd等待所有任务(Jobs )的处理完成,然后开始运行idle类型的设备。 其他行为与Type=simple类似。
PIDFile:pid文件路径
ExecStart :指定用于启动单元格的命令或脚本,ExecStartPre和ExecStartPost部分指定用户在ExecStart之前或之后自定义运行的脚本。 在Type=oneshot中,可以指定要按顺序执行的多个用户定义命令。
ExecReload :指定设备停止时要执行的命令或脚本。
ExecStop :指定在设备停止时执行的命令或脚本。
PrivateTmp:True表示为服务分配独立的临时空间
Restart :如果允许此选项,则该进程将在服务重新启动时终止,并使用systemctl命令执行清除并重新启动操作。
RemainAfterExit :如果将此选项设置为true,则认为服务处于活动状态。 因此,即使的进程结束,默认值也是false。 仅当Type=oneshot时才需要设置此选项。
rong>[Install]Alias:为单元提供一个空间分离的附加名字。
RequiredBy:单元被允许运行需要的一系列依赖单元,RequiredBy列表从Require获得依赖信息。
WantBy:单元被允许运行需要的弱依赖性单元,Wantby从Want列表获得依赖信息。
Also:指出和单元一起安装或者被协助的单元。
DefaultInstance:实例单元的限制,这个选项指定如果单元被允许运行默认的实例。
3.重载服务
systemctl enable nginx.service(设置开机自启)
就会在/etc/systemd/system/multi-user.target.wants/目录下新建一个/usr/lib/systemd/system/nginx.service 文件的链接。
4.操作服务
?
#启动服务
$ sudo systemctl start nginx.service
#查看日志
$ sudo journalctl -f -u nginx.service
— Logs begin at 四 2015-06-25 17:32:20 CST. —
6月 25 10:28:24 Leco.lan systemd[1]: Starting nginx – high performance web server…
6月 25 10:28:24 Leco.lan nginx[7976]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
6月 25 10:28:24 Leco.lan nginx[7976]: nginx: configuration file /etc/nginx/nginx.conf test is successful
6月 25 10:28:24 Leco.lan systemd[1]: Started nginx – high performance web server.
#重启
$ sudo systemctl restart nginx.service
#重载
$ sudo systemctl reload nginx.service
#停止
$ sudo systemctl stop nginx.service
PS:使用命令 systemctl is-enabled postfix.service 得到的值可以是enable、disable或static,这里的 static 它是指对应的 Unit 文件中没有定义[Install]区域,因此无法配置为开机启动服务。
刚刚配置的服务需要让systemctl能识别,就必须刷新配置
?
$ systemctl daemon-reload
如果没有权限可以使用sudo
?
$ sudo systemctl daemon-reload
启动一个服务:systemctl start nginx.service
关闭一个服务:systemctl stop postfix.service
重启一个服务:systemctl restart nginx.service
显示一个服务的状态:systemctl status postfix.service
在开机时启用一个服务:systemctl enable nginx.service
在开机时禁用一个服务:systemctl disable nginx.service
查看服务是否开机启动:systemctl is-enabled nginx.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
例: