2012-06-15 3 views
5

Ich schreibe ein Skript und irgendwann rufe ich "command1" auf, die nicht stoppt, bis es STRG + C aufgerufen wird.Linux-Befehle - Vorgang mit Timeout abbrechen

  1. Gibt es eine Möglichkeit, eine Zeitüberschreitung für einen Befehl anzugeben? Wie: command1 Argumente -timeout 10
  2. Wie schreibe ich einen STRG + C-Befehl in Textform?

Thx!

+0

Was meinen Sie genau, indem Sie eine Strg + C in Textform senden? – betabandido

Antwort

6

Sie können das timeout Befehl von GNU coreutils (möglicherweise müssen Sie es zuerst installieren, aber es kommt in den meisten, wenn nicht alle Linux-Distributionen):

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

Zum Beispiel:

timeout 5 ./test.sh 

beendet das Skript nach 5 Sekunden der Ausführung. Wenn Sie ein KILL-Signal (anstelle von TERM) senden möchten, verwenden Sie -k Flag.

Here Sie haben die vollständige Beschreibung des Befehls timeout.

0

Ich habe gerade versucht

jekyll -server & sleep 10;pkill jekyll 

Könnte für Ihre Situation zu tun.

+1

Warnung: Sie werden alle Prozesse namens "Jekyll" damit töten. Viel besser, um die PID desjenigen zu speichern, an dem Sie interessiert sind (nach dem Start des Befehls befindet es sich in $!) Und nur diesen zu töten. – Celada

-1

In Ihrem Skript können Sie eine Wartezeit einstellen. wait 10 würde 10 Sekunden warten und wie zum Beenden des Programms ohne CTRL + C Blick in den Befehl. Wenn Sie exit 0 verwenden, bedeutet das OK. Es gibt verschiedene Versionen, aber ich weiß nicht, was sie genau von meinem Kopf meinen.

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

aktualisieren


@ Celada

Keine Notwendigkeit einzuschlagen. Du hättest einfach sagen können: "Vielleicht hast du die Frage nicht richtig verstanden." Stackoverflow ist hier, um den Leuten zu helfen, sie zu lernen, nicht um sie niederzureißen. Sie haben Reddit dafür erfunden. Wie bei den Exit-Codes können Sie das Beenden des Programms erzwingen, indem Sie den Befehl exit() mit einem Code ausgeben. Direkt von 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

Das ergibt keinen Sinn. Das ist überhaupt nicht das, was der 'wait'-Befehl tut, und ich habe keine Ahnung, wie Sie' exit' meinen, um verwendet zu werden. – Celada

Verwandte Themen