¿La forma más eficiente de iniciar y separar un programa del terminal?

¿La forma más eficiente de iniciar y separar un programa del terminal?

Estoy intentando iniciar un programa desde la Terminal de tal manera que ocurra lo siguiente:

  1. Cerrar la Terminal no cierra el programa
  2. El programa no envía nada a la Terminal al abrir, usar o cerrar
  3. La Terminal se puede utilizar de forma gratuita para otras cosas.
  4. El comando es breve y dulce.
  5. No hay ningún archivo de salida del que preocuparse

Respuesta1

Ver man nohup:

NAME
   nohup - run a command immune to hangups, with output to a non-tty

Respuesta:

nohup program-name &

Respuesta2

Creo que esta sería la forma más completa:

program-name </dev/null &>/dev/null &
disown %%

Rechazar el proceso en segundo plano significa que el shell ya no lo rastreará. No te dirá cuando esté hecho. No le impedirá cerrar su caparazón. %%significa "el trabajo en segundo plano más reciente".

Si desea ocultar todos los detalles, coloque una función como esta en su .bashrc

launch_and_forget () { "$@" </dev/null &>/dev/null & disown %%; }

Entonces

launch_and_forget program args "args args" ...

Dale un nombre que sea significativo para ti.

Respuesta3

Puedes usar muy simplementesetsid:-

NAME
       setsid - run a program in a new session

SYNOPSIS
       setsid program [arg...]

DESCRIPTION
       setsid runs a program in a new session.

Pruebe el siguiente comando: -

setsid <command>

Ejemplo:- setsid gedit, setsid nautilus ~/Downloads/etc.

Respuesta4

Yo recomendaría cualquiera de los dostmux, comoRen Siyuansugerido, oPantalla GNU. De esa manera, obtendrás una nueva terminal para tu comando. Puedes separarlo y olvidarte de él, pero puedes volver si cambias de opinión.

información relacionada