一台服务器上的程序 1 启动了多个子程序(脚本启动,固定),这个时候程序 1 突然挂了,那么这些子程序还在跑着,这种场景有什么好的处理方式吗?最好是程序 1 突然挂了的时候能带走它启动的所有子程序?

查看 106|回复 7
作者:gzk329   
我记得是 Java Process 启动子进程,会随着主进程挂掉而一起挂掉,但是这个子进程的实际 processId 好像和获取的 processId 不一致,加了 1 ,所有选择的脚本启动,能解决这个问题,但是主程序挂了的话,子进程会失去控制

程序, 启动, 脚本, 突然

gzk329
OP
  
丢容器,程序 1 以 pid 1 启动,这样他挂了就整个容器都挂了。
cheng6563   
Linux 进程组
https://man7.org/linux/man-pages/man2/setpgid.2.html
https://man7.org/linux/man-pages/man2/prctl.2.html PR_SET_PDEATHSIG 小章节
至于 Java 要用什么 API 调用这个不了解
Mohanson   
Systemd 或者容器
killva4624   
daemon
ruanimal   
加例检吧?
eibici   
你是腾讯 TEG 的吧?最好弃用那俩垃圾框架
启动脚本开头设置个 trap ,收到 SIGCHLD 的话就 kill 掉 %1 %2 %3 等等子进程
启动脚本里多个进程都&启动,转入后台,变成%1 %2 %3
然后脚本末尾 wait
julyclyde   
@cheng6563 容器这个功能我们也是有的,但是把普通的和 docker 的分成两类了,现在得解决普通的异常场景...
您需要登录后才可以回帖 登录 | 立即注册

返回顶部