У меня есть программа, которая, когда получает SIGUSR1
, записывает некоторые выходные данные и завершает работу.Я пытаюсь заставить sbatch
уведомить эту программу до истечения времени ожидания.
Я ставлю программу в очередь:
sbatch -t 06:00:00 --signal=USR1 ... --wrap my_program
, но my_program
никогда не получает сигнал.Я попытался отправить сигналы во время работы программы, с: scancel -s USR1 <JOBID>
, но безуспешно.Я также попытался scancel --full
, но он убивает оболочку, а my_program
не уведомляется.
Один из вариантов - написать файл bash, который оборачивает my_program и перехватывает сигнал, перенаправляя его на my_program
(аналогичнона этот пример ), но мне не нужен этот громоздкий bash-файл для чего-либо еще.Кроме того, в документации sbatch --signal
очень четко сказано, что когда вы хотите уведомить конвертирующий файл Bash, вам необходимо указать signal=B:
, поэтому я считаю, что оболочка Bash на самом деле не нужна.
Итак,Есть ли способ отправить сигнал SIGUSR1 в программу, поставленную в очередь с помощью sbatch --wrap
?