¿Cómo se inicia un comando de bash que no se cierra al salir de Terminal?

2

Quiero ejecutar un comando, y no dejar que se cierre cuando se cierre el terminal.

Por ejemplo, si ejecuto top & ; disown , top se cierra cuando salgo de Terminal. Quiero mantener vivo top .

Sé que esto es posible ya que el comando open puede hacer esto. (Por ejemplo, open -e abre TextEdit, y cuando sale de la Terminal, TextEdit permanece abierto).

Gracias de antemano.

    
pregunta Flare Cat 07.09.2016 - 22:19

4 respuestas

3

Usar pantalla :

Para iniciar una sesión y un proceso dentro de la ejecución screen command (por ejemplo, screen top ). Sepárese de la sesión con ctrlActrl D .

Ahora puede cerrar la ventana de sesión de Terminal o salir de Terminal y el proceso iniciado anteriormente todavía se está ejecutando.

Después de (re) iniciar Terminal, puede obtener una lista de todas las sesiones separadas con screen -list . Use el pid para volver a vincularse a una sesión: screen -R [pid] . Para detener el proceso de la sesión reincorporada, utilice los comandos comunes (por ejemplo, ctrl C para top ) y exit para detener la sesión.

Si desea iniciar un proceso en un nuevo uso de sesión inmediatamente separada: screen -d -m command (por ejemplo, screen -d -m top ). Esto creará una nueva sesión de pantalla mientras recibe un nuevo indicador en su sesión de shell abierta actualmente.

Consulte man screen para obtener una descripción extensa, enlaces de teclas y personalizaciones.

    
respondido por el klanomath 07.09.2016 - 23:49
2

Creo que la clave aquí se basa en esta declaración:

  

Por ejemplo, si ejecuto top & ; disown, top se cierra cuando salgo de Terminal. Quiero mantenerme vivo.

En el momento en que sales de Terminal, este mata inmediatamente lo que estabas ejecutando. Aquí es donde multiplexores de terminal entran en juego.

La solución a esto es utilizar tmux .

tmux es un "multiplexor de terminal" pero una de las mejores características es que continúa ejecutándose incluso si cierra Terminal.

Desde su página man :

  

tmux es un multiplexor de terminal: permite crear, acceder y controlar un número de terminales desde una sola pantalla. tmux puede separarse de la pantalla y continuar ejecutándose en segundo plano, luego se vuelve a conectar.

Por lo tanto, si desea iniciar top , podría retirarse de él mientras continúa en segundo plano, incluso si el Terminal está cerrado.

tmux está disponible a través de homeberew y MacPorts .

  • HomeBrew: sudo brew install tmux
  • MacPorts: sudo port install tmux

La información detallada sobre la instalación se puede encontrar en sus respectivos sitios.

En cuanto al uso de tmux , simplemente inicie Terminal y ejecute tmux . Obtendrá una pantalla de Terminal con una barra verde.

Ejecutar(porejemplo)top.

SaliryreiniciarTerminal.

Paraobtenerunalistadesesiones:

tmuxlist-sessions

0:1windows(createdWedSep718:13:212016)[132x24]

Adjuntaraesasesiónespecífica

tmuxattach-t0Ylasesiónvuelveasubir.

    
respondido por el Allan 08.09.2016 - 00:24
0

Cuando utilice un comando que desee continuar, normalmente agregaría algo a los efectos de:

nohup yourcommand &

El nohup evita que reciba señales de bloqueo, y el & Básicamente, se ejecuta en segundo plano para que pueda seguir haciendo lo suyo.

Espero que ayude!

    
respondido por el PDL 07.09.2016 - 22:51
-1

Algunos programas se inician como un proceso secundario de la ventana de Terminal, por lo que cerrarlo cerrará el programa. En ese caso, inicie dichos programas en un proceso separado en consecuencia:

  1. Introduzca la ruta completa al ejecutable en la línea de comando (/Applications/Safari.app/Contents/MacOS/safari)

  2. Use el comando abrir y la marca correspondiente, como -a para la aplicación ( abrir -a Safari ), que inicia las aplicaciones en un proceso separado ( pid). Una vez que se ejecute, puede simplemente cerrar la ventana del Terminal y la aplicación permanecerá abierta, en lugar de usar la ejecución ejecutable directa por cualquier medio que esté usando.

  3. El comando "osascript", que es el comando Terminal de OS X para ejecutar scripts de "arquitectura de scripts abierta" como AppleScript ( osascript -e 'aplicación abierta "Safari"' ).

Los tres tienen un medio separado para abandonar los procesos, pero son similares a cada uno de sus respectivos medios para iniciarlos.

Tenga en cuenta que estos no son los únicos tres, sino que son los comandos más arcanos disponibles para usted. Los proporciono porque creo que cualquiera que ejecute comandos en el terminal ya está familiarizado con todos y cada uno de los comandos disponibles en cada distribución estándar de UNIX / Linux / FreeBSD, y sabe fácilmente cómo usar los relevantes para generar, matar, suspender, bifurcar , reanudar, unir y separar hilos y procesos, que son el único motivo de existencia de FreeBSD como el sistema operativo instalado en las máquinas de la empresa más rentable del mundo.

De todos modos, una última cosa: solo el usuario actual puede ejecutar procesos usando los comandos anteriores; inicie los procesos con estos comandos bajo un usuario diferente, debe habilitar la cuenta de superusuario ( su ) y, a continuación, prefijar cada comando con sudo .

    
respondido por el James Bush 08.09.2016 - 03:37

Lea otras preguntas en las etiquetas