Для webapp, который я разрабатываю, у меня есть сценарий bash, чтобы следить за изменениями в источнике и обновлять текущую среду.Запуск и уничтожение серверов и наблюдателей из сценария bash
function app-serve {
python runserver.py
}
function compile-coffee {
inotifywait -e modity scripts | while read change; do
coffee -o js scripts
done
}
Теперь мне нужно эти две функции выполняются одновременно,
app-serve &
compile-coffee &
И ждать тоже
wait
Проблема в том, когда я хочу, чтобы остановить эти процессы, простой Ctrl-C
не делает этого. Когда я делаю Ctrl-C
, я возвращаю командный запрос, но процессы, выполняемые в функциях, все еще живы.
Есть ли способ сказать bash просто подождать, пока я не удалю Ctrl-C
, а затем убейте все подпроцессы?
Edit: Одно уточнение, я вижу python
процесс я начинаю в app-serve
функции является убит. Только inotifywait
и несколько процессов bash
свисают.
Ницца. Спасибо за информацию о ловушке. Но я хотел бы найти pids и убить их, а не 'killall'. Кроме того, когда я даю имя функции 'killall', он говорит' app-server: no process found'. –
Также см. Мои изменения кода в вопросе. –