Я создал сценарий оболочки, который выполняет несколько процессов в фоновом режиме, а в конце прослушивает клавиатуру пользователя, когда нажата кнопка, она убивает ранее созданные процессы.Убить задание фонового задания внутри сценария оболочки
Что-то вроде:
#!/bin/sh
process_1 &
process_2 &
process_3 &
read -p "PRESS [ENTER] TO TERMINATE PROCESSES." PRESSKEY
kill -2 `jobs -p`
Обратите внимание, что я запускать процессы в фоновом режиме (позже &), я подумал, что, когда я делаю что-то вроде:
kill -2 `jobs -p`
всех заданий, выполняющихся в фон будет убит, но на самом деле он говорит мне, что моя команда недействительна, поэтому я предполагаю, что jobs -p
ничего не возвращает.
Любая идея о том, как убить process_1 process_2 и process_3 ?? Заранее спасибо.
Не могли бы вы опубликовать точную ошибку? Я могу думать о нескольких причинах, по которым это может не работать. Два из них: a) Команда заданий возвращает более одного процесса b) Команда заданий не возвращает никакого вывода – 735Tesla
Ошибка: «" »kill: Использование: kill [-s sigspec | -signum | - sigspec] [pid | job] ... или kill -l [exitstatus] "" " – Shotgun
Попробуйте добавить эту строку перед командой kill:' echo '$ (jobs -p) "' – 735Tesla