Коротко
З &
і disown
ви не змінюєте PID [ 1 ] процесу.
Якщо ви не бачите його у ps -p <YOURPID>
висновку, він більше не працює.
Ви можете перевірити це за допомогою додаткового echo $?
[ 2 ] після команди ps
(або kill
), перевіривши, чи програма виходить із кодом виходу, відмінним від 0
(як правило 1
).
Розуміння ваших команд.
Фон : коли ви запускаєте команду з фіналом, &
ви надсилаєте її у фоновому режимі.
Це означає що:
- Він присутній у списку завдань вашої оболонки (у вашому прикладі - номер,
[1]
і ви можете посилатися на нього як %1
; (спробуйте команду jobs
).
- Ви можете вивести його на передній план і на фоні з
fg
і bg
.
Вона (досі) "належить" оболонці (пов'язаної з батьківською) оболонкою: якщо оболонка отримує SIGHUP
сигнал, вона також надсилає SIGHUP
сигнал і в процес.
$ sleep 1h &
[1] 10795
$ jobs
[1]+ running sleep 1h &
$ ps -l -p 10795
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 10795 8380 0 80 0 - 3107 hrtime pts/57 00:00:00 sleep
Disown : за допомогою команди disown
ви видалите завдання зі списку завдань оболонки, але ви не змінюєте його PID.
$ disown
$ jobs
# <---- No jobs
$ ps -l -p 10795
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 10795 8380 0 80 0 - 3107 hrtime pts/57 00:00:00
Зверніть увагу на той самий PPID (оболонка все ще існує).
Тепер ми вбиваємо снаряд.
$ kill 8380 # Here we kill the shell
$ ps -l -p 10795
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 10795 5339 0 80 0 - 3107 hrtime pts/57 00:00:00 sleep
Існує ще один PPID
, то 5339
, що з іншим викликом ps
, ps -p 5339
ви відкриєте для себе , щоб бути init
прикладом:
$ ps -p 5339
PID TTY TIME CMD
5339 ? 00:02:20 init
pstree
: більш швидкий шлях.
Ви можете бачити pstree
швидше.
Перед командами disown
та вбийте баш команди:
$ pstree -s -p 10795
init(1)───lightdm(1199)───lightdm(5259)───bash(8380)───sleep(10795)
Після disown
і вбийте баш :
$ pstree -s -p 10795
init(1)───lightdm(1199)───lightdm(5259)───init(5339)───sleep(10795)
Примітка: звичайно, всі PID-адреси у вашому випадку будуть різними ...