View on GitHub

Linux Practic Usage

Practical materials for learning Linux

Управление процессами

В данной директории расположены материалы и задания по лекции «Управление процессами»

Самостоятельная работа

Самостоятельная работа

В рамках самостоятельной работы слушателям предлагается сыграть в процессную головоломку:

В виртуальной машине запущено «зависшее приложение». Оно создало большое дерево процессов с неочевидными именами. Большинство процессов фиктивные: они почти не нагружают систему и просто ожидают сигналов. Внутри дерева спрятаны несколько специальных процессов:

Секретная метка — LinuxPracticUsage

Для решения головоломки необходимо предварительно настроить виртуальную машину.

Подготовка стенда.

Работаем с ВМ для лабораторных работ по сетевым технологиям

[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
  1. Выполните DHCP-настройку интерфейса eth0:
[root@Proc_maze ~]# dhcpcd eth0
[root@Proc_maze ~]#
  1. С помощью утилиты 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"