这可能是一个特定于群集的问题,只能由管理员解决,但是当我有一个低优先级的工作并且出现一个高优先级时,该过程就会被终止。
高优先级作业完成后,重新启动低优先级作业。在用户端有没有办法让它暂停在最初通过SIGSTOP启动的机器上,或者什么东西没有杀死进程?不幸的是,检查点不是一个选项,所以我希望能够在不丢弃内存的情况下保住工作。
我们确实有ssh到这台机器,所以如果所有其他方法都失败了,我很想做一个非常草率的脚本黑客来获得理想的行为:
1. start the process locally
2. send a SIGSTOP
3. make the job script send SIGCONT and just spin watching the process
4. when the job gets suspended, send a SIGSTOP again
5. when the job gets resumed, it should just send a SIGCONT
但我更愿意在SGE内做所有事情以避免任何令人讨厌的惊喜
答案 0 :(得分:1)
SGE中的挂起/停止机制由属性suspend_method
,resume_method
和terminate_method
按队列控制。默认值为:
suspend_method
- 发送SIGSTOP resume_method
- 发送SIGCONT terminate_method
- 发送SIGKILL 除了弄乱默认值,我看不出SGE杀死作业的其他原因,而不是阻止它们。