Centos7配置服务开机启动

Background

  • 这里记录方便自己以后查阅。
  • 配置开机启动的方法有三种:1、配置/etc/rc.local/etc/rc.d/rc.local;2、配置/etc/rc.d/init.d;3、配置/usr/lib/systemd/system,添加自定义系统服务。
  • 这里给出第一种,以jar包服务为例;第三种方法,以mysql、redis、emqx、rabbitmq 服务为例。

第一种

  • 这种适合Java程序开机启动配置,结合我开发的jar包操作脚本operate.sh非常方便。
  • 脚本在这里奉上:【jar包服务操作】【配置 web 界面监控服务运行】【shell脚本】

Centos7配置服务开机启动_第1张图片

  • 我们可以这么配置
    在这里插入图片描述
  • 首先给文件赋权
chmod +x /etc/rc.local

Centos7配置服务开机启动_第2张图片

  • 然后添加一个需要开机启动的服务脚本 boot-auto-run.sh,你可以把它放在你自定义的位置,内容格式如下:
# 170-tower-lift-server
cd /root/projects/170-tower-lift/170-tower-lift-server/
sh operate.sh run

Centos7配置服务开机启动_第3张图片

  • 最后配置开机运行这个脚本 boot-auto-run.sh就行了,如果以后有其他服务,也同样放到这个脚本里就行了
tee -a /etc/rc.local <<-'EOF'

# auto run on boot
/usr/wlf/boot-auto-run.sh
EOF

Centos7配置服务开机启动_第4张图片

  • reboot 测试下,正常情况应该已经生效了哈。

第二种

Centos7配置服务开机启动_第5张图片

第三种

配置文件语法

[Unit]:服务的说明
Description:描述服务
After:描述服务类别

[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径

[Install]服务安装的相关设置,可设置为多用户

1、 mysql

  • 添加配置文件
vim /usr/lib/systemd/system/mysql.service
  • 配置文件内容如下
[Unit]
Description=mysql
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/opt/mysql-5.7.25/support-files/mysql.server start

[Install]
WantedBy=multi-user.target
  • 设置开机自启动
systemctl enable mysql.service 

2、 redis

  • 添加配置文件
vim /usr/lib/systemd/system/redis.service
  • 配置文件内容如下
[Unit]
Description=redis
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/redis/bin/redis-operator.sh start
ExecStop=/usr/redis/bin/redis-operator.sh stop

[Install]
WantedBy=multi-user.target
  • 设置开机自启动
systemctl enable redis.service 
  • redis-operator.sh,这个脚本是自己写的
# 服务基本信息
operate=$1
ps_1='./redis-server'
pid_1=`ps -ef | egrep "$ps_1" | egrep -v grep | awk '{print $2}'`
dir_home=/usr/redis/
dir_log=/usr/redis/redis-server.log

# 判断输入参数
if [[ -z $operate || $operate = "help" ]]; then
    echo '#####'
    echo "please input your operate [run|stop|status|log|shell]"
    echo '#####'
fi

# 启动服务
if [[ $operate = "run" || $operate = "start" ]]; then
    rm -rf $dir_log
    nohup $dir_home/bin/redis-server $dir_home/redis.conf >> $dir_log 2>&1 &

# 停止服务
elif [[ $operate = "stop" ]]; then
    kill -9 $pid_1

# 查看服务运行状态
elif [[ $operate = "status" ]]; then
    if [[ $pid_1 ]]; then
        # 黄底蓝字
        echo -e "\033[43;34m RUNNING \033[0m"
    else
        # 蓝底黑字
        echo -e "\033[44;30m STOPPED \033[0m"
    fi

# 查看服务运行日志
elif [[ $operate = "log" ]]; then
    if [[ -e $dir_log ]]; then
        tail -f $dir_log
    else
        echo '#####'
        echo "No logs have been generated so far"
        echo '#####'
    fi

# 进入服务命令行界面
elif [[ $operate = "shell" ]]; then
    if [[ $pid_1 ]]; then
        $dir_home/bin/redis-cli -h localhost -p 6377 -a cloudansys[redis]
    else
        echo '#####'
        echo "The redis service has not been started yet"
        echo '#####'
    fi
fi

3、 emqx

  • 添加配置文件
vim /usr/lib/systemd/system/emqx.service
  • 配置文件内容如下
[Unit]
Description=emqx
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
Environment=HOME=/var/lib/emqx
ExecStart=/usr/bin/emqx start

[Install]
WantedBy=multi-user.target
  • 设置开机自启动
systemctl enable emqx.service 

4、 rabbitmq

  • 添加配置文件
vim /usr/lib/systemd/system/rabbitmq.service
  • 配置文件内容如下
[Unit]
Description=rabbitmq
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/rabbitmq/sbin/rabbitmq-server -detached
ExecStop=/usr/local/rabbitmq/sbin/rabbitmqctl stop

[Install]
WantedBy=multi-user.target
  • 修改启动脚本,在rabbitmq-server脚本中在NOTIFY_SOCKET = \这一行下面加入如下内容
# vim /usr/local/rabbitmq/sbin/rabbitmq-server
ERLANG_HOME=/usr/local/erlang
export PATH=$PATH:$ERLANG_HOME/bin
export HOME=/usr/local/rabbitmq/
  • 设置开机自启动
systemctl enable rabbitmq.service 

5、OpenTSDB

  • 添加配置文件
vim /usr/lib/systemd/system/opentsdb.service
  • 配置文件内容如下
[Unit]
Description=OpenTSDB Service
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/share/opentsdb/etc/init.d/opentsdb start
ExecStop=/usr/share/opentsdb/etc/init.d/opentsdb stop
Restart=on-abort

[Install]
WantedBy=multi-user.target
  • 设置开机自启动
systemctl enable opentsdb.service 

6、查看所有已启动的服务

systemctl list-units --type=service

你可能感兴趣的:(Linux,Java,linux,centos,开机自启动)