一、系统服务的方式

1. 前提

(1)首先要将需要自启的软件或应用注册成系统服务,下面提供常用的软件注册系统服务的案例

  • nginx.service

创建服务文件

vi  /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/sbin/nginx -s reload
ExecStop=/usr/local/sbin/nginx -s stop
ExecQuit=/usr/local/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • redis.service

创建服务文件

vi  /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis6.2.5
After=network.target

[Service]
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecReload=kill -s HUP $MAINPID
ExecStop=kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

nacos.service(这种是基于shell脚本执行的案例,需要将你的执行脚本授予执行权限,如:chmod +x /usr/local/nacos/bin/startup.sh)

创建服务文件

vi  /usr/lib/systemd/system/nacos.service
[Unit]
Description=nacos-server-2.0.3
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh -m standalone
ExecReload=/usr/local/nacos/bin/shutdown.sh
ExecStop=/usr/local/nacos/bin/shutdown.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target
  • 其他的脚本类型的可以参考nacos 那种方式,先创建启动应用和停止应用的脚本,再给脚本授权执行权,最后创建服务

服务的文件存放在  /usr/lib/systemd/system 如下:

/usr/lib/systemd/system/nacos.service

/usr/lib/systemd/system/nginx.service

/usr/lib/systemd/system/redis.service


centos7如何设置开机自启动关闭mysql centos7 开机自启动_nginx

 

2. 配置描述

Description           -描述服务 
After                       -描述服务类别 
[Service]                -服务运行参数的设置 
Type=forking         -是后台运行的形式 
ExecStart               -为服务的具体运行命令 
ExecReload           -为重启命令 
ExecStop               -为停止命令 
PrivateTmp=True  - 表示给服务分配独立的临时空间 
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径 
[Install]                   -运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

3. 全部命令

#重载服务单元
systemctl daemon-reload  

 #启动redis服务 
systemctl start redis.service 
 #设置开机自启动 

systemctl enable redis.service

 #停止开机自启动 
systemctl disable redis.service 

 #查看服务当前状态 
systemctl status redis.service 

 #重新启动服务 
systemctl restart redis.service  

 #查看所有已启动的服务
systemctl list-units --type=service

二、 系统自带启动

1. 写好自己应用的启动脚本,例如:

# 创建脚本
vi  /home/myShell/startup.sh

添加脚本内容

#!/bin/bash

# 后台启动java应用
nohup java -Dserver.port=8858 -jar /usr/local/sentinel/sentinel-dashboard-1.8.2.jar >> logs/start.log 2>&1 &

授执行权限

chmod +x /home/myShell/startup.sh

2. 添加自启

编辑自启的系统文件

# /etc/rc.d/rc.local 这个文件是系统自带的启动文件
vi  /etc/rc.d/rc.local

添加下面我们要自启的脚本

/home/myShell/startup.sh

centos7如何设置开机自启动关闭mysql centos7 开机自启动_redis_02

 3. 在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限

chmod +x /etc/rc.d/rc.local

三、利用系统 /etc/rc.d/init.d 自启

1. 创建自己的脚本 (参考方式二的第一点创建脚本)

2. 将执行的脚本放在到/etc/rc.d/init.d目录下

centos7如何设置开机自启动关闭mysql centos7 开机自启动_redis_03

3. 添加脚本到开机自动启动项目中

# 切换到这个目录下
cd /etc/rc.d/init.d

# 添加我们的脚本
chkconfig --add startup.sh

# 设置自启执行
chkconfig startup.sh on

注意:所有需要执行的文件都需要授予执行权限

授权命令: chmod  +x  [脚本的绝对路径]