де оболонка потрапляє в ієрархію процесу?


2

Коли ви відкриваєте новий термінал, він стає батьківським процесом усіх процесів, розщеплених всередині нього. Але де, наприклад, шкаралупа bash потрапляє в цей технологічний ланцюг? Чи є його батьківським терміналом? Чи всі процеси розщеплені всередині дітей оболонки оболонки? Якщо так, то коли я змінюю оболонки, чому процеси все ще залишаються запущеними? Словом, куди потрапляє оболонка в ієрархію процесів?

Відповіді:


2

Дійсно, батьком процесу bash є термінал. Ви можете бачити ієрархію процесів за допомогою ps -aefкоманди:

$ ps -aef
UID        PID  PPID  C STIME TTY          TIME CMD
[...]
sylvain   3510  1862  2 22:02 ?        00:00:01 gnome-terminal
[...]
sylvain   3520  3510  0 22:02 pts/1    00:00:00 bash
sylvain   3587  3520  0 22:03 pts/1    00:00:00 sh
  • PID: ідентифікатор процесу
  • PPID: батьківський процес ідентифікатор

У цьому прикладі я запустив shпроцес (3587) з bashоболонки (3520)


Як же, коли я міняю оболонку, процеси, що породжуються в оболонці, залишаються живими?
ДжонМерліно

Наприклад, коли я запускаю процес в межах tmux в оболонці zsh, тоді я переключаюся на оболонку bash, tmux і процес всередині нього все ще працює. Чому ці процеси не загинули, коли я перейшов з zsh на bash?
ДжонМерліно

Ви не можете "замінити" оболонку іншою, насправді обидва - це окремі процеси. Якщо ви введете exitв моєму прикладі, ви повернетесь до оболонки bash.
Сільвен Піно

Тепер, коли я виходжу, tmux продовжує працювати, оскільки ігнорує сигнал nohup. Це означає, що tmux та його процеси не є дітьми bash чи терміналу?
ДжонМерліно

Ви можете одночасно працювати декількома процесами bash, тим, хто запустив tmux, а другий розпочався процесом zsh (цей є дитиною tmux)
Sylvain Pineau,

1

Існує хороші команди , які можуть допомогти вам зрозуміти речі тут: pstree.

Показати дерево процесу поточного процесу (в оболонці $$замінено PID оболонки):

(0)samsung-rmano:~% pstree -s $$
init───gdm───gdm-simple-slav───gdm-session-wor───init───gnome-terminal-───zsh───pstree

Показ PID:

(0)samsung-rmano:~% pstree -s -p $$
init(1)───gdm(1128)───gdm-simple-slav(1203)───gdm-session-wor(1933)───init(1955)───gnome-terminal-(2340)───zsh(23005)───pstree(23044)

Все дерево системного процесу з виділеною поточною оболонкою (відкрийте дуже великий термінал! --- підсвічування тут не видно):

 (0)samsung-rmano:~% pstree -h 
 ...
 ├─gdm─┬─gdm-simple-slav─┬─Xorg───4*[{Xorg}]
                       ├─gdm-session-wor─┬─init─┬─Notifications_h
                                              ├─Translator
                                              ├─at-spi-bus-laun─┬─dbus-daemon
                                                               └─3*[{at-spi-bus-laun}]
                                              ├─at-spi2-registr───{at-spi2-registr}
                                              ├─darktable───47*[{darktable}]
                                              ├─dbus-daemon
                                              ├─dconf-service───2*[{dconf-service}]
                                              ├─dropbox───30*[{dropbox}]
                                              ├─evolution-calen───4*[{evolution-calen}]
                                              ├─evolution-sourc───2*[{evolution-sourc}]
                                              ├─firefox─┬─plugin-containe───10*[{plugin-containe}]
                                                       └─43*[{firefox}]
                                              ├─gconfd-2
                                              ├─gnome-session─┬─deja-dup-monito───2*[{deja-dup-monito}]
                                                             ├─gnome-shell─┬─alarmclock───3*[{alarmclock}]
                                                                          ├─cairo-dock───3*[{cairo-dock}]
                                                                          └─6*[{gnome-shell}]
                                                             ├─tracker-miner-f───3*[{tracker-miner-f}]
                                                             ├─tracker-store───7*[{tracker-store}]
                                                             ├─update-notifier───3*[{update-notifier}]
                                                             ├─vino-server───2*[{vino-server}]
                                                             ├─zeitgeist-datah───10*[{zeitgeist-datah}]
                                                             └─3*[{gnome-session}]
                                              ├─gnome-settings-─┬─syndaemon
                                                               └─4*[{gnome-settings-}]
                                              ├─gnome-shell-cal───4*[{gnome-shell-cal}]
                                              ├─gnome-terminal-─┬─gnome-pty-helpe
                                                               ├─slogger
                                                               ├─3*[zsh]
                                                               ├─zsh───man───pager
                                                               ├─zsh───python3
                                                               ├─zsh───pstree
                                                               └─3*[{gnome-terminal-}]
...
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.