Chcę ograniczyć czas, w którym grep
polecenie procesu może działać lub być aktywne.
Na przykład. Chcę wykonać następujące czynności:
grep -qsRw -m1 "parameter" /var
Ale przed uruchomieniem grep
polecenia chcę ograniczyć czas trwania grep
procesu, powiedzmy nie dłużej niż 30 sekund.
Jak mam to zrobic?
A jeśli to możliwe, w jaki sposób mogę wrócić lub zresetować, aby nie mieć później limitu czasu.
timeout
, a nawet masz instrukcje, jak je zainstalować. Nieuprzejmie jest zignorować tę odpowiedź, a następnie powielić swoje pytanie.Odpowiedzi:
Możesz użyć timelimit , jest on dostępny w domyślnym ubuntu lub możesz go skompilować samodzielnie.
timelimit wykonuje polecenie i kończy odradzany proces po określonym czasie z danym sygnałem. Najpierw wysyłany jest sygnał „ostrzegawczy”, a następnie po upływie limitu czasu sygnał „zabijania”, podobny do sposobu działania init (8) przy wyłączaniu.
źródło
sudo aptitude install timelimit
. Działa świetnie po zainstalowaniu.Oto trochę lekko hackish bash za to:
Zasadniczo rozpoczyna wyszukiwanie w tle, a następnie uruchamia podpowłokę, która czeka 30 sekund, a następnie zabija proces wyszukiwania. Jeśli wyszukiwanie zajmie mniej niż 30 sekund, proces będzie już martwy. Zabicie procesu, który już jest martwy, nie jest świetnym pomysłem, ponieważ istnieje bardzo mała szansa, że coś jeszcze wykorzysta pid, ale w przypadku czegoś takiego ogólnie jest w porządku. Na koniec wyszukiwanie jest odkładane z powrotem na pierwszy plan i będzie trwało, dopóki się nie zakończy lub nie zostanie zabite.
źródło
Utwórz nowy plik o nazwie „tgrep” i umieść w nim następujące elementy (lub nazwij go, jak chcesz):
Następnie uruchom
chmod a+x tgrep
. Teraz, jeśli chcesz go użyć, możesz wpisaćMożesz też użyć go jako tgrep (bez ./ i móc go używać z dowolnego katalogu), jeśli umieścisz go w katalogu zawartym w zmiennej $ PATH (np. / Home / dan / bin /, jeśli to jest w twoja zmienna $ PATH, w przeciwnym razie możesz ją dodać).
źródło