Уничтожьте процесс после того, как будет позволено работать в течение некоторого времени

Я хочу ограничить время a grep команде процесса позволяют работать или быть живой.

Например. Я хочу выполнить следующее:

grep -qsRw -m1 "parameter" /var

Но прежде, чем работать grep команда я хочу ограничить сколько времени grep процесс должен жить, сказать "нет" дольше, чем 30 секунд.

Как я делаю это?

И если это может, как я возвращаю или сбрасываю для наличия предела впоследствии.

12
задан 26.07.2010, 07:43

3 ответа

Можно использовать timelimit, это доступно в человечности по умолчанию, или Вы могли скомпилировать его сами.

timelimit выполняет команду и завершает порожденный процесс после данного времени с данным сигналом. Сигнал “предупреждения” отправляется сначала, затем, после того, как тайм-аут, сигнал “уничтожения”, подобный пути init (8), будет воздействовать на завершение работы.

11
ответ дан 07.12.2019, 11:53

Вот являются некоторые немного hackish ударом для этого:

grep -qsRw -m1 "parameter" /var &

GREPPID=$!

( sleep 30; kill $GREPPID ) &

fg $GREPPID

В основном это запускает поиск в фоновом режиме, затем запускает подоболочку, которая ожидает 30 секунд и затем уничтожает поисковый процесс. Если поиск займет <30-е, то процесс уже будет мертв. Это не прекрасная идея уничтожить процесс, это уже мертво, так как существует очень маленький шанс, что-то еще снова использует pid, но для чего-то вроде этого, что это обычно хорошо. Наконец, поиск отложен на переднем плане и будет работать, пока он не заканчивается или уничтожается.

7
ответ дан 07.12.2019, 11:53

Создайте новый файл, названный "tgrep", и вставьте его следующее (или назовите он вообще Вы хотите):

#!/bin/bash
grep $@ &
PID=$!
sleep 30 && kill $PID 2>/dev/null &
wait $PID
exit 0

Затем, выполненный chmod a+x tgrep. Теперь, если Вы хотите использовать его, можно ввести

./tgrep -i "results" /home/dan/*txt

Или можно просто использовать его в качестве tgrep (без./и смочь использовать его из любого каталога) при размещении его в каталог, содержавшийся в переменной $PATH (как/home/dan/bin/, если это находится в переменной $PATH, иначе можно добавить его).

4
ответ дан 07.12.2019, 11:53

Теги

Похожие вопросы