Я хочу ограничить время a grep
команде процесса позволяют работать или быть живой.
Например. Я хочу выполнить следующее:
grep -qsRw -m1 "parameter" /var
Но прежде, чем работать grep
команда я хочу ограничить сколько времени grep
процесс должен жить, сказать "нет" дольше, чем 30 секунд.
Как я делаю это?
И если это может, как я возвращаю или сбрасываю для наличия предела впоследствии.
Можно использовать timelimit, это доступно в человечности по умолчанию, или Вы могли скомпилировать его сами.
timelimit выполняет команду и завершает порожденный процесс после данного времени с данным сигналом. Сигнал “предупреждения” отправляется сначала, затем, после того, как тайм-аут, сигнал “уничтожения”, подобный пути init (8), будет воздействовать на завершение работы.
Вот являются некоторые немного hackish ударом для этого:
grep -qsRw -m1 "parameter" /var &
GREPPID=$!
( sleep 30; kill $GREPPID ) &
fg $GREPPID
В основном это запускает поиск в фоновом режиме, затем запускает подоболочку, которая ожидает 30 секунд и затем уничтожает поисковый процесс. Если поиск займет <30-е, то процесс уже будет мертв. Это не прекрасная идея уничтожить процесс, это уже мертво, так как существует очень маленький шанс, что-то еще снова использует pid, но для чего-то вроде этого, что это обычно хорошо. Наконец, поиск отложен на переднем плане и будет работать, пока он не заканчивается или уничтожается.
Создайте новый файл, названный "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, иначе можно добавить его).