✅ Решения
Ответы на экспресс-опрос
1. Что такое системные переменные окружения?
Именованные области памяти, определяющие поведение системы и оболочки (где искать программы, язык, формат приглашения и т.д.). По соглашению пишутся ПРОПИСНЫМИ буквами (PATH, HOME, LANG).
2. Что выведет echo PATH без знака $?
Без
$ shell передаёт аргумент как строку, а не раскрывает переменную.
echo PATH → PATH; echo $PATH → /usr/local/bin:/usr/bin:/bin:...
echo PATH # PATH ← просто текст
echo $PATH # /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
3. Разница между VAR=value и export VAR=value
VAR=value — переменная существует только в текущей оболочке (локальная). Дочерние процессы её не видят.
export VAR=value — переменная помечается для экспорта и передаётся в дочерние процессы (дочерние команды, скрипты, подоболочки).
4. За что отвечает $PS1?
Формат приглашения командной строки — то, что отображается перед курсором в терминале. Например: [user@host dir]$. Можно изменить, задав PS1='мой> '.
5. Как удалить переменную окружения?
unset VAR_NAME
После этого echo $VAR_NAME вернёт пустую строку, а в выводе env переменная не появится.
6. Три числа load average в top
Средняя нагрузка на CPU за 1 минуту, 5 минут и 15 минут. Значение 1.0 на однопроцессорной системе = 100% нагрузки. Если числа растут — система перегружена.
load average: 0.10, 0.12, 0.08
# 1m 5m 15m
7. PID и PPID
PID (Process ID) — уникальный идентификатор процесса в системе.
PPID (Parent PID) — PID родительского процесса, который запустил данный. Образует дерево процессов. PID 1 — systemd/init (прародитель всех).
8. top vs ps
top— интерактивная таблица, обновляется в реальном времени (каждые ~3 сек). Удобен для наблюдения за нагрузкой.ps— снимок (snapshot) в момент запуска. Не обновляется. Удобен для скриптов и конвейеров.
Разбор ДЗ урока 10: файл .process_management
ДЗ требовало создать скрытый файл и дописать в него несколько строк через конвейеры. Разберём каждый шаг:
Шаг 1: Зайти на сервер и объявить переменную
ssh -i ~/.ssh/id_rsa ec2-user@linux.itcareerhub.de
# На сервере:
export ANDREW_VARIABLE=group_name
Шаг 2: Создать скрытый файл (имя начинается с точки)
# Путь: /opt/GROUP/NAME/.process_management (заменить GROUP/NAME)
# Файл начинается с точки → скрытый, виден только через ls -la
touch /opt/GROUP/NAME/.process_management
Шаг 3: Дописать данные в файл
# Дописать дату (>> — дозапись, не перезапись!)
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
# Дописать количество процессов root (grep -v grep исключает сам grep!)
ps -ef | grep root | grep -v grep | wc -l >> /opt/GROUP/NAME/.process_management
# Дописать значение своей переменной
env | grep ANDREW >> /opt/GROUP/NAME/.process_management
# Дописать PID и PPID процесса sshd -D
ps -ef | grep '[s]shd -D' | awk '{print "PID", $2, "PPID", $3}' >> /opt/GROUP/NAME/.process_management
Шаг 4: Проверить результат
# Посмотреть скрытый файл (ls -la покажет файлы с точкой)
ls -la /opt/GROUP/NAME/
cat /opt/GROUP/NAME/.process_management
grep -v grepПри фильтрации вывода
ps через grep сам процесс grep
тоже виден в таблице процессов. grep -v grep удаляет эту лишнюю строку.
Альтернатива: grep '[r]oot' — символ в квадратных скобках не совпадает
с самим шаблоном (grep ищет [r]oot, а не root).
Решения заданий для закрепления
Задание 1: Подсчёт ssh-процессов
ps -ef | grep ssh | grep -v grep | wc -l
Задание 2: Поиск ошибок в логах
# Найти и подсчитать
grep -i Error /var/log/messages | wc -l
# Сохранить в файл (> перезаписывает)
grep -i Error /var/log/messages > /tmp/errors.txt
Задание 3: Редактирование в vi
vi /tmp/errors.txt
# Перейти в командный режим (Esc)
# dd — удалить текущую строку
# :wq — сохранить и выйти
Задание 4: Работа с переменными
export MY_GROUP=mygroup
env | grep MY_GROUP # MY_GROUP=mygroup
unset MY_GROUP
env | grep MY_GROUP # (пустой вывод)