Как выполнить некоторые команды, в то время как фоновая задача скрипта bash скоро будет убита

suspend является встроенным bash,

suspend: suspend [-f]
Suspend shell execution.

Suspend the execution of this shell until it receives a SIGCONT signal.
Unless forced, login shells cannot be suspended.

Options:
  -f    force the suspend, even if the shell is a login shell

Exit Status:
Returns success unless job control is not enabled or an error occurs.

и как встроенные имеют приоритет, просто набрав suspend будет вести себя точно так, как вы описываете: оболочка блокирует, пока вы ее не убьете (если вы [ f4] он, он возобновляется).

То, что вы видите такое же поведение, вызывая его с помощью пути, является либо экспериментальной ошибкой, либо ошибкой в ​​оболочке. Я бы заподозрил бывшего перед последним.

1
задан 2 May 2013 в 18:18

2 ответа

Если вы не выполнили какой-либо код перед выполнением, вы можете использовать trap:

 #!/bin/bash
 trap "echo Exiting" SIGINT SIGTERM
 read        

Подробнее здесь.

1
ответ дан 24 May 2018 в 22:47
  • 1
    я читаю, чтобы понять, что SIGINT означает спасибо за ответ – Ahmed Zain El Dein 2 May 2013 в 18:53

Вам может понадобиться команда at:

at 3 hours <<END
backGround job commands 
END
1
ответ дан 24 May 2018 в 22:47
  • 1
    это закончится фоном спросить после этих 3 часов, правильно? – Ahmed Zain El Dein 2 May 2013 в 18:53
  • 2
    Нет, это запустит задачу через 3 часа, я думал, это то, что вы хотели. – glenn jackman 2 May 2013 в 19:23
  • 3
    hank u это хорошая информация, но это не то, что я хочу :) – Ahmed Zain El Dein 2 May 2013 в 19:49

Другие вопросы по тегам:

Похожие вопросы: