2012-06-15 8 views
5

Piszę skrypt i w pewnym momencie dzwonię do "command1", który nie zatrzymuje się, dopóki nie zostanie wywołany CTRL + C.Komendy dla systemu Linux - przerwać operację z limitem czasu

  1. Czy istnieje sposób na określenie limitu czasu dla polecenia? Na przykład: command1 arguments -timeout 10
  2. Jak napisać polecenie CTRL + C w formie tekstowej?

Thx!

+0

Co dokładnie masz na myśli wysyłając Ctrl + C w formie tekstowej? – betabandido

Odpowiedz

6

Można użyć komendy timeout z coreutils GNU (być może trzeba go najpierw zainstalować, ale to jest w większości, jeśli nie wszystkich, dystrybucje Linuksa):

timeout [OPTION] DURATION COMMAND [ARG]... 

Na przykład:

timeout 5 ./test.sh 

zakończy skrypt po 5 sekundach wykonania. Jeśli chcesz wysłać sygnał KILL (zamiast TERM), użyj flagi -k.

Here masz pełny opis polecenia timeout.

0

Ja tylko starałem

jekyll -server & sleep 10;pkill jekyll 

można zrobić w danej sytuacji.

+1

Ostrzeżenie: zabijesz wszystkie procesy zwane "jekyll". O wiele lepiej jest zapisać PID tego, który cię interesuje (jest w '$!' Po uruchomieniu polecenia) i zabić tylko tego. – Celada

-1

w swoim skrypcie możesz ustawić czas oczekiwania. wait 10 będzie czekać 10 sekund i jak wyjść z programu bez CTRL + C spójrz na polecenie exit. Jeśli używasz exit 0, oznacza to ok. Istnieją różne wersje, ale nie wiem, co one oznaczają dokładnie z mojej głowy.

exit 1 
exit 2..... so on and so forth 

Aktualizacja


@ Celada

Nie trzeba walnąć. Mogłeś właśnie powiedzieć "może nie zrozumiałeś poprawnie tego pytania" Stackoverflow jest tutaj, aby pomóc ludziom się uczyć, a nie ich zniszczyć. Wymyślili na to Reddita. Jeśli chodzi o kody wyjścia, możesz wymusić zakończenie programu, wydając komendę exit() z kodem. Bezpośrednio z linux.die.net.

Exit Code Number Meaning Example Comments 
1 Catchall for general errors let "var1 = 1/0" Miscellaneous errors, such as "divide by zero" 
2 Misuse of shell builtins (according to Bash documentation) Seldom seen, usually defaults to exit code 1 
126 Command invoked cannot execute Permission problem or command is not an executable 
127 "command not found" Possible problem with $PATH or a typo 
128 Invalid argument to exit exit 3.14159 exit takes only integer args in the range 0 - 255 (see footnote) 
128+n Fatal error signal "n" kill -9 $PPID of script $? returns 137 (128 + 9) 
130 Script terminated by Control-C Control-C is fatal error signal 2, (130 = 128 + 2, see above) 
255* Exit status out of range exit -1 exit takes only integer args in the range 0 - 255 
+0

To nie ma sensu. To wcale nie jest to, co robi komenda 'wait' i nie mam pojęcia jak masz na myśli' exit' do użycia. – Celada