Как прекратить выполнение команды, которая выполняется бесконечно в сценарии оболочки? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть эта команда в моем сценарии оболочки, которая выполняется вечно - она ​​не завершится, если я не выполню ctrl-c.Я пытался посмотреть, как отправить сигнал ctrl-c в скрипт, и все ответы были чем-то вроде kill $!или убить $$ или что-то подобное.Моя проблема в том, что команда никогда не завершается, поэтому она никогда не переходит к следующей команде, такой как мои команды "kill" или что-то еще.Я должен вручную нажать ctrl-C в моем терминале, чтобы он даже выполнил kill $ !.Я уверен, что есть способ обойти это, но я не уверен, что.Заранее спасибо!

1 Ответ

0 голосов
/ 11 октября 2018

Существует несколько подходов к этой проблеме.Самое простое (но не самое надежное) - это (возможно) просто запустить вашу долгосрочную команду в фоновом режиме:

#!/bin/sh

long-running-command &   # run in the background
sleep 5  # sleep for a bit
kill %1  # send SIGTERM to the command if it's still running
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...