java - 防止linux子进程在父进程终止时终止
问题描述
我需要在父进程终止后保持子进程运行。
在我的 Ubuntu 18(系统 D)上,我创建了一个服务来将我的java应用程序作为服务运行。
要开始它,我使用:
systemctl start my-service
这是my-service
服务单元定义:
[Unit]
Description=Java Linux Service
After=syslog.target
[Service]
User=root
WorkingDirectory=/root
ExecStart=/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -jar /root/my-service.jar
RestartForceExitStatus=2
[Install]
WantedBy=multi-user.target
在这个my-service
java 应用程序中,我启动了一个子进程(另一个 java 应用程序),我需要在停止后保持它运行。my-service
问题是,当我运行systemctl stop my-service
子进程时也终止了。
我尝试使用nohup
命令启动子进程,但没有成功,我的 java 代码:
Runtime.getRuntime().exec("houp java -jar child.jar");
有人可以提供一个想法如何解决这个问题?
解决方案
我在这里找到了解决方案。
我刚刚更改了我的服务描述单元,添加KillMode=process
如下:
[Unit]
Description=Java Linux Service
After=syslog.target
[Service]
User=root
WorkingDirectory=/root
ExecStart=/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -jar /root/linux-service.jar
RestartForceExitStatus=2
KillMode=process
[Install]
WantedBy=multi-user.target
推荐阅读
- mysql - 为什么当二进制日志选项打开时超级权限被禁用?
- html - 如何在 app_offline.htm 页面中添加字体系列
- android - 如何将文件从我的应用程序发送到另一个支持共享数据的应用程序
- titanium - 在 Appcelerator App 中导入 ios 模块后构建失败
- schema - 如何修复此架构标记,我收到错误代码 Duplicate key found
- python - 是否可以在批处理脚本中处理环境变量?
- sql - ORA-00908: Oracle SQL 中缺少 NULL 关键字(blob 数据类型)
- python - 无法使用 for 和 range 函数获得想要的输出
- javascript - 我无法通过 gmail-api 中的 id 检索邮件
- javascript - 粒子不会出现在粒子 div 上