¿Cómo detengo un script bash desde la línea de comando?

¿Cómo detengo un script bash desde la línea de comando?

Tengo un script bash que uso para ejecutar XCode en OS X, lo que lleva varios minutos. No puedo encontrar el comando de teclado para detenerlo si me doy cuenta de un error... en DOS estoy acostumbrado Ctrl+C/ Ctrl+Zpero ninguno parece funcionar. ¿Qué estoy buscando (en el terminal OS X estándar)?

Respuesta1

Hay algunas pulsaciones de teclas que deberían ayudarle aquí.

Ctrl+ Cdebería enviar el proceso de primer plano SIGINT, y eso debería finalizar el proceso a menos que capture la señal con algo como trap INT ...en su código de shell.

Ctrl+ Zdebería enviar SIGSTOP, lo que pausaría su proceso nuevamente, a menos que atrape sus señales.

El mapeo de secuencias de teclas salta algunos obstáculos, incluida la configuración del terminal. ¿Qué stty -adice en tu computadora? Busque en el resultado intr, esa es la pulsación de tecla que debería activar SIGINT. Si no hay nada configurado, debe configurarlo, algo comostty intr ^C

Como han dicho otros, también puedes finalizar el proceso desde otra ventana.

Respuesta2

Si Ctrl+ Cno funciona para usted, puede abrir una nueva pestaña de Terminal y escribir

killall [process name]

¿Dónde [process name]está el nombre de su script bash (puede encontrarlo en el Monitor de actividad de OS X)?

Respuesta3

Puedes probar estas soluciones:

  • prueba esta combinación de teclado: Ctrl+ AltGr+8
  • abre una nueva terminal y ejecutapkill -f script_name

Respuesta4

Para agregar a lo que otros usuarios han dicho, también puede usar Ctrl+ \que envía SIGQUITy es lo mismo SIGINTexcepto que también produce un volcado de núcleo. He descubierto que los programas que ignoran SIGINTa menudo no ignoran SIGQUIT.

Basado en elpágina de manual para matar, también puedes enviar un SIGTERMo SIGKILLa cualquier proceso. Para lograr esto, busque su proceso en la tabla de procesos (escriba ps) y luego escriba kill -15 [pid]enviar un SIGTERMo kill -9 [pid]enviar un SIGKILL(SIGKILL no se puede ignorar y finalizará el proceso pase lo que pase).

Fuente 1yFuente 2

información relacionada