Bash: запустить команду в течение n минут, а затем SIGHUP ее - PullRequest
18 голосов
/ 12 декабря 2010

Существует ли какая-либо команда bash / linux для запуска длительной команды, а затем ее уничтожения через n минут?Я думаю, я мог бы что-то взломать с помощью perl с помощью fork и kill, но кто-нибудь знает что-то уже там?

Ответы [ 3 ]

32 голосов
/ 13 декабря 2010

См. Команду timeout в большинстве дистрибутивов GNU / Linux.

timeout -sHUP 10m command

Та же функциональность может быть достигнута с помощью http://www.pixelbeat.org/scripts/timeout

18 голосов
/ 12 декабря 2010

Попробуйте с этим, он запускает вашу команду в фоновом режиме, сохраняет ее PID в $ P, ждет некоторое время и убивает его с SIGHUP.

yourCommand & PID=$!
sleep ${someMinutes}m
kill -HUP $PID

Cheers

PS: это предполагает сон, который знает о Нм (минутах), в противном случае, вы можете захотеть сделать некоторую математику:)

10 голосов
/ 13 декабря 2010
n=5
some_command &
pid=$!
at now + $n minutes <<<"kill -HUP $pid"

Преимущество использования at перед ожиданием sleep состоит в том, что ваш скрипт не будет блокировать ожидание окончания сна. Вы можете пойти и сделать другие вещи, и at будет запускаться асинхронно в указанное время. В зависимости от вашего сценария это может быть очень важной функцией.

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