CentOS 7的做事systemctl脚本存放在:/usr/lib/systemd/, 有系统(system)和用户(user)之分, 像须要开机不上岸就能运行的程序, 还是存在系统做事里吧, 即:/usr/lib/systemd/system目录下, 脚本要有754的权限

每一个做事以.service结尾, 一样平常会分为3部分:[Unit]、[Service]和[Install]

脚本的内容格式

phpfpm开机启动脚本systemctl启动剧本的编写 Angular

[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