мета-данные страницы
  •  

Это старая версия документа!


Выполнение домашнего задания "Процессы Linux"

Задание

При помощи /proc/ /sys/fs собрать информацию:
Шаг 1
- О текущем процессе:
  • Кол-во дескрипторов
  • Потребление памяти
  • Путь до исполняемого файла

- О текущей системе:

  • Какой процессор (сколько)
  • Какая память (сколько)

- Вывести все в Json

Шаг 2
Запустить приложение из шага 1 в изоляции при помощи например Docker
*Advanced level запустить руками в cgroup и namespace
Сравнить вывод Json шага 1 и шага 2

Решение

Сбор информации о текущем процессе

Для сбора создадим скрипт

nano collecting_information_about_the_current_process.sh
#!/bin/bash

# Получаем PID текущего процесса
PID=$$

# Получаем количество дескрипторов
FD_COUNT=$(ls /proc/$PID/fd/ | wc -l)

# Получаем потребление памяти
MEM_USAGE=$(awk '/VmRSS/ {print $2}' /proc/$PID/status)

# Получаем путь до исполняемого файла
EXEC_PATH=$(readlink /proc/$PID/exe)

# Формируем JSON-объект с собранной информацией
json='{"process_info": {'
json+="\"fd_count\": \"$FD_COUNT\", "
json+="\"memory_usage\": \"$MEM_USAGE\", "
json+="\"executable_path\": \"$EXEC_PATH\""
json+='}}'

echo $json > proc.json
Теперь выводим информацию из файла на экран
cat proc.json

Обсуждение

Ваш комментарий: