🏠 Домашнее задание — Занятие 10

К оглавлению урока

⚡ Суть ДЗ 6

Зайти на сервер, объявить переменную ANDREW_VARIABLE, создать скрытый файл .process_management и дописать в него: дату, приветствие, ОЗУ, число процессов root, свою переменную, PID/PPID sshd.

export ANDREW_VARIABLE=GROUP_NAME
mkdir -p /opt/GROUP/NAME
touch /opt/GROUP/NAME/.process_management
date >> /opt/GROUP/NAME/.process_management
echo "Welcome to Amazon server" >> /opt/GROUP/NAME/.process_management
free -m | grep Mem | awk '{print $2}' >> /opt/GROUP/NAME/.process_management
ps -ef | grep root | grep -v grep | wc -l >> /opt/GROUP/NAME/.process_management
env | grep ANDREW >> /opt/GROUP/NAME/.process_management
ps -ef | grep '[s]shd -D' | awk '{print "PID", $2, "PPID", $3}' >> /opt/GROUP/NAME/.process_management

📋 Текст домашнего задания (из LMS)

ДЗ 6. Переменные. Управление процессами

  1. Зайти на сервер
  2. Объявить переменную через export: ANDREW_VARIABLE=имя_группы
  3. По пути /opt/ГРУППА/ИМЯ создать скрытый файл .process_management
  4. В файл .process_management дописать (через >>):
    • Дату
    • Строку «Welcome to Amazon server»
    • Объём ОЗУ (RAM): free -m | grep Mem | awk '{print $2}'
    • КОЛИЧЕСТВО процессов root: ps -ef | grep root | grep -v grep | wc -l
    • Отфильтрованную свою переменную: env | grep ANDREW
    • PID/PPID процесса /usr/sbin/sshd -D в формате PID *** PPID *:
      ps -ef | grep '[s]shd -D' | awk '{print "PID", $2, "PPID", $3}'

🛠️ Подготовка окружения

Для выполнения ДЗ необходимо подключиться к учебному серверу по SSH:

ssh -i ~/.ssh/id_rsa ec2-user@linux.itcareerhub.de

Убедитесь, что рабочая папка существует:

ls /opt/GROUP/NAME

Если папки нет — создайте (замените GROUP и NAME на реальные значения):

mkdir -p /opt/GROUP/NAME

📝 Пошаговое решение

Шаг 1: Объявить переменную ANDREW_VARIABLE

export ANDREW_VARIABLE=GROUP_NAME

Замените GROUP_NAME на имя своей группы. export необходим, чтобы переменная была видна через env.

Проверка:

echo $ANDREW_VARIABLE
env | grep ANDREW

Шаг 2: Создать скрытый файл .process_management

touch /opt/GROUP/NAME/.process_management
Точка в начале имени обязательна!
.process_management — скрытый файл. Обычный ls его не покажет. Для проверки используйте ls -la.

Шаг 3: Дописать дату

date >> /opt/GROUP/NAME/.process_management

>> — дописать в конец файла (а не перезаписать). Команда date выведет текущую дату и время.

Шаг 4: Дописать приветствие

echo "Welcome to Amazon server" >> /opt/GROUP/NAME/.process_management

Шаг 5: Дописать объём RAM

free -m | grep Mem | awk '{print $2}' >> /opt/GROUP/NAME/.process_management
Разбор конвейера:
  • free -m — вывод памяти в мегабайтах
  • grep Mem — оставить только строку «Mem:» (первая строка с данными)
  • awk '{print $2}' — вывести второй столбец (total)
Результат: число, например 985 (объём RAM в MB).

Шаг 6: Подсчитать процессы пользователя root

ps -ef | grep root | grep -v grep | wc -l >> /opt/GROUP/NAME/.process_management
Разбор конвейера:
  • ps -ef — все процессы системы
  • grep root — строки с именем пользователя root
  • grep -v grep — исключить строку самого процесса grep
  • wc -l — подсчитать количество строк

Шаг 7: Дописать свою переменную

env | grep ANDREW >> /opt/GROUP/NAME/.process_management

В файл добавится строка вида: ANDREW_VARIABLE=GROUP_NAME

Эта команда должна выполняться в той же сессии, где был сделан export ANDREW_VARIABLE=.... Если вы открыли новое подключение — нужно снова объявить переменную.

Шаг 8: Дописать PID и PPID процесса sshd

ps -ef | grep '[s]shd -D' | awk '{print "PID", $2, "PPID", $3}' >> /opt/GROUP/NAME/.process_management
Разбор конвейера:
  • grep '[s]shd -D' — паттерн [s]shd в квадратных скобках — трюк для исключения самого grep из результатов поиска: grep ищет буквально «sshd», но строка самой команды содержит «[s]shd», поэтому не совпадает с паттерном
  • awk '{print "PID", $2, "PPID", $3}' — вывести: текст «PID», второй столбец (PID процесса), текст «PPID», третий столбец (PPID)
Результат: PID 123 PPID 1

✅ Проверка результата

cat /opt/GROUP/NAME/.process_management
Ожидаемый вывод файла .process_management:
Thu Jun 11 10:30:00 UTC 2026
Welcome to Amazon server
985
47
ANDREW_VARIABLE=GROUP_NAME
PID 123 PPID 1
(Значения будут другими на вашем сервере.)

Убедитесь, что файл скрытый (видно через ls -la):

ls -la /opt/GROUP/NAME/

В списке должна быть строка с именем .process_management.

🔗 Связь с теорией