У меня есть launch.sh
скрипт, который я представить на кластере сЭкспедиторские сигналы в Баш скрипт, который представлен на кластере
bsub $settings < launch.sh
Этот launch.sh
Баш скрипт выглядит упрощена следующим образом:
function trap_with_arg() {
func="$1" ; shift
for sig ; do
echo "$ES Installing trap for signal $sig"
trap "$func $sig" "$sig"
done
}
function signalHandler() {
# do stuff depending in what stage the script is
}
# Setup the Trap
trap_with_arg signalHandler SIGINT SIGTERM SIGUSR1 SIGUSR2
./start.sh
mpirun process.sh
./end.sh
Где process.sh вызывает два двоичных файла (в качестве примера) как
./binaryA
./binaryB
Мой вопрос: Кластер уже отправляет SIGUSR1 (прибл. 10 минут до SIGTERM) к процессу (я думаю, что это оболочка bash
с моим сценарием launch.sh
).
В данный момент я улавлю этот сигнал в сценарии launch.sh
и вызываю некоторый обработчик сигнала. Проблема заключается в том, этот обработчик сигнала только запускается на выполнение (по крайней мере то, что я знаю), после того, как работает команда закончена (например, это может быть mpirun process.sh
или ./start.sh
)
Как я могу передать эти сигналы, чтобы сделать выход команд/двоичные файлы корректно , Например, пересылка, например, process.sh
(mpirun
), как я уже испытал, уже передал полученные сигналы (как это делается?) Каков правильный способ пересылки сигналов (например, также в двоичные файлы binaryA, binaryB
? У меня нет действительно хороших ключ, как это сделать создание команды выполняются в фоновом режиме, создавая дочерний процесс
Спасибо за некоторое просветление :-)