Inoltre nohup
puoi avviare il processo in background usando "&" e subshell:
Basta aggiungere il comando con & e racchiuderlo tra parentesi
$ (thecommand args &)
Diciamo che il tuo processo guadagna il 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
Guarda che è staccato dal processo di shell 11473 che era il suo genitore originale. Quindi, se si esce o si interrompe la shell corrente (11473), il processo 11922 continua a funzionare e verrà disconnesso dai punti.
Prova a uscire dalla shell e inserisci una nuova shell. Anche se, questa shell è connessa agli stessi punti, ora puoi vedere il processo senza un punto:
$ ps -fp 11922
UID PID PPID C STIME TTY TIME CMD
usr 11922 1 0 15:11 ? 00:00:00 thecommand
Non so come viene chiamato o documentato in Posix, ma lo uso dal 1990 in bsh, ksh e ora in bash.
Infine, puoi usare il bg
comando shell incorporato:
Basta avviare il programma e se si decide di metterlo in pausa o si prevede di tenerlo in background, digitare CTRL + Z:
$ thecommand
^Z
[1] Stopped thecommand
Ora lascia che continui a funzionare in background:
$ bg
[1]+ thecommand &
Se guardi le informazioni sul processo, ha ancora un processo 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
Quindi, esci dal processo corrente. Il processo in esecuzione in background è staccato dal suo genitore originale e continua a funzionare in background:
$ exit
Accedi di nuovo e guarda le informazioni sul processo:
$ ps -f 12571
UID PID PPID C STIME TTY TIME CMD
usr 12571 1 0 16:00 ? 00:00:00 thecommand
disown
comando. È tornato: bash: avviso: eliminazione del lavoro interrotto 1 con il gruppo di processi 24876. Ora il mio lavoro è elencatops -all
ma sembra non funzionare (l'utilizzo della CPU è 0%)