1 votos

¿Por qué algunas aplicaciones a través de la terminal de separar automáticamente y otros no?

Esto es una cosa interesante que he notado, por ejemplo:

  • Yo uso Átomo Editor y me llaman a través de mi Terminal usando:

    $ atom
    

    y presione Enter, lo cual activa el Editor y también hacer que el terminal cursor apunte a la nueva línea, por lo que es (Terminal) gratis para más utilidades de línea de comandos.

  • Sin embargo, cuando en uso de RhythmBox usando rhythmbox como terminal de comandos, se tiende a trabajar en el primer plano (supongo) y se mantiene la terminal ocupado hasta que cierre Rhythmbox o usar CTRL+C.

He intentado esto con texmaker demasiado y se realiza algo similar como Rhythmbox. Sé que & tomará el proceso en el fondo, pero hay una explicación lógica para algunas aplicaciones como los que se mencionan aquí?

Cualquier hacks o consejos para que yo pueda aprender a ajustar las cosas de esta manera?

Nota

Yo trate de usar CTRL+Z en las aplicaciones mencionadas arriba y las aplicaciones, a continuación, gris y no responde y tengo que forzar el cierre en ellos

Medio ambiente

  • El Uso De Ubuntu 16.10

  • Terminal De Gnome

  • echo $SHELL dar /bin/bash

3voto

Serg Puntos 17677

Como se ha señalado en los comentarios, este tipo de comportamiento es específico para cada aplicación. Las aplicaciones escritas en lenguaje de programación en C, por ejemplo, puede emplear setsid llamada a la desconexión del terminal de control, aunque requieren de llamar a fork() syscall primera. Python, también ha os.setsid() y os.fork() funciones; aunque es posible utilizar simplemente os.fork() a crear un proceso hijo y matar a los padres.

Otra técnica frecuente que los autores de software de uso es el lanzamiento de las aplicaciones a través de guión envoltorio, y llamar a un nuevo proceso a través de la nohup. Eso es exactamente lo atom hace:

$ file $(which atom)
/usr/bin/atom: Bourne-Again shell script, ASCII text executable
$ grep 'nohup' $(which atom)                                                            
    nohup "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$ATOM_HOME/nohup.out" 2>&1
      cat "$ATOM_HOME/nohup.out"

Usted puede hacer así como así. Por ejemplo, la forma en que tienden a poner en marcha programas y separarlas de la terminal es a través de una función, que lanza el programa deseado con nohup ya se anexa el comando:

runstuff() {
    nohup "$@" >/dev/null 2>&1 & 
} 

Una vez que se defina en su .bashrc , puede lanzar firefox así :

runstuff firefox

De otra manera, es a través de la setsid comando (que es el nombre mismo como el C llamada al sistema, pero en realidad es un autónomo binario):

setsid firefox

1voto

Kamil Puntos 66

Si usas Ubuntu con X environemnt usted puede pulsar Ctrl + F2 y, a continuación, poner el comando que usted necesita (por ejemplo rythmbox). No se han separado de la terminal donde usted puede pulsar ctrl+C.

También puede intentar ejecutar nohup rythmbox &. Se debe ejecutar el reproductor en backgroud y hacen terminal de cierre a prueba.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: