首先我们新建一个文件,写好自己的自启脚本
#!/bin/bash
# 关闭防火墙(建议仅在测试环境使用)
systemctl stop firewalld.service || echo "防火墙关闭失败"# 启动 MySQL
systemctl start mysqld.service || echo "MySQL 启动失败"# 启动 Nginx
if [ -x /usr/local/nginx/sbin/nginx ]; then/usr/local/nginx/sbin/nginx || echo "Nginx 启动失败"
elseecho "Nginx 可执行文件不存在"
fi# 启动 Redis
nohup /usr/local/bin/redis-server > /var/log/redis.log 2>&1 &
echo "Redis 已启动 (PID: $!)"# 启动 Minio
nohup /mnt/minio server /mnt/service/data > /var/log/minio.log 2>&1 &
echo "Minio 已启动 (PID: $!)"# 启动 Java 应用
nohup java -jar yourService.jar > /var/log/ruoyi-admin.log 2>&1 & #这里填写你自己的jar包路径
echo "Java 应用 ruoyi-admin 启动完成 (PID: $!)"exit 0
然后执行
sudo nano /etc/systemd/system/startup.service
命令,创建文件
在文件中复制一下代码(根据自己的需求改)
[Unit]
Description=Custom Startup Script
After=network-online.target
Wants=network-online.target[Service]
ExecStart=/bin/bash /path/to/your_script.sh
Restart=on-failure
RestartSec=5s
User=root
StandardOutput=append:/var/log/startup.log
StandardError=append:/var/log/startup_error.log[Install]
WantedBy=multi-user.target
说明
1.ExecStart=/bin/bash /path/to/your_script.sh
是你自己的shell脚本路径
2.因为我们是web服务器,一般有Nginx和Redis所以要在网络初始化完毕network-online.target
再加载脚本
3.WantedBy=multi-user.target
这个的意思是在多用户环境下启动脚本,如果配置好后没有成功运行,建议
检查自己是那种环境,查看命令systemctl get-default
4.日志文件StandardOutput=append:/var/log/startup.log
和StandardError=append:/var/log/startup_error.log
并不会自己创建,需要自己手动创建一个日志文件。
创建好
startup.service
文件之后按顺序执行一下命令
sudo systemctl daemon-reload # 重新加载 systemd 配置sudo systemctl enable taskStart.service # 设为开机自启sudo systemctl start taskStart.service # 立即启动服务sudo systemctl status taskStart.service # 查看服务状态
如果没有成功启动可以执行
sudo journalctl -xe -u taskStart.service
查看日志,分析原因
重启命令sudo systemctl restart taskStart.service # 重启服务