2011-11-22 37 views
18

Estoy usando mac/linux y sé que ctrl-z detiene el comando actualmente en ejecución en el terminal, pero con frecuencia veo que el proceso todavía se está ejecutando cuando reviso el monitor del sistema. ¿Cuál es la forma correcta de detener un comando en la terminal?Forma correcta de salir del programa de línea de comando?

Normalmente me encuentro con este problema cuando ejecuto aplicaciones python o ruby, no estoy seguro si eso tiene algo que ver con eso, solo pensé en agregar eso.

+0

si hace ctrl-z y luego escribe exit cerrará las aplicaciones en segundo plano. –

+0

Todavía veo el proceso después de ejecutar exit –

+0

ctrl-C no es lo suficientemente bueno? –

Respuesta

35

Usando de control-z suspende el proceso (ver la salida de stty -a que enumera la carrera de llave debajo de susp). Eso lo deja en ejecución, pero en animación suspendida (por lo que no utiliza ningún recurso de la CPU). Se puede reanudar más tarde.

Si desea detener un programa permanente, entonces cualquiera de interrupción (a menudo de control-c) o salir (a menudo control- \) se detendrá el proceso, este último produce un volcado de memoria (a menos que' ve deshabilitado). También puede utilizar una señal HUP o TERM (o, si es realmente necesario, la señal KILL, pero pruebe primero las otras señales) enviadas al proceso desde otra terminal; o puede usar control-z para suspender el proceso y luego enviar la amenaza de muerte desde el terminal actual, y luego devolver el proceso (a punto de morir) al primer plano (fg).

Tenga en cuenta que todas las combinaciones de teclas están sujetas a cambios a través del comando stty o equivalentes; los valores predeterminados pueden variar de un sistema a otro.

+3

Buena respuesta. También mencionaría 'bg', que es lo opuesto a' fg'. Le permite reanudar la ejecución de su programa en segundo plano para que pueda usar sus terminales para otra cosa. Algo relacionado es 'desaprobación', que le permite desconectar su programa en segundo plano del terminal para que continúe ejecutándose incluso si cierra el terminal. Para ver qué tareas está controlando su shell, use el comando 'jobs'. –

2

si haces ctrl-z y luego escribes exit cerrará las aplicaciones en segundo plano.

Ctrl+Q es otra buena manera de matar la aplicación.

+0

¿Qué tecla? está 'control-q' mapeado en tu sistema? Normalmente es el 'start' (para reanudar la salida después de usar' control-s' para detener la salida). –

+0

Me acabo de dar cuenta en realidad después de probar que esto solo funciona en mi Mac. Pensé que era universal. Cuándo acuñar y probarlo después de notar que nadie lo publicó como una opción. y es 'ctrl-shift-q'. pero todo lo que hizo por mí en Linux fue cerrar la terminal. No es lo que el usuario quiere. –

1

Tome un vistazo a Job Control on UNIX systems

Si usted no tiene el control de su concha, simplemente pulsando ctrl +C debe detener el proceso. Si eso no funciona, puedes probar ctrl + Z y usar jobs y kill -9 %<job #> para matarlo. El '-9' es un tipo de señal. Puede man kill para ver una lista de señales.

Cuestiones relacionadas