Управление процессами
В данной директории расположены материалы и задания по лекции «Управление процессами»
- Конспект лекции
- Текстовая версия лекции
Самостоятельная работа
Самостоятельная работа
В рамках самостоятельной работы слушателям предлагается сыграть в процессную головоломку:
В виртуальной машине запущено «зависшее приложение». Оно создало большое дерево процессов с неочевидными именами. Большинство процессов фиктивные: они почти не нагружают систему и просто ожидают сигналов. Внутри дерева спрятаны несколько специальных процессов:
- процесс, который не завершается по обычному
SIGTERM; - остановленный процесс;
- зомби-процесс;
- процесс, который держит открытым удалённый файл;
- процессы, у которых есть секретная метка: в аргументах, окружении, имени процесса или открытых файлах.
Секретная метка — LinuxPracticUsage
Для решения головоломки необходимо предварительно настроить виртуальную машину.
Подготовка стенда.
Работаем с ВМ для лабораторных работ по сетевым технологиям
- Так просто проще настраивать всё
- С точностью до правильных интерфейсов можно повторить с любым образом
- Есть удобные способы управления и взаимодействия с ВМ
- Shell-сценарии (Linux only)
- Python-пакет PySnap (Кроссплатформенный!)
[user@localhost: ~] $ cd /tmp
[user@localhost: /tmp] $ python3 -m venv venv
[user@localhost: /tmp] $ source venv/bin/activate
[user@localhost: /tmp (venv)] $ pip install ~/Downloads/pysnap-0.1.1-py3-none-any.whl
Processing /home/papillon_rouge/Downloads/pysnap-0.1.1-py3-none-any.whl
<…>
Successfully installed prompt_toolkit-3.0.52 pysnap-0.1.1 pyte-0.8.2 wcwidth-0.6.0
[user@localhost: /tmp (venv)] $
[user@localhost: /tmp (venv)] $ pysnap import /path/to/your/image.ova BaseName
[user@localhost: /tmp (venv)] $ pysnap protosettings BaseName
[user@localhost: /tmp (venv)] $ pysnap clone Basename Proc_maze
[user@localhost: /tmp (venv)] $ pysnap connect Proc_maze
- Выполните DHCP-настройку интерфейса eth0:
[root@Proc_maze ~]# dhcpcd eth0
[root@Proc_maze ~]#
- С помощью утилиты
wgetскачайте файлы запуска головоломки
[root@Proc_maze ~]# wget https://github.com/UsamG1t/Linux_Practic_Usage/blob/master/Process-Management/Attached_materials/proc_maze_check
[root@Proc_maze ~]# wget https://github.com/UsamG1t/Linux_Practic_Usage/blob/master/Process-Management/Attached_materials/proc_maze_stand
[root@Proc_maze ~]# wget https://github.com/UsamG1t/Linux_Practic_Usage/blob/master/Process-Management/Attached_materials/proc_maze_cleanup.sh
Управление головоломкой
Ваша цель — найти все специальные процессы и завершить/запустить их с минимальным количеством завершений всех остальных процессов.
Пользоваться поисковиком для нахождения интересных способов исследования приветствуется. Писать shell-сценарии для автопроверки процессов — очень приветствуется. Ниже собраны группы команд, которые могут помочь в решении головоломки.
Перед выполнением головоломки необходимо включить запись отчёта.
Для старта запустите программу proc_maze_stand в фоновом режиме.
[root@Proc_maze ~]# ./proc_maze_stand &
[root@Proc_maze ~]#
В процессе вы можете проверять количество оставшихся процессов с помощью proc_maze_check
[root@Proc_maze ~]# ./proc_maze_check
[root@Proc_maze ~]#
Для досрочного завершения головоломки воспользуйтесь shell-сценарием очистки (Отчёты с неполным решением и досрочным завершением также будут положительно оцениваться):
[root@Proc_maze ~]# ./proc_maze_cleanup.sh
[root@Proc_maze ~]#
Полученные отчёт report.01.proc_maze пришлите на почту преподавателя с указанием ФИО. Тема письма должна быть «[LinuxPractice3]<Фамилия> <Имя>»Имя>Фамилия>
Полезные команды
ps -eo pid,ppid,pgid,sid,tty,stat,comm,args -p <PID>
pstree -p
ps -eo pid,ppid,stat,comm,args | grep <слово>
cat /proc/<PID>/status
ls -l /proc/<PID>/fd
readlink /proc/<PID>/fd/* 2>/dev/null
kill -TERM <PID>
kill -STOP <PID>
kill -CONT <PID>
kill -KILL <PID>
tr '\0' ' ' < /proc/<PID>/cmdline; echo
tr '\0' '\n' < /proc/<PID>/environ; echo
Не забывайте про shell-конструкции, например:
for pid in `ls /proc`; do
ls -la /proc/$pid/fd 2> /dev/null && echo "MINE $pid";
done | grep -E "Linux|MINE"