Зачем знать CLI в эпоху GUI

Когда сервер упал в 3 ночи, у вас нет времени искать GUI-инструменты. Terminal — единственный инструмент, который всегда работает. Эти 10 команд я использую каждую неделю уже 10 лет, и они буквально спасали ситуации.

Команды

1. strace — следим за системными вызовами

Когда приложение зависает и вы не знаете почему, strace покажет какие системные вызовы оно делает прямо сейчас.

bash# Отслеживаем системные вызовы процесса по PID
strace -p 1234 -e trace=network,file

# Запускаем программу и смотрим все вызовы с временными метками
strace -tt -T ./myapp

# Только открытие файлов — найти что приложение читает
strace -e openat ls /tmp 2>&1 | grep -v ENOENT

2. awk — швейцарский нож для текста

Мощнее чем grep и cut вместе взятые. Незаменим для обработки логов и вывода команд.

bash# Сумма чисел в третьей колонке
awk '{sum += $3} END {print sum}' access.log

# Вывести строки где 4-я колонка > 1000 (медленные запросы)
awk '$4 > 1000 {print $0}' query.log

# Посчитать уникальные IP с количеством запросов
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20

3. ss — замена netstat

ss быстрее netstat и предоставляет больше информации о сокетах и соединениях.

bash# Все TCP соединения с именами процессов
ss -tulnp

# Соединения на порту 5432 (PostgreSQL)
ss -tnp sport = :5432

# Показать established соединения с таймерами
ss -to state established

4. jq — парсинг JSON в терминале

Если вы работаете с API или читаете JSON-логи, jq — must-have.

bash# Получить все поля "error" из JSON-лога
cat app.log | jq -r 'select(.level=="error") | .message'

# Форматировать JSON от API
curl -s https://api.example.com/data | jq '.'

# Извлечь конкретные поля
curl -s https://api.github.com/users/torvalds | jq '{name, company, blog}'

5. tmux — мультиплексор терминала

SSH-сессии падают. С tmux ваши процессы продолжат работать. Это спасало меня при долгих деплоях не раз.

bash# Создать именованную сессию
tmux new -s deploy

# Отключиться (процессы остаются)
Ctrl+B, D

# Подключиться обратно
tmux attach -t deploy

# Разделить окно горизонтально
Ctrl+B, %

6. lsof — кто держит файл или порт

bash# Кто использует порт 8080
lsof -i :8080

# Какие файлы открыты процессом
lsof -p 1234

# Найти удалённые файлы, которые ещё занимают место
lsof | grep deleted

7. watch — периодическое выполнение команды

bash# Обновлять каждые 2 секунды, подсвечивать изменения
watch -n 2 -d 'docker stats --no-stream'

# Мониторинг очереди задач
watch -n 5 'redis-cli llen myqueue'

8. pv — прогресс-бар для пайпов

bash# Дамп БД с прогресс-баром
pg_dump mydb | pv | gzip > backup.sql.gz

# Копирование с прогрессом
pv bigfile.tar.gz | ssh user@remote 'cat > bigfile.tar.gz'

9. xargs — параллельное выполнение

bash# Параллельное сжатие файлов (4 потока)
find . -name "*.log" | xargs -P 4 -I{} gzip {}

# Удалить файлы старше 30 дней
find /var/log -mtime +30 | xargs rm -f

10. curl с флагами для отладки

Большинство используют curl примитивно. Вот что он реально умеет:

bash# Показать время каждого этапа запроса
curl -w "\nDNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" \
  -o /dev/null -s https://example.com

# Следовать редиректам, показать заголовки
curl -Lv https://example.com 2>&1 | grep -E "^[<>]"

# POST с JSON и Bearer-токеном
curl -X POST https://api.example.com/data \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'

Добавьте в ~/.bashrc алиасы для часто используемых команд. Это экономит секунды, которые складываются в часы за год.

213 оценки
Комментарии 9
МС
msokolovaBackend10 мин назад

Добавлю fzf — fuzzy finder. Меняет отношение к истории команд. Ctrl+R с fzf — это уже не то же самое, что без него.

Ответить
АМ
alex_mDevOps35 мин назад

Про tmux — абсолютно согласен. На продакшн-серверах это первое что устанавливаю. Добавлю к нему tmux-resurrect — плагин для восстановления сессий после перезагрузки сервера.

Ответить
РК
r_kozlovSRE1 ч назад

Не хватает htop / btop для мониторинга ресурсов, ncdu для анализа диска и mtr для диагностики сети. Но из тех что в списке — все топ.

Ответить
ИП
ipetrovDBA3 ч назад

pv — недооценённая команда. Когда заливаешь дамп на 50 ГБ и не знаешь сколько ещё ждать, прогресс-бар очень успокаивает 😄

Ответить
ДФ
Дмитрий Фёдоров
Системный администратор · Новосибирск

10 лет в системном администрировании Linux. Специализируюсь на высоконагруженных системах, настройке сети и диагностике производительности. Верю, что хороший sysadmin — это 90% shell-скриптов и 10% магии.