如何实现Grails 4.0.10应用在系统重启后自动运行?
实现Grails应用重启后自动启动的方法
方案一:用systemd服务(推荐,适配Ubuntu 16.04+/CentOS 7+等主流系统)
systemd是当前Linux系统的标准服务管理工具,稳定性和可控性最优。
- 创建systemd服务配置文件
执行命令创建并编辑服务文件:
sudo nano /etc/systemd/system/rcroadrace.service
- 写入以下配置内容(记得替换实际路径和用户名):
[Unit] Description=RCRoadRaceWeb Grails应用 After=network.target mysql.service Wants=mysql.service [Service] User=your_username # 替换为运行应用的普通用户名,避免用root WorkingDirectory=/opt/rcroadrace # 替换为jar文件所在的目录 ExecStart=/usr/bin/java -Dgrails.env=prod -Duser.timezone=US/Mountain -jar RCRoadRaceWeb4-0.1.jar Restart=always # 意外退出或系统重启后自动重启 RestartSec=5 # 重启间隔5秒 StandardOutput=journal+console StandardError=journal+console [Install] WantedBy=multi-user.target
After=network.target mysql.service:确保网络和MySQL服务启动后再启动应用,避免数据库连接失败Restart=always:保证应用崩溃或系统重启后都会自动拉起
- 激活并启动服务
执行以下命令:
sudo systemctl daemon-reload sudo systemctl enable rcroadrace.service # 设置开机自启 sudo systemctl start rcroadrace.service # 立即启动应用
- 验证状态
用命令查看服务是否正常运行:
sudo systemctl status rcroadrace.service
重启系统后,再次执行上述命令或ps -aux | grep java确认应用已自动启动。
方案二:用rc.local(适用于保留rc.local的旧版系统)
如果你的系统还支持rc.local(部分旧版Ubuntu/CentOS可用),可以用这种简单方式:
- 编辑rc.local文件
sudo nano /etc/rc.local
- 在
exit 0之前添加启动命令(替换路径和用户名):
su - your_username -c "cd /opt/rcroadrace && nohup java -Dgrails.env=prod -Duser.timezone=US/Mountain -jar RCRoadRaceWeb4-0.1.jar &"
su - your_username:切换到普通用户运行应用,避免权限问题
- 赋予rc.local执行权限
sudo chmod +x /etc/rc.local
重启系统后检查应用是否自动启动。
方案三:用crontab的@reboot任务
通过定时任务在系统重启时执行启动命令:
- 编辑当前用户的crontab
crontab -e
- 添加一行任务(替换路径):
@reboot cd /opt/rcroadrace && nohup java -Dgrails.env=prod -Duser.timezone=US/Mountain -jar RCRoadRaceWeb4-0.1.jar > /var/log/rcroadrace.log 2>&1 &
> /var/log/rcroadrace.log 2>&1:把输出和错误日志写入指定文件,方便排查问题
- 保存退出后,重启系统验证。
内容的提问来源于stack exchange,提问作者kofhearts
相关产品推荐
相关产品推荐

