准备需要自启动的服务
准备需要自启动的脚本
而在 centos7 里,服务和脚本的自启动方式是不一样的,下面分开来讲解
自启动服务
-
权限:
- systemd区分系统级别和用户级别的配置。
- 系统级别的配置文件存放在 /usr/lib/systemd/system/ 目录,这些文件是由软件包安装时提供的,一般不建议手动修改。
- 用户级别的配置文件存放在 /etc/lib/systemd/user/ 目录,这些文件用于用户自定义的服务单元配置。
-
区别:
- /usr/lib/systemd/system/ 目录存放由软件包安装的服务单元文件,通常不应该被用户手动修改。
- /etc/systemd/system/ 目录是系统管理员安装的服务单元的推荐存放位置,它的优先级更高。您可以在此目录下手动创建和编辑服务单元文件来配置系统级别的服务。
-
优先级:
- 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
注册服务流程
- 先切换到系统目录
cd /etc/systemd/system - 注册服务脚本
vi data.service
内容参考:springboot-sh.service - 配置服务
配置开机启动
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中效果也一样。