🐛 Частые ошибки

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

⚡ Топ-3 ошибки

  1. echo PATH без $ — выводит текст «PATH», а не значение переменной. Правильно: echo $PATH.
  2. Нет grep -v grep — сам процесс grep попадает в список и завышает счётчик. Правильно: ps -ef | grep ssh | grep -v grep | wc -l.
  3. Скрытый файл без точкиprocess_management — не скрытый; .process_management — скрытый (имя начинается с .). Увидеть: ls -la.

Ошибка 1: echo PATH без знака $

Симптом: команда выводит текст «PATH» вместо значения переменной.

# Неправильно:
echo PATH
# вывод: PATH  ← просто текст!

# Правильно:
echo $PATH
# вывод: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Почему: без знака $ оболочка передаёт аргумент как строку, а не раскрывает переменную. Это правило распространяется на все переменные: echo HOME → «HOME»; echo $HOME/home/user.

Эта ловушка — частый вопрос на экспресс-опросе. Запомни: доллар $ обязателен при чтении значения переменной.

Ошибка 2: Забыть grep -v grep

Симптом: счётчик процессов завышен на 1 (или результат содержит лишнюю строку).

# Неправильно — сам grep ssh виден в ps как процесс:
ps -ef | grep ssh | wc -l
# вывод: 4  ← одна лишняя строка (сам grep)

# Правильно — исключаем строку с grep:
ps -ef | grep ssh | grep -v grep | wc -l
# вывод: 3  ← только реальные ssh-процессы

Почему: когда вы запускаете grep ssh, этот процесс сам появляется в таблице ps и содержит слово «ssh» в аргументах командной строки. grep -v grep удаляет любую строку, содержащую слово «grep».

Альтернатива: использовать символьный класс в шаблоне — grep '[s]sh'. Шаблон [s]sh совпадает с «ssh», но сам grep [s]sh в своих аргументах содержит строку [s]sh, которая НЕ совпадает с буквальным «ssh».

Ошибка 3: Скрытый файл не начинается с точки

Симптом: файл создан как process_management (без точки) — это обычный файл, не скрытый.

# Неправильно:
touch /opt/GROUP/NAME/process_management

# Правильно — скрытый файл начинается с точки:
touch /opt/GROUP/NAME/.process_management

# Обычный ls не показывает скрытые файлы:
ls /opt/GROUP/NAME/     # пусто или не видно

# ls -la показывает все файлы, включая скрытые:
ls -la /opt/GROUP/NAME/
# ... .process_management ...

Почему: в Linux любой файл или директория, имя которых начинается с точки ., считается скрытым. Команда ls без флагов их не показывает. Для просмотра нужен флаг -a (all) или -la.

Ошибка 4: Путают команду входа на сервер

Симптом: студент пытается войти на сервер командами login, connect, или передаёт неправильный ключ/адрес.

# Правильная команда входа:
ssh -i ~/.ssh/id_rsa ec2-user@linux.itcareerhub.de

# Частая ошибка — не указывать ключ:
ssh ec2-user@linux.itcareerhub.de   # сработает только если ключ добавлен в ssh-agent

Ошибка 5: Сложный awk с несколькими полями

Симптом: вывод awk не соответствует ожидаемому формату «PID *** PPID *».

# Неправильно — неверный порядок или имена полей:
ps -ef | grep '[s]shd -D' | awk '{print $2, $3}'
# вывод: 1234 1  ← без меток

# Правильно — с метками:
ps -ef | grep '[s]shd -D' | awk '{print "PID", $2, "PPID", $3}'
# вывод: PID 1234 PPID 1

Почему: в awk строки в двойных кавычках — литеральный текст; $2, $3 — поля (разделитель — пробел). В выводе ps -ef: поле $2 = PID, $3 = PPID.