eegmak
@eegmak

Как завершить запущенную утилиту в bash скрипте?

В скрипте баш, запускаю другой скрипт(консольную утилиту), который без завершения работает бесконечно.
Чтобы завершить скрипт в обычной консоли, нужно отправить ctrl-c, тогда скрипт корректно завершается и сохраняет результат.
Каким образом отправить эмуляцию нажатых клавиш в запущенную консольную утилиту в скрипте баш?
Пожалуйста, не спрашивайте какую консольную утилиту запускаю, вопрос общего характера, таких утилит много!
Как завершить запущенную в скрипте баш консольную утилиту/ отправить ctrl -c в эту утилиту?
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
paran0id
@paran0id
Умный, но ленивый
Вам не нужно эмулировать нажатие клавиш. Ctrl-C посылает процессу сигнал SIGINT. Вам нужно послать сигнал запущенному процессу, для этого нужно знать его PID. PID можно получить из pid-файла, если та консольная утилита его создает, либо через переменную $! (yourcommand & echo $!), либо грепнув по процессам (см. pgrep). Рассмотрите также сигналы SIGTERM и SIGKILL.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@dronmaxman
VoIP Administrator
Можно использовать таймер, по истечении времени - скрипт завершиться.

timeout 10 ping www.goooooogle.com
Ответ написан
Комментировать
@xibir
Реализация первого ответа:
somecommand &
sleep 10
kill $!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы