Además nohup
, puede iniciar el proceso en segundo plano utilizando "&" y subshell:
Sufije el comando con & y envuélvalo entre paréntesis
$ (thecommand args &)
Digamos que su proceso gana el pid 1922:
$ ps -f
UID PID PPID C STIME TTY TIME CMD
usr 11473 2643 0 15:07 pts/1 00:00:00 bash
usr 11922 1 0 15:11 pts/1 00:00:00 thecommand
Mire que no está conectado al proceso de shell 11473, que era su padre original. Por lo tanto, si sale o elimina el shell actual (11473), el proceso 11922 seguirá ejecutándose y se desconectará de los pts.
Intente salir del shell e ingrese un nuevo shell. Incluso si este shell está conectado a los mismos pts, puede ver el proceso ahora sin un pts:
$ ps -fp 11922
UID PID PPID C STIME TTY TIME CMD
usr 11922 1 0 15:11 ? 00:00:00 thecommand
No sé cómo se llama o documenta en Posix, pero lo uso de esta manera desde 1990 en bsh, ksh y ahora en bash.
Por último, puede usar el bg
comando de shell incorporado:
Simplemente inicie su programa y si decide pausarlo, o planea mantenerlo en segundo plano, escriba CTRL + Z:
$ thecommand
^Z
[1] Stopped thecommand
Ahora deje que continúe ejecutándose en segundo plano:
$ bg
[1]+ thecommand &
Si observa la información del proceso, todavía tiene un proceso padre:
$ ps -f
UID PID PPID C STIME TTY TIME CMD
usr 12046 2643 0 15:18 pts/6 00:00:00 bash
usr 12571 12046 0 16:00 pts/6 00:00:00 thecommand
usr 12601 12046 0 16:04 pts/6 00:00:00 ps -f
Entonces, salga del proceso actual. El proceso de ejecución en segundo plano no está unido a su padre original y sigue ejecutándose en segundo plano:
$ exit
Inicie sesión nuevamente y mire la información del proceso:
$ ps -f 12571
UID PID PPID C STIME TTY TIME CMD
usr 12571 1 0 16:00 ? 00:00:00 thecommand
disown
comando. Regresó: bash: advertencia: eliminar el trabajo 1 detenido con el grupo de procesos 24876. Ahora mi trabajo aparece en la listaps -all
pero parece que no funciona (el uso de la CPU es 0%)