Убить фоновые процессы, запущенные сценарием bash

Я хотел бы запустить CoffeeScript и Sass компиляторы в фоновом режиме, и быть в состоянии убить их обоих сразу. У меня есть сценарий bash start, например:

coffee --watch -o assets/ -c src/ &
sass --watch src:assets &

при запуске из файла сценария, они не появляются в списке заданий, так что я не могу убить их с:

kill `jobs -p`

как полагают в этой post. Они действительно появляются в ps вывод как прикрепленный к моему tty.

что хороший способ убить начатые процессы по моему start сценарий?

моя цель-запустить компиляторы с ./start и убить их с ./stop сценарий. Я использую OSX Lion.

изменить: основываясь на ответе grawity, теперь я использую:

coffee --watch -o assets/ -c src/ &
coffeepid=$!
sass --watch src:assets
kill $coffeepid

компилятор Sass жалуется, если он перестал использовать kill, поэтому я останавливаю его с помощью Ctrl-C, а затем убиваю фоновый компилятор CoffeeScript.

4
задан Community
02.03.2023 4:26 Количество просмотров материала 2548
Распечатать страницу

2 ответа

вы используете MacOS X. Система входит способ запуска пользовательских процессов демона, запуск и остановка их по желанию. (Правильное название для них в MacOS -агенты пользователей.)это launchd, и интерфейс к нему launchctl. Сделайте это один раз за сеанс входа в систему (при необходимости измените имена путей для компиляторов в абсолютной форме):

 launchctl submit -l com.example.coffee -- ${BINDIR}/coffee --watch -o assets/ -c src/
 launchctl submit -l com.example.sass -- ${BINDIR}/sass --watch src:assets

и в пуск/остановка сценарии:

 launchctl start com.example.coffee
 launchctl start com.example.sass
 launchctl stop com.example.coffee
 launchctl stop com.example.sass

No ужасно невезучий пид файлы. Отсутствие несоответствий grep в таблице процессов. Никаких мидий. Никакой суеты.

конечно, вы можете получить творческий со списком свойств, и добавить его к Library/LaunchAgents каталог, если хотите - простой список свойств файла не трудно сколотить. Но launchctl submit есть для nonce пользовательских агентов, как это.

4
отвечен JdeBP 2023-03-03 12:14

отфильтровать PID из ps, а затем кормить его, чтобы убить (убийство пинг в этом примере):

ps -A | grep ping | awk '{print }' | xargs kill
-2
отвечен MaQleod 2023-03-03 14:31

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх