2012-06-15 9 views
5

Estoy escribiendo un script y en algún momento llamo a "command1" que no se detiene hasta que se invoca CTRL + C.Comandos Linux - abortar operación con timeout

  1. ¿Hay alguna manera de establecer un tiempo de espera para un comando? Me gusta: command1 arguments -timeout 10
  2. ¿Cómo escribo un comando CTRL + C en forma textual?

Thx!

+0

¿Qué quiere decir exactamente enviando Ctrl + C en forma de texto? – betabandido

Respuesta

6

Usted puede utilizar el comando timeout de GNU coreutils (puede que tenga que instalar primero, pero se trata en la mayoría, si no todas, las distribuciones de Linux):

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

Por ejemplo:

timeout 5 ./test.sh 

terminará el script después de 5 segundos de ejecución. Si desea enviar una señal KILL (en lugar de TERM), use el indicador -k.

Here Tiene la descripción completa del comando timeout.

0

Sólo traté

jekyll -server & sleep 10;pkill jekyll 

se pudo hacer en su situación.

+1

Advertencia: matará todos y cada uno de los procesos llamados "jekyll" con esto. Es mucho mejor guardar el PID del que te interesa (está en '$!' Después de que se lanza el comando) y matar a ese. – Celada

-1

en su secuencia de comandos puede establecer una espera. wait 10 esperaría 10 segundos y en cuanto a salir del programa sin CTRL + C busque en el comando exit. Si usa exit 0, significa que está bien. Hay diferentes versiones, pero no sé lo que significan exactamente fuera de mi cabeza.

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

actualización


@ Celada

No hay necesidad de golpear. Podrías haber dicho "quizás no entendiste la pregunta correctamente" Stackoverflow está aquí para ayudar a la gente a aprender, no para derribarlos. Inventaron a Reddit por eso. En cuanto a los códigos de salida, puede forzar al programa a salir emitiendo el comando exit() con un código. Directamente desde 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

Esto no tiene sentido. Eso no es en absoluto lo que hace el comando 'wait', y no tengo idea de cómo se quiere decir' exit' para ser utilizado. – Celada