CentOS 7的做事systemctl脚本存放在:/usr/lib/systemd/, 有系统(system)和用户(user)之分, 像须要开机不上岸就能运行的程序, 还是存在系统做事里吧, 即:/usr/lib/systemd/system目录下, 脚本要有754的权限
每一个做事以.service结尾, 一样平常会分为3部分:[Unit]、[Service]和[Install]
脚本的内容格式
[Unit] 做事的解释
Description 描述做事
After 描述做事种别
[Service] 做事运行参数的设置
Type=forking 是后台运行的形式
PIDFile 为存放PID的文件路径
ExecStart 为做事的详细运行命令
ExecReload 为重启命令
ExecStop 为停滞命令
PrivateTmp=True表示给做事分配独立的临时空间
把稳:启动、重启、停滞命令全部哀求利用绝对路径
[Install] 做事安装的干系设置, 可设置为多用户
附录:
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认为做事就绪。
其他参数
定义环境变量的格式:
[Service]
EnvironmentFile=/etc/sysconfig/sshd
Environment="SECRET=pGNqduRFkB4K9C2vijOmUDa2kPtUhArN"
Environment="ANOTHER_SECRET=JP8YLOc2bsNlrGuD6LVTq7L36obpjzxd"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
指定做事的事情目录。
[Service]
WorkingDirectory=/usr/local/rabbitmq
编写一个httpd 的启动脚本
1. 创建httpd.service 脚本文件
vim /usr/lib/systemd/system/httpd.service
2. 编写脚本内容
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=notify
ExecStart=/usr/local/apache/bin/apachectl start -c /usr/local/apache/conf/httpd.conf
ExecReload=/usr/local/apache/bin/apachectl restart
ExecStop=/usr/local/apache/bin/apachectl stop
[Install]
WantedBy=multi-user.target
编写mysql的启动脚本
1. 创建mysqld.service 脚本文件
vim /usr/lib/systemd/system/mysqld.service
2. 编写脚本内容
[Unit]
Description=mysql
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
#ExecReload=/usr/local/mysql/support-files/mysql.server restart
#ExecStop=/usr/local/mysql/support-files/mysql.server stop
#PrivateTmp=true
[Install]
WantedBy=multi-user.target
编写nginx的启动脚本
1. 创建nginx.service 脚本文件
vim /usr/lib/systemd/system/nginx.service
2. 编写脚本内容
[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
编写php-fpm的启动脚本
1. 创建php-fpm.service 脚本文件
vim /usr/lib/systemd/system/nginx.service
2. 编写脚本内容
[Unit]
Description=php
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
[Install]
WantedBy=multi-user.target
编写利用systemctl启动做事脚本的完全流程
CentOS 7的做事systemctl脚本存放在:/usr/lib/systemd/, 有系统(system)和用户(user)之分, 像须要开机不上岸就能运行的程序, 还是存在系统做事里吧,
即:/usr/lib/systemd/system目录下
每一个做事以.service结尾, 一样平常会分为3部分:[Unit]、[Service]和[Install], 我写的这个做事用于开机运行Node.js项目, 详细内容如下:
> # vim /usr/lib/systemd/system/node.service
#[Unit]部分紧张是对这个做事的解释, 内容包括Description和After, Description
#用于描述做事, After用于描述做事种别
[Unit]
Description=xiyoulibapi
After=network.target remote-fs.target nss-lookup.target
#[Service]部分是做事的关键, 是做事的一些详细运行参数的设置, 这里Type=forking
#是后台运行的形式, PIDFile为存放PID的文件路径, ExecStart为做事的详细运行命令,
#ExecReload为重启命令, ExecStop为停滞命令, PrivateTmp=True表示给做事分配独立的临时空间;
#把稳:[Service]部分的启动、重启、停滞命令全部哀求利用绝对路径, 利用相对路径则会报错!
[Service]
Type=forking
PIDFile=/node.js/pid
ExecStart=/usr/local/bin/forever start /node.js/xiyoulib/bin/www
ExecReload=/usr/local/bin/forever restart /node.js/xiyoulib/bin/www
ExecStop=/usr/local/bin/forever stop /node.js/xiyoulib/bin/www
PrivateTmp=true
#[Install]部分是做事安装的干系设置, 可设置为多用户的
[Install]
WantedBy=multi-user.target
做事脚本按照上面编写完成后, 以754的权限保存在/usr/lib/systemd/system目录下, 这时就可以利用systemctl进行配置了
> # chmod 754 /usr/lib/systemd/system/node.service
重新加载所有单元文件
systemctl daemon-reload
首先, 利用systemctl start [做事名(也是文件名)]可测试做事是否可以成功运行,
> # systemctl start node.service
如果不能运行则可以利用systemctl status [做事名(也是文件名)]查看缺点信息和其他做事信息, 然后根据报错进行修正,
直到可以start, 如果不放心还可以测试restart和stop命令。
> # systemctl status node.service
> # systemctl restart node.service
> # systemctl stop node.service
接着, 只要利用systemctl enable [做事名(也是文件名)]就可以将所编写的做事添加至开机启动即可。
> # systemctl enable node.service