除了使用 nohup,生产环境如何启动 Java 应用?

2020-12-01 10:10:36 +08:00
 zealinux

现在都是使用nohup java -jar x.jar > /tmp/x.log 2>&1 &

但其实没考虑到一个问题,如果云上虚拟机器挂了,或重启了。(这个发生过) 就需要自己手动去启动。

如果事故发生再夜里,手动启动就相当痛苦。

有没有合适的方法?

ubuntu 18.04 Java 1.8

6777 次点击
所在节点    程序员
58 条回复
echowuhao
2020-12-01 10:12:40 +08:00
systemd
kiddingU
2020-12-01 10:13:10 +08:00
很多呀,比如 supervisor
securityCoding
2020-12-01 10:13:56 +08:00
多节点部署,简单点前面可以挂个 nginx 定时检查 api,单节点再折腾也没法保证高可用性。
Xusually
2020-12-01 10:15:12 +08:00
自己写一套 systemctl 脚本,或者用 systemd
JokerLiang
2020-12-01 10:15:19 +08:00
上 docker
yalin
2020-12-01 10:15:48 +08:00
system V
cike
2020-12-01 10:17:37 +08:00
systemd
supervisor
msg7086
2020-12-01 10:18:13 +08:00
用正确的方法呗(指用服务管理器)。
GM
2020-12-01 10:26:01 +08:00
java service wrapper,a.k.a jsw 值得你拥有。
dark3212
2020-12-01 10:29:39 +08:00
supervisor
就算用 nohup 你也可以添加到开机启动命令里来达到重启自动启动的效果。
yanzhiling2001
2020-12-01 10:42:00 +08:00
systemd 开机自启动
开始我还以为要后台运行,用 nohup
xiaoz
2020-12-01 10:48:08 +08:00
systemd 吧,挺方便的。
zifangsky
2020-12-01 10:50:37 +08:00
这个帖子不错,很有参考价值,感谢各位的回答!
FullBridgeRect
2020-12-01 10:52:50 +08:00
systemd supervisord 这些服务管理器都不错
kiddingU
2020-12-01 10:52:58 +08:00
systemd supervisor docker k8s 都行~~
Cbdy
2020-12-01 11:03:30 +08:00
systemd
kingfalse
2020-12-01 11:13:47 +08:00
搞个简单的 shell 脚本死循环,完美解决
#!/bin/bash
while [ 1 ]
do
java -jar xxx.jar
done
kingfalse
2020-12-01 11:14:12 +08:00
一个敢死,一个敢埋,稳的一批
oneisall8955
2020-12-01 11:28:15 +08:00
@kingfalse #17 你的操作 666 !
Weixiao0725
2020-12-01 11:44:44 +08:00
java 这种已经屏蔽底层的语言还要外面再包个 docker,套娃吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/730836

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX