我正在使用以下命令运行 Grails 4.0.10 应用程序:
nohup java -Dgrails.env=prod -Duser.timezone=US/Mountain -jar RCRoadRaceWeb4-0.1.jar &
应用程序连接到 MySQL 8 服务器。
当我使用命令重新启动系统时
sudo reboot
系统重新启动后。
当我使用
ps -aux
检查正在运行的进程时,我没有看到应用程序正在运行。
如何确定系统完成重启后命令:
nohup java -Dgrails.env=prod -Duser.timezone=US/Mountain -jar RCRoadRaceWeb4-0.1.jar &
自动执行,这样我就不必在系统重新启动后手动运行此命令来启动 Grails 应用程序?
为将来的任何人记录上面的评论,因为他们最终提供了解决方案。
nohup
不会使进程在重新启动后保持运行。为此,您需要设置服务或使用 crontab。 (可能还有其他方法。)
要配置 systemd 服务,这里和其他地方有很多资源;我不会在这里重复他们的内容。 OP 发现了上面评论中包含的一些有用的链接,无论它们保持可用多久,但一般来说搜索“如何创建 systemd 服务”都会得到有用的结果。
作为一种更简单的方法,您可以在 crontab 中添加一行(
crontab -e
进行编辑),它将在重新启动时调用脚本:@reboot /path/to/script.sh
此脚本可以启动您需要的任何内容,例如数据库和应用程序。
我个人会推荐 systemd 方法,因为它更强大,但 crontab 完全足以用于本地开发和测试,而且可能更简单。