我有一个程序,当它收到 a 时SIGUSR1
,会写入一些输出并退出。我试图sbatch
在超时之前通知这个程序。
我使用以下方法将程序排入队列:
sbatch -t 06:00:00 --signal=USR1 ... --wrap my_program
但my_program
从未收到信号。我尝试在程序运行时发送信号,使用: scancel -s USR1 <JOBID>
,但没有任何成功。我也试过scancel --full
了,但它会杀死包装器并且my_program
没有收到通知。
一种选择是编写一个包装 my_program 并捕获信号的 bash 文件,将其转发到my_program
(类似于此示例),但我不需要这个繁琐的 bash 文件来处理其他任何事情。此外,sbatch --signal
文档非常清楚地表明,当您想要通知封装的 bash 文件时,您需要指定signal=B:
,所以我认为 bash 包装器并不是真正需要的。
那么,有没有办法将 SIGUSR1 信号发送到使用 排队的程序sbatch --wrap
?