Для начала разберемся с тем, как получить данные о процессах.
С помощью утилиты htop можно подробно узнать обо всех запущенных процессах
sudo apt install htop
htop
Теперь мы видим диспетчер задач аналогичный всем нам так знакомому. Но как получать отсюда данные, которые можно было бы автоматически отслеживать и в зависимости от них управлять своей системой? Воспользуемся другой утилитой ps
ps -eo pid,%cpu,command --sort=-%cpu
Эта команда вывела нам данные обо всех ныне работающих процессах - их PID, нагрузку на CPU и команду, которой они были вызваны. Процессы были отсортированы по убыванию используемых ресурсов процессора.
- Напишите программу на Python, которая будет съедать большое количество вычислительных ресурсов вашей виртуальной машины. Протестируйте её.
- Напишите bash скрипт, который будет анализировать нагрузку на систему и выводить PID процесса, занимающего больше 50% памяти или процессора. Если таких процессов нет, то пусть выводит три самых тяжелых процесса (по памяти и по нагрузке на CPU)
Подсказка про поиск данных в ps:
Данные из ps будут приходить нам в формате текста, поэтому для их фильтрации стоит использовать команду awk. Синтаксис команды awk:
фильтрация по шаблону:
awk '/шаблон/ {действия;}'
Пример:
array="10 25 55" # допустим, у нас есть некоторый массив. # NF - не рэпер, а встроенная переменная awk, которая хранит количество полей в строке echo $array | awk '{for(i=1; i<=NF; i++) if($i > 40) print $i}Соответственно, этот скрипт выведет 55 в терминале (все числа массива, которые >40).
Знать как писать скрипты на bash. Знать немного python. Шарить.
- самый достоверный источник:
man ps
ps --help