- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
目前在我的工作场所,我有一个名为“batch launcher”的脚本(用 bash
编写),它应该监督批处理的执行,记录它们的输出并处理批处理的返回码.目前这是通过此“批量启动器”中的 env
调用完成的:
env $BATCH_ENV $BATCH_NAME $BATCH_OPTIONS >> $OUT_FILE 2>&1
几天前,用 perl
编写的批处理之一对 PGID 进行了 kill 调用(以消除所有 fork 的 child ),并且由于“批处理启动器”与它生成的任何东西共享 PGID,它得到了也被这个电话杀死了。
我应该如何正确地确保任何 PGID 终止调用都会使“批处理启动器”完好无损,并报告它正在监督的进程已被终止?
到目前为止,我听说过 setsid -w
命令可以解决这个问题,但我无法将它与 env
调用结合使用。
最佳答案
我犯了一个愚蠢的错误,就是查阅在线文档而不是在我当前工作的系统中调用 man
。这page声明 setsid
支持标志,日期为 2014 年 7 月。我的手册页日期为 1993 年 11 月(我在 RHEL 5 上工作),并且没有任何标志支持。
发生的事情是 setsid
试图将 -w
标志解析为文件名,导致 execvp: No such file or directory错误。一旦我删除了标志,一切正常。结束命令现在看起来像:
env $BATCH_ENV setsid $BATCH_NAME $BATCH_OPTIONS >> $OUT_FILE 2>&1
现在从“批量启动器”启动的任何东西都被分配了等于 $BATCH_NAME
的 PID 的 SID 和 PGID,并且终止对 $BATCH_NAME
的 PGID 的调用留下“批处理启动器”不受影响,它现在愉快地报告返回状态 143 (SIGTERM
)。
关于linux - 如何实现一个流程来监督另一个流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40362415/
我想做的是改变我的主管,尽最大努力让 children 运行,但如果他们的崩溃率超过强度,就放弃。这样剩下的 child 就可以继续跑。不过,这对于现有的主管配置来说似乎是不可能的,所以看起来我唯一的
我正在处理一个大型推文数据集,我从中将一小部分数据训练为四个手动分类的类别。每个手动分类大约有二十条推文,而数据集有数万条推文。这是我用来训练模型的代码。 from sklearn.feature_e
我的 celerybeat.conf [program:celerybeat] command=/path/app/env/bin/celery beat -A project.tasks --log
正如 ZooKeeper 的文档中所说,有必要使用 daemontools 之类的工具对其进行监督。但是文档没有提供任何示例,我知道启动 ZooKeeper 的唯一方法是运行 bin/zkServer
谁能给我解释一下这个例子中的 uibutton 目标功能: 我有一个 ViewController。我向这个 View Controller 添加了一个带有两个按钮的 uiview。一个按钮是在 in
我最近熟悉了 Erlang/OTP 技术,我想将其应用于监控和监督 Java 应用程序: 检测他们的可用性 启动和停止它们 换句话说,我希望 Java 应用程序被 Erlang OTP 主管基础架构视
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: What are MVP and MVC and what is the difference? 我在网站上
我是一名优秀的程序员,十分优秀!