Centos7及以上系统编译安装后如何启动服务
[root@localhost system]# vim /usr/lib/systemd/system/sshd.service
[Unit] #unit段(单元段)
Description=OpenSSH server daemon # 描述信息
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service#表示在运行该程序之前运行network.target sshd- keygen.service
Wants=sshd-keygen.service #表示sshd.service与sshd-keygen.service之间存在"弱依 赖"关系,即如果"sshd-keygen.service"启动失败或停止运 行,不影响sshd.service继续执行。
[Service] #service段(服务段)
Type=notify # 在启动完成后会发送一个通知消息。还需要配合 NotifyAccess 来让 Systemd 接收消息
EnvironmentFile=/etc/sysconfig/sshd # 环境配置文件路径为/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS # 指明启动unit要运行命令或脚本的绝对路径
ExecReload=/bin/kill -HUP $MAINPID #特殊的环境变量 $MAINPID 可用于表示主进程的PID
KillMode=process #这里process表示通过只杀主进程来停止服务
Restart=on-failure #当服务单元文件中设置了智能重启,当设定Restart=1 时,则当 次daemon服务意外终止后,会再次自动启动此服务
RestartSec=42s #重启服务前暂停42秒(如果为指定单位将以秒(s)为单位
[Install] #install段(开机启动)
WantedBy=multi-user.target #这里表示被multi-user.target所弱依赖,必须先运行混合模式 才能运行本程序
# 其他选项及注释参考以下内容!
[Unit]段的常用选项:
- Description:描述信息
- After:定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反
- Requires:依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活
- Wants:依赖到的其它units,弱依赖
- Conflicts:定义units间的冲突关系
[service]段
- Type:定义影响ExecStart及相关参数的功能的unit进程启动类型
- simple:默认值,这个daemon主要由ExecStart接的指令串来启动,启动后常驻于内存中
- forking:由ExecStart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务。原生父程序在启动结束后就会终止
- oneshot:与simple类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中
- dbus:与simple类似,但这个daemon必须要在取得一个D-Bus的名称后,才会继续运作.因此通常也要同时设定BusNname= 才行
- notify:在启动完成后会发送一个通知消息。还需要配合 NotifyAccess 来让 Systemd 接收消息
- idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通常是开机到最后才执行即可的服务
Type=notify
- EnvironmentFile:环境配置文件
EnvironmentFile=/etc/sysconfig/sshd
- ExecStart:指明启动unit要运行命令或脚本的绝对路径
ExecStart=/usr/sbin/sshd -D $OPTIONS
- ExecStartPre: ExecStart前运行
- ExecStartPost: ExecStart后运行
- ExecStop:指明停止unit要运行的命令或脚本
- Restart:当设定Restart=1 时,则当次daemon服务意外终止后,会再次自动启动此服务
| Restart字段 | 含义 |
|---|---|
| no(默认值) | 退出后不会重启 |
| on-success | 只有正常退出时(退出状态码为0),才会重启 |
| on-failure | 非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启 |
| on-abnormal | 只有被信号终止和超时,才会重启 |
| on-abort | 只有在收到没有捕捉到的信号终止时,才会重启 |
| on-watchdog | 超时退出,才会重启 |
| always | 不管是什么退出原因,总是重启 |
Restart=on-failure
- RestartSec: 设置在重启服务( Restart= )前暂停多长时间。 默认值是100毫秒(100ms)。 如果未指定时间单位,那么将视为以秒为单位。 例如设为"20"等价于设为"20s"。
RestartSec=42s
- PrivateTmp:设定为yes时,会在生成/tmp/systemd-private-UUID-NAME.service-XXXXX/tmp/目录
-
KillMode字段 含义 control-group(默认值) 当前控制组里面的所有子进程,都会被杀掉 process 只杀主进程 mixed 主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号 none 没有进程会被杀掉,只是执行服务的 stop 命令
[install]段:选择启动的运行级别
Install段的常用选项:
Alias:别名,可使用systemctl command Alias.service
RequiredBy:被哪些units所依赖,强依赖
WantedBy:被哪些units所依赖,弱依赖
WantedBy=multi-user.target
Also:安装本服务的时候还要安装别的相关服务
实验
cd /opt
wget https://nginx.org/download/nginx-1.25.4.tar.gz #下载nginx包
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl-devel#依赖包,编译软件
tar zxvf nginx-1.25.4.tar.gz #解压nginx包
cd nginx-1.25.4 #进入nginx文件夹
./configure --prefix=/usr/local/nginx #指定安装路径
make && make install #编译安装
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #做软链接
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
wq #保存退出
systemctl daemon-reload #重新加载配置
systemctl start nginx #启动nginx服务
systemctl status nginx #查看nginx服务状态
systemctl stop nginx #关闭nginx服务
systemctl status nginx #查看nginx服务状态
centos6及以前版本编译安装后如何启动服务
chkconfig
chkconfig工具:
格式:
chkconfig --list [服务名称]
chkconfig --add 服务名称
chkconfig --level 级别列表服务名on/off
实验2
cd /opt
wget https://nginx.org/download/nginx-1.25.4.tar.gz #下载nginx包
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl-devel#依赖包,编译软件
tar zxvf nginx-1.25.4.tar.gz -C /opt #解压nginx包
cd nginx-1.25.4 #进入nginx文件夹
./configure --prefix=/usr/local/nginx #指定安装路径
make && make install #编译安装
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #这步可以不做,做软链接,让系统可以 直接使用
vim /etc/init.d/nginx #写脚本
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start) $PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop $0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*) echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
:wq #保存退出
chmod +x /etc/init.d/nginx #给脚本加上权限
nginx #开启nginx
ss -ntap |grep nginx #查看服务有没有启动
chkconfig --add nginx #将服务加入让chkconfig管理
chkconfig --list nginx #查看服务
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
nginx 0:关 1:关 2:关 3:关 4:关 5:关 6:关
chkconfig --level 35 nginx on #开启3和5自动开启
chkconfig --list nginx #查看服务
[root@localhost nginx-1.25.4]# chkconfig --list nginx
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
nginx 0:关 1:关 2:关 3:开 4:关 5:开 6:关
cat /usr/local/nginx/logs/nginx.pid #查看nginx进程号,便于停止
7128 #进程号