✅ Решения — Занятие 10

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

⚡ Ключевые конвейеры

# Найти процессы ssh без самого grep
ps -ef | grep ssh | grep -v grep

# Подсчитать процессы root
ps -ef | grep root | grep -v grep | wc -l

# Объём RAM
free -m | grep Mem | awk '{print $2}'

Задание 1: Переменные и чтение

export GREETING=Hello
export NAME=Linux
echo $GREETING $NAME
Вывод:
Hello Linux
unset GREETING
echo $GREETING
Вывод: (пустая строка)

Задание 2: PATH

echo $PATH
export PATH=/opt/mytools:$PATH
echo $PATH
which grep
Вывод:
/opt/mytools:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
/bin/grep

Задание 3: Просмотр переменных через env

export MY_TEST=check
env | grep MY_TEST
env | wc -l
Вывод:
MY_TEST=check
23
Количество строк зависит от конкретного сервера и сессии.

Задание 4: Управление процессами

Шаги с объяснением каждой части конвейера:

Шаг 1: Найти ssh-процессы

ps -ef | grep ssh | grep -v grep
Что делает каждая часть:
  • ps -ef — список всех процессов
  • | grep ssh — оставить только строки со словом «ssh»
  • | grep -v grep — исключить строку с самим запросом grep
Почему нужен grep -v grep?
Когда вы выполняете ps -ef | grep ssh, в списке процессов виден и сам запущенный grep ssh. Без grep -v grep в результатах будет лишняя строка, которая может ввести в заблуждение (особенно при подсчёте wc -l).

Шаг 2: Взять PID и завершить процесс

# Пример вывода ps -ef | grep ssh | grep -v grep:
# ec2-user   456   123  0 10:05 ?  00:00:00 sshd: ec2-user@pts/0
# Второй столбец — PID (здесь 456)
kill 456
После kill проверьте: ps -ef | grep ssh | grep -v grep.
Если процесс завис — используйте kill -9 456.

Задание 5: Ресурсы системы

free -m
free -m | grep Mem | awk '{print $2}'
df -h
cat /etc/os-release
Пояснение конвейера free:
free -m выводит несколько строк; grep Mem берёт только строку с «Mem:»; awk '{print $2}' печатает второй столбец (total).

Важные детали (из источника)

Скрытые файлы

Файлы, начинающиеся с точки (.), являются скрытыми и не видны при обычном ls. Для просмотра скрытых файлов:

ls -la

В домашнем задании урока 10 нужно создать скрытый файл .process_management — с точкой в начале!

grep -v grep — обязательный приём

При подсчёте процессов через конвейер ВСЕГДА добавляйте grep -v grep:

# Неправильно — grep сам попадёт в список
ps -ef | grep root | wc -l

# Правильно — исключаем сам процесс grep
ps -ef | grep root | grep -v grep | wc -l