CentOS7 systemd添加自定义系统服务的方法
systemd:
CentOS7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,即:/usr/lib/systemd/system,/usr/lib/systemd/user
每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],就以nginx为例吧,具体内容如下:
创建service:
在/usr/lib/systemd/system下创建nginx.service文件内容如下(看应用需求也可以在/usr/lib/systemd/usr下创建):
[Unit] Description=nginx-highperformancewebserver Documentation=http://nginx.org/en/docs/ After=network.targetremote-fs.targetnss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx-t-c/etc/nginx/nginx.conf ExecStart=/usr/sbin/nginx-c/etc/nginx/nginx.conf ExecReload=/bin/kill-sHUP$MAINPID ExecStop=/bin/kill-sQUIT$MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
[Unit]
Description:服务的简单描述
Documentation:服务文档
After=:依赖,仅当依赖的服务启动之后再启动自定义的服务单元
[Service]
Type:启动类型simple、forking、oneshot、notify、dbus
Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定PIDFile=,以便systemd能够跟踪服务的主进程。Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置RemainAfterExit=yes使得systemd在服务进程退出之后仍然认为服务处于激活状态。Type=notify:与Type=simple相同,但约定服务会在就绪后向systemd发送一个信号。这一通知的实现由libsystemd-daemon.so提供。Type=dbus:若以此方式启动,当指定的BusName出现在DBus系统总线上时,systemd认为服务就绪。
PIDFile:pid文件路径
ExecStartPre:启动前要做什么,上文中是测试配置文件-t
ExecStart:启动
ExecReload:重载
ExecStop:停止
PrivateTmp:True表示给服务分配独立的临时空间
[Install]
WantedBy:服务安装的用户模式,从字面上看,就是想要使用这个服务的有是谁?上文中使用的是:multi-user.target,就是指想要使用这个服务的目录是多用户。「以上全是个人理解,瞎猜的,如有不当,请大家多多指教」每一个.target实际上是链接到我们单位文件的集合,当我们执行:
$sudosystemctlenablenginx.service
就会在/etc/systemd/system/multi-user.target.wants/目录下新建一个/usr/lib/systemd/system/nginx.service文件的链接。
操作Service:
#启动服务 $sudosystemctlstartnginx.service #查看日志 $sudojournalctl-f-unginx.service --Logsbeginat四2015-06-2517:32:20CST.-- 6月2510:28:24Leco.lansystemd[1]:Startingnginx-highperformancewebserver... 6月2510:28:24Leco.lannginx[7976]:nginx:theconfigurationfile/etc/nginx/nginx.confsyntaxisok 6月2510:28:24Leco.lannginx[7976]:nginx:configurationfile/etc/nginx/nginx.conftestissuccessful 6月2510:28:24Leco.lansystemd[1]:Startednginx-highperformancewebserver. #重启 $sudosystemctlrestartnginx.service #重载 $sudosystemctlreloadnginx.service #停止 $sudosystemctlstopnginx.service
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。