Oprócz tego nohup
możesz uruchomić proces w tle za pomocą „&” i podpowłoki:
Dodaj komendę do znaku & i zawiń ją w nawiasach
$ (thecommand args &)
Powiedzmy, że twój proces zyskuje 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
Spójrz, że nie jest przyłączony do procesu powłoki 11473, który był jego pierwotnym rodzicem. Tak więc, jeśli wyjdziesz lub zabijesz bieżącą powłokę (11473), proces 11922 będzie działał dalej i zostanie on odłączony od pts.
Spróbuj opuścić powłokę i wprowadzić nową powłokę. Nawet jeśli ta powłoka jest połączona z tymi samymi punktami, możesz teraz zobaczyć proces bez pts:
$ ps -fp 11922
UID PID PPID C STIME TTY TIME CMD
usr 11922 1 0 15:11 ? 00:00:00 thecommand
Nie wiem, jak to się nazywa i dokumentuje w Posix, ale używam tego od 1990 w bsh, ksh, a teraz w bash.
Na koniec możesz użyć bg
wbudowanego polecenia powłoki:
Po prostu uruchom program i jeśli zdecydujesz się go zatrzymać lub planujesz zachować go w tle, wpisz CTRL + Z:
$ thecommand
^Z
[1] Stopped thecommand
Teraz pozwól mu dalej działać w tle:
$ bg
[1]+ thecommand &
Jeśli spojrzysz na informacje o procesie, ma on jeszcze proces nadrzędny:
$ 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
Wyjdź z bieżącego procesu. Uruchomiony proces w tle jest odłączony od oryginalnego elementu nadrzędnego i działa w tle:
$ exit
Zaloguj się ponownie i spójrz na informacje o procesie:
$ ps -f 12571
UID PID PPID C STIME TTY TIME CMD
usr 12571 1 0 16:00 ? 00:00:00 thecommand
disown
polecenie. Zwrócił: bash: ostrzeżenie: usunięcie zatrzymanego zadania 1 z grupą procesów 24876. Teraz moje zadanie jest wymienione,ps -all
ale wydaje się, że nie działa (zużycie procesora wynosi 0%)