gpt4 book ai didi

perl - 将 SIGTSTP 信号传递给 LSF 作业中的所有进程

转载 作者:行者123 更新时间:2023-12-01 12:38:00 28 4
gpt4 key购买 nike

简而言之,问题陈述:LSF 中是否有一种方法可以将信号 SIGCONT/SIGTSTP 传递给作业中运行的所有进程?

我有一个在 LSF(版本 9.1.2)上运行的 Perl 包装器脚本,并在与 Perl 脚本相同的 LSF 机器上启动一个工具(源不可用)。

该工具启动 2 个进程,一个用于许可证管理,另一个用于执行实际工作。它还支持向两个进程发送 SIGSTSP/SIGCONT 将释放/重新获取许可证的选项(这是我希望实现的)。

正在运行 bkill -s SIGCONT <JOB_ID>只恢复工具进程而不恢复许可进程,这是一个问题。

我尝试查看是否可以将信号发送到 Perl 脚本自己的 PGID,但是许可进程启动了它自己的进程组。

欢迎通过 Perl 或 LSF 选项提出任何建议。

谢谢,阿比舍克

最佳答案

I tried to see if I can send the signals to the Perl script's own PGID, but the license process starts its own process group.

这可能是您的问题所在。 LSF 按进程组跟踪“作业中运行的进程”。如果您的工作生成一个在其自己的进程组中运行的进程(例如通过守护进程自身),那么它本质上是一个不受 LSF 控制的失控进程——管理它成为您工作的责任。

有关引用,请参阅“分离进程”部分 here .

至于选项:

  1. 我认为 cgroups 跟踪功能在很多情况下都有帮助,您可以询问管理员是否在 lsf.conf 中设置了 LSF_PROCESS_TRACKINGLSF_LINUX_CGROUP_ACCT。如果不是,那么您可以让他设置它们,看看是否对您的情况有帮助(您需要确保您运行的主机支持 cgroups)。在 9.1.2 中,此功能在安装时打开,因此由于各种原因(例如,您的主机没有启用 cgroups),此选项实际上可能无法为您提供帮助。
  2. 自行管理许可流程。如果您可以从 perl 脚本中找到许可进程的 PID/PGID,则可以为 SIGCONT/SIGSTP 安装自定义信号处理程序在您的脚本中使用 sigtrap 等,并在您的脚本通过 bkill 接收到它们时自行将它们转发给许可流程。参见 here .

关于perl - 将 SIGTSTP 信号传递给 LSF 作业中的所有进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34788400/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com