Lanzo aplicaciones desde la Terminal con comandos como este:
/Applications/Mail.app/Contents/MacOS/Mail &
La parte importante es la &
.
Para Unix / Linux / Solaris:
- Aprendí en la escuela que agregar
&
el programa hace que el programa viva solo. - Recuerdo haber lanzado un comando como
xeyes &
y hacer que el programa se ejecute de manera segura incluso después de cerrar el shell.
- Aprendí en la escuela que agregar
En Mac OS X (Unix dentro):
- Lanzo una aplicación con
&
y cierro la ventana de Terminal: ¡la aplicación se cierra! - ¿Por qué ocurre este comportamiento indeseable en Mac OS X?
- Cómo se puede arreglar esto ?
- Lanzo una aplicación con
macos
terminal
applications
command-line
unix
Nicolas Barbulesco
fuente
fuente
Respuestas:
La forma "estándar" de lograr lo que desea lograr (en OS X, así como en Linux, FreeBSD u otros sistemas) es usar el comando
nohup
:Esto comenzará
program
, que se ejecutará en segundo plano en relación con el shell debido a&
- e ignorará las señales de bloqueo debido al comando nohup.De esta manera, el programa seguirá ejecutándose aunque cierre el shell. No importa si está cerrando el shell porque está cerrando Terminal.app, o si está cerrando el shell porque se está desconectando de una conexión ssh a la computadora, o similar.
fuente
nohup.out
en la carpeta actual. Incluso cuando no hay nada que escribir. Después de algunas semanas, tendría archivosnohup.out
en todas partes en mi Mac. :-(nohup command>/dev/null&
ocommand&disown
.Cuando cierra una ventana de terminal, envía un SIGHUP (señal de bloqueo) al shell, que luego envía SIGHUP a todos los procesos que inició . Este es el comportamiento tradicional para bash y muchos otros shells, y la solución tradicional para esto es usar nohup.
Hay diferentes maneras en que las diferentes máquinas Unix pueden diferir, por lo que es posible que los emuladores de terminal específicos que utilizó o los shells específicos que utilizó se comportaron de manera diferente. Pero no es específico para OS X. Por ejemplo, hay una pregunta sobre este mismo problema en Ubuntu.
fuente
Usando el signo "
&
", le está diciendo a Terminal que ejecute el proceso en el fondo del shell. Por lo tanto, cuando cierra el shell (y elimina el proceso), también se cerrará la GUI (Mail.app).El comando correcto para iniciar Mail desde la terminal es simplemente:
Editar: Acabo de encontrar esto en U&L Stack Exchange: ¿Qué significa ampersand al final de una línea de script de shell? ¡Las respuestas proporcionadas son excelentes y explican exactamente lo que está sucediendo con más detalle y mejor que nunca! Recomiendo leerlo.
fuente
/Users/nicolas/Desktop/Firefox-29-fr/Firefox.app/Contents/MacOS/firefox -profile "/Users/nicolas/Desktop/Firefox-29-fr/Profil-Firefox-29-fr/" -no-remote &
/Applications
, sino en una ruta específica? Así:/Users/nicolas/Desktop/Firefox-29-fr/Firefox.app/Contents/MacOS/firefox -profile "/Users/nicolas/Desktop/Firefox-29-fr/Profil-Firefox-29-fr/" -no-remote &
open -a Applications/Mail.app/Contents/MacOS/Mail; exit
@jksoegaard tiene los comandos adecuados, pero como mencionó en el comentario, crea un archivo nohup.out. Para evitar que se cree el archivo nohup.out, debe redirigir STDOUT y STDERR a otro lugar. El comando completo sería
nohup program &>/dev/null &
. Esto ejecutará su programa en segundo plano, ignorando SIGHUP y enviando todo STDOUT y STDERR a / dev / null.Sin embargo, si no recuerda agregar nohup (como en su pregunta original), puede usar el
disown -arh
comando para marcar todos los trabajos en ejecución en segundo plano para ignorar el SIGHUP.fuente
He encontrado la solución :
(/Applications/Mail.app/Contents/MacOS/Mail &)
¡Es simple, es bonito y funciona!
Los paréntesis
( )
inician el comando en un sub-shell.fuente
O puedes intentar
open -a /Applications/Mail.app
fuente
He encontrado una solución: luchar contra el mal con el mal.
Lanzo mi aplicación con este tipo de comando:
/Applications/Mail.app/Contents/MacOS/Mail & exit
La cáscara sale a la vez. Y la aplicación sobrevive, incluso después de cerrar la ventana de Terminal.
Pero esta solución no es muy útil.
fuente
/Applications
, y no incluidas en mi Mac..app
Las carpetas se denominan "paquetes" y elopen
comando puede iniciarlas tanto si están en la/Applications
carpeta como en cualquier otra carpeta. El término "paquete" en este contexto no significa "enviado con OS X".