linux 服务开机启动

本文详细介绍了在CentOS7系统中如何配置服务和脚本自启动,包括systemd的区别、不同目录下的配置、创建自定义服务和脚本、以及使用systemctl和chkconfig进行服务管理和开机启动设置。
摘要由CSDN通过智能技术生成

准备需要自启动的服务
准备需要自启动的脚本
而在 centos7 里,服务和脚本的自启动方式是不一样的,下面分开来讲解

自启动服务

  1. 权限:

    • systemd区分系统级别和用户级别的配置。
    • 系统级别的配置文件存放在 /usr/lib/systemd/system/​​ 目录,这些文件是由软件包安装时提供的,一般不建议手动修改。
    • 用户级别的配置文件存放在 /etc/lib/systemd/user/​​ 目录,这些文件用于用户自定义的服务单元配置。
  2. 区别:

    • ​/usr/lib/systemd/system/​​ 目录存放由软件包安装的服务单元文件,通常不应该被用户手动修改。
    • ​/etc/systemd/system/​​ 目录是系统管理员安装的服务单元的推荐存放位置,它的优先级更高。您可以在此目录下手动创建和编辑服务单元文件来配置系统级别的服务。
  3. 优先级:

    • systemd 的配置文件可以存在于三个主要目录:/etc/systemd/system/​​、/run/systemd/system/​​ 和 /lib/systemd/system/​​。
    • ​/etc/systemd/system/​​ 目录中的配置文件具有最高优先级,它们会覆盖其他目录中相同名称的配置文件。
    • ​/run/systemd/system/​​ 目录用于临时文件,存储在这里的配置会覆盖 /lib/systemd/system/​​ 目录中的配置。
    • ​/lib/systemd/system/​​ 目录中的配置文件是系统安装的默认配置,一般由操作系统发行版提供。

请注意,对于系统服务的配置,建议将自定义的服务单元文件存放在 /etc/systemd/system/​ 目录下,以确保优先级最高。对于用户级别的服务,可以使用 /etc/lib/systemd/user/​ 目录。

创建自定义服务

​vi /etc/systemd/system/springboot.service​​

[Unit]
Description=config service
After=syslog.target

[Service]
Type=simple
ExecStart=/usr/etc/jdk1.8.0_162/bin/java -jar   -XX:MetaspaceSize=128m  -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails  /opt/projects/yami-b2b2c/yami-shop-multishop-0.0.1-SNAPSHOT.jar

[Install]
WantedBy=multi-user.target

分别执行如下代码就可以开启服务的自启动了。

#如设置为开机启动命令:
systemctl enable springboot.service
#如设置为关闭开机启动命令:
systemctl disabled springboot.service
#启动服务命令 
systemctl start springboot.service
#停止服务命令 
systemctl stop springboot.service 

注册服务流程

  1. 先切换到系统目录
    cd /etc/systemd/system
  2. 注册服务脚本
    vi data.service
    内容参考:springboot-sh.service
  3. 配置服务
配置开机启动 
systemctl enable data.service
重新加载配置 
systemctl daemon-reload
查看启动配置(到这里就可以重启测试了) 
systemctl list-unit-files | grep data
使用systemctl启动服务 
systemctl start api.service
使用systemctl停止服务 
systemctl stop api.service

自启动脚本

SysV init 自启动方式

创建启动脚本

在 /etc/init.d/​​ 目录下创建一个脚本文件,例如 my_service​​。

sudo nano /etc/init.d/my_service

在编辑器中,输入以下内容:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          my_service
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: My Service
# Description:       This is a description of my service.
### END INIT INFO

# Start the service
start() {
    echo "Starting my service..."
    # Add your start command here
}

# Stop the service
stop() {
    echo "Stopping my service..."
    # Add your stop command here
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

exit 0

替换注释部分的内容,添加你自己的启动和停止命令。

设置该脚本为可执行权限。

sudo chmod +x /etc/init.d/my_service

更新系统服务

在Ubuntu发行版

使用 update-rc.d​​​ 命令将你的启动脚本添加到系统服务中。

#如果你想重新添加这个服务并让它开机自动执行,你需要执行以下命令:
sudo update-rc.d my_service defaults
#从系统中移除特定服务的启动脚本
update-rc.d -f apache2 remove
#禁用特定服务的启动脚本
update-rc.d -f apache2 disable
在CentOS发行版

知识补充:

chkconfig可以更新(启动或停止)和查询系统服务(service)运行级信息。更简单一点,chkconfig是一个用于维护/etc/rc[0-6].d目录的命令行工具。chkconfig 提供5个功能:

设置service启动信息
# chkconfig {service} on/off/reset

on、off、reset用于改变service的启动信息。on表示开启,off表示关闭,reset表示重置。默认情况下,on和off开关只对运行级2,3,4,5有效,reset可以对所有运行级有效。

设置service运行级别
# chkconfig --level levels
#例如 chkconfig --level 2345 httpd on

指定运行级为2,3,4,5
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动

添加service
# chkconfig --add name

添加一个chkconfig管理的service,并在/etc/rc[0-6].d 目录下添加相应的符号链接(symbolic links)。

移除service
# chkconfig --del name

从chkconfig 管理名单中删除该service,并且删除 /etc/rc[0-6].d 目录下所有与之关联的符号链接(symbolic links)。

列出service的启动信息
# chkconfig --list [name]

如果不指定name,会列出所有services的信息。每个service每个运行级别都会有一个启动和停止脚本;当切换运行级别时,init不会重启已经启动的service,也不会重新停止已经停止的service。

添加服务到启动项中: 运行以下命令,将服务添加到系统的启动项中:

#### 添加service
chkconfig --add my_service
### 移除service
chkconfig --del my_service
### 开机启动 
chkconfig my_service on

chkconfig --list [name]

完成上述步骤后,你的服务将在系统启动时自动运行,并且你可以使用以下命令手动启动、停止或重启服务:

sudo service my_service start
sudo service my_service stop
sudo service my_service restart

直接使用rc.local

有个文件叫做 rc.local, 把脚本放进去就可以了。不过这个脚本在 centos7里被降级了,不能被执行,所以要执行如下语句使得其可以被执行先

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

然后修改 /etc/rc.d/rc.local, 放入 tomcat脚本即可

vi /etc/rc.d/rc.local
/usr/local/tomcat7/bin/startup.sh

注意:也可以放在/etc/rc.local中效果也一样。

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tonicGB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值