Запуск и уничтожение серверов и наблюдателей из bash-скрипта - PullRequest
0 голосов
/ 24 января 2012

Для веб-приложения, которое я разрабатываю, у меня есть скрипт 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, а затем убить все подпроцессы?

Редактировать : В одном разъяснении я вижу процесс python, который я запускаю в app-serve функция убита . Только inotifywait и пара bash процессов висят.

1 Ответ

1 голос
/ 24 января 2012

Вы можете перехватить сигнал ctrl-c в вашем bash-скрипте и заставить его выполнить функцию, которая находит процессы и убивает их.

См. http://hacktux.com/bash/control/c

Возможно что-то вроде killall app-server и killall compile-coffee.

Не забудьте выйти из скрипта bash с вызовом exit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...