银河麒麟V10-SP1设置springboot开机自启

一、脚本命令

1. 启动脚本

切换root用户,创建文件夹boot

mkdir -p /usr/local/boot

进入/usr/local/boot,并将springboot jar包上传至此处

cd /usr/local/boot

创建启动脚本文件start.sh

vim start.sh

 写入以下内容,wq保存

#!/bin/sh
# jar包路径
APP1_NAME=/usr/local/boot/boot.jar
 
# 查询是否有原进程
tpid1=`ps -ef|grep $APP1_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
# 如果此进程已经启动,则先杀掉
if [ $tpid1 ]; then
kill -9 $tpid1
fi
 
# 启动项目jar包,java命令写成了绝对路径,因为系统启动的时候是不识别环境变量的
# 日志文件也写成了绝对路径,不然日志会输出在init.d目录
nohup /usr/local/java/jdk1.8.0_151/bin/java -jar $APP1_NAME -> /usr/local/boot/boot.log 2>&1 &

2.停止脚本

创建启动脚本文件stop.sh

vim stop.sh

写入以下内容,wq保存

#!/bin/sh
# jar包路径
APP1_NAME=/usr/local/boot/boot.jar
 
# 查询是否有原进程
tpid1=`ps -ef|grep $APP1_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
# 如果此进程已经启动,则先杀掉
if [ $tpid1 ]; then
kill -9 $tpid1
fi

3.赋予stop.sh,start.sh执行权限

chmod 777 /usr/local/boot/start.sh
chmod 777 /usr/local/boot/stop.sh

二、注册自启服务

进入/etc/systemd/system 目录

cd /etc/systemd/system

新建文件

vim boot.service

写入以下内容,wq保存

[Unit]
Description=carrier-admin
# 依赖项,在这些程序之后启动
After=NetworkManager.service mysqld.service redis.service
 
[Service]
Type=forking
# 配置启动脚本
ExecStart=/usr/local/boot/start.sh
# 配置重启脚本
ExecReload=/usr/local/boot/start.sh
# 配置停止脚本
ExecStop=/usr/local/boot/stop.sh
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

三、配置服务

配置开机启动

systemctl enable boot.service

重新加载配置

systemctl daemon-reload

使用systemctl启动服务

systemctl start boot.service

使用systemctl停止服务

systemctl stop boot.service

<think>嗯,用户问的是如何在麒麟v10系统上设置开机自启动脚本。首先,我需要确定麒麟v10是基于哪个init系统,因为不同的Linux发行版使用不同的初始化系统,比如SysV init、Upstart或者systemd。麒麟v10是基于CentOS的,而CentOS 7及以后版本通常使用systemd,所以可能麒麟v10也是用systemd的。不过也有可能他们有自己的定制,可能需要确认一下。 接下来,用户可能需要知道两种方法:传统的方法(比如修改/etc/rc.local)和systemd的方法。不过现在很多系统已经不再默认用rc.local,所以可能需要检查是否存在这个文件,并确保其可执行权限。如果用户习惯使用rc.local,那可能需要指导他们如何用这个服务。另外,使用systemd创建服务单元可能是更现代和推荐的方式,特别是对于较新的系统版本。 然后,我需要考虑用户可能的权限问题。比如,在rc.local中添加脚本时,是否需要使用root权限编辑文件。还有,如果用户使用systemd,可能需要创建.service文件,并正确设置ExecStart、Restart等参数。此外,还要提醒用户检查脚本本身的执行权限,以及日志的查看方法,比如通过journalctl来调试服务。 可能用户遇到的问题包括脚本没有执行权限,或者路径问题,或者服务没有正确用。因此,在步骤中需要详细说明每一步的操作,比如如何给脚本添加执行权限,如何用服务,如何检查服务状态等。另外,可能需要提醒用户测试脚本是否可以在命令行直接运行,以确认脚本本身没有问题。 还有,是否需要考虑不同用户的环境变量?比如,系统服务在root用户下运行,而用户脚本可能需要特定的环境变量。这时候可能需要使用绝对路径或者在脚本设置环境变量。此外,如果用户需要在动时等待网络就绪后再执行脚本,可能需要添加相关的依赖项,比如在systemd服务文件中添加After=network.target。 最后,要总结两种方法,让用户根据自己的系统情况选择合适的方式。同时,强调检查日志的重要性,帮助用户排查问题。</think>在麒麟v10(基于Linux)系统中设置开机自启动脚本主要有以下两种方法: --- ### 方法一:使用 rc.local 文件(传统方式) 1. **创建/编辑 rc.local 文件** ```bash sudo vim /etc/rc.d/rc.local ``` 2. **添加要执行的脚本命令** 在文件末尾添加需要开机执行的命令(需用绝对路径): ```bash #!/bin/bash /path/to/your_script.sh ``` 3. **赋予执行权限** ```bash sudo chmod +x /etc/rc.d/rc.local ``` 4. **用 rc-local 服务** ```bash sudo systemctl enable rc-local ``` --- ### 方法二:通过 Systemd 服务(推荐方式) 1. **创建服务文件** ```bash sudo vim /usr/lib/systemd/system/my_script.service ``` 2. **写入服务配置** ```ini [Unit] Description=My Custom Script After=network.target # 需要网络时添加此依赖 [Service] ExecStart=/path/to/your_script.sh Restart=on-failure [Install] WantedBy=multi-user.target ``` 3. **重载服务配置** ```bash sudo systemctl daemon-reload ``` 4. **开机动** ```bash sudo systemctl enable my_script.service ``` --- ### 关键注意事项 1. **脚本权限要求** ```bash chmod +x /path/to/your_script.sh ``` 2. **调试方法** - 查看服务状态: ```bash systemctl status my_script.service ``` - 查看动日志: ```bash journalctl -u my_script.service -b ``` 3. **路径问题** - 必须使用绝对路径 - 建议在脚本开头添加环境变量: ```bash #!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin ``` --- ### 两种方式对比 | 方式 | 适用场景 | 优点 | 缺点 | |-----------|-----------------------|-------------------|-------------------| | rc.local | 简单脚本 | 配置简单 | 依赖旧式init系统,逐渐被淘汰 | | Systemd | 复杂服务、需要状态管理的情况 | 功能强大,支持服务管理 | 配置相对复杂 | 建议优先使用Systemd方式,这是现代Linux系统的标准服务管理方案。如果遇到问题,可通过`systemctl status`和`journalctl`命令查看详细错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值