Основы многозадачности в Linux



бет4/15
Дата16.11.2022
өлшемі472,04 Kb.
#158456
1   2   3   4   5   6   7   8   9   ...   15
Байланысты:
5-6 лаб раб (1)

Дерево процессов
Если вызывать программу ps с флагами -e и -H, то можно увидеть дерево процессов в наглядной форме.
Если ваша терминальная программа использует пропорциональный шрифт, то следующая команда выведет дерево процессов с соединительными ветвями:
$ ps -e –forest
Если в вашей системе установлен пакет программ psmisc, то дерево процессов можно увидеть при помощи программы pstree. Существуют также графические утилиты для просмотра дерева процессов: ksysguard, gnome-system-monitor и т. д.
Возникает вопрос: что произойдет с работающим потомком при завершении родительского процесса? В этом случае возможны следующие варианты:
 дочерний процесс завершается (например, из-за оборванной связи с управляющим терминалом);
 родительским процессом для "осиротевшего" потомка становится процесс init.
Первый вариант будет рассматриваться в главе 20, а второй можно легко проверить:
$ bash
$ yes > /dev/null &
[1] 28316
$ ps -f
В результате будет выведено:
UID PID PPID C STIME TTY TIME CMD
nnivanov 28229 28226 0 14:13 pts/0 00:00:00 bash
nnivanov 28276 28229 0 14:13 pts/0 00:00:00 bash
nnivanov 28316 28276 90 14:14 pts/0 00:00:05 yes
nnivanov 28326 28276 0 14:14 pts/0 00:00:00 ps -f
$ exit
exit
$ ps –f
В результате получим:
UID PID PPID C STIME TTY TIME CMD
nnivanov 28229 28226 0 14:13 pts/0 00:00:00 bash
nnivanov 28316 1 94 14:14 pts/0 00:00:19 yes
nnivanov 28356 28229 0 14:14 pts/0 00:00:00 ps -f
Рассмотрим внимательно приведенный пример. Сначала мы запускаем еще один экземпляр оболочки bash. Под этим новым экземпляром оболочки запускаем в фоновом режиме программу yes, перенаправив ее вывод на устройство /dev/null.
Команда ps -f выводит информацию о том, что родителем yes является второй экземпляр оболочки с идентификатором 28276. После этого команда exit завершает второй экземпляр оболочки. Наконец, команда ps -f, выполненная уже под исходным экземпляром оболочки, показывает, что процесс 28316 не завершился, но его PPID стал равным 1, т. е. процесс init стал родителем "осиротевшего" процесса.




Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   15




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет