February 17

9 хитростей Linux

Это перевод оригинальной статьи 9 Linux Tricks.

Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.

Любой может работать с файловой системой. Но настоящий системный инженер знает, как управлять памятью процессов, восстанавливать потерянные сессии и создавать дисковое пространство из ничего, когда сервер уходит в 100% загрузки в 3 часа ночи.

Это не просто команды; это инструменты выживания. Вот 9 продвинутых трюков Linux, которые помогут вам превратиться из пользователя в мастера :)

Оглавление

  1. Охота за привидениями: поиск удаленных файлов, занимающих место на диске (lsof)
  2. Путешествие во времени: перемещение запущенного процесса в screen (reptyr)
  3. Рентген: отладка процессов без логов (strace)
  4. Шпионаж за конфигурацией: чтение окружения запущенного процесса (/proc)
  5. Кнопка паники: мгновенное освобождение дискового пространства для пользователя Root (tune2fs)
  6. Турбо-режим SSH: Мультиплексирование соединений (ControlMaster)
  7. Быстрое исправление: мгновенное исправление опечаток (^old^new)
  8. Современный сетевой анализ: netstat мертв, да здравствует ss !
  9. Мышечная память: sudo!! и !$

1. Охота на привидений: lsof +L1

Ситуация: df -h показывает 100% загрузку диска, но вы только что удалили гигабайты файлов логов. Причина: если какой-либо процесс (например, Apache или Postgres) продолжает запись в удаленный файл, операционная система не освобождает место (inode). Файл становится «зомби-файлом».

Решение:

lsof +L1
# Look for files marked as (deleted) but still held by a PID.
# You must reload/restart that specific PID to free the space.

2. Путешествие во времени: reptyr

Ситуация: Вы запустили долгий скрипт, он работает уже 4 часа, но вы забыли запустить screen или tmux. Вам нужно отключиться, но закрытие терминала прервет выполнение скрипта.

Решение: Используйте reptyr, чтобы «перехватить» процесс и перенести его на новый экран.

# 1. Background the process: Ctrl+Z, then type 'bg'
# 2. Disown it from current shell: 'disown <PID>'
# 3. Open a new screen/tmux and pull it in:
reptyr <PID>

3. Рентген: strace

Ситуация: Процесс завис. Нет логов. Нет загрузки ЦП. Ожидает ли он подключения к сети? Или ему отказано в доступе? Решение: Не гадайте. Наблюдайте за системными вызовами в реальном времени.

strace -p <PID>
# You will see exactly what the kernel is doing: 
# open(), connect(), read()... 
# This is the ultimate debugging weapon.

4. Шпионаж за конфигурацией: файловая система /proc

Ситуация: Разработчик утверждает: «У меня всё работает», но производственный сервис не запускается. Вы подозреваете, что он получил неверный пароль к базе данных или ключ API из окружения.
Решение: Считывать данные из памяти запущенного процесса напрямую.

cat /proc/<PID>/environ | tr '\0' '\n'
# This dumps every environment variable the process was started with.
# No more guessing.

5. Кнопка паники: tune2fs

Ситуация: Работа системы приостановлена. Диск заполнен на 100%. Вы даже не можете автодополнить команды, потому что нет места для временных файлов. Решение: Linux по умолчанию резервирует 5% блоков для root пользователя. В экстренной ситуации вы можете установить это значение на 0%, чтобы мгновенно получить гигабайты свободного места.

tune2fs -m 0 /dev/sdX
# Warning: Set it back to 5% once you clean up!

6. Турбо-режим SSH: ControlMaster

Ситуация: Запуск Ansible или открытие нескольких вкладок с одним и тем же сервером происходит медленно из-за процесса установления SSH-соединения. Решение: Включить мультиплексирование соединений. Первое соединение проходит аутентификацию; последующие соединения мгновенно проходят через существующий туннель.

# In your ~/.ssh/config:
Host *
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h-%p
    ControlPersist 600

7. Быстрое решение: ^old^new

Ситуация: Вы ввели длинную команду с опечаткой. systemctl restart nginxx Решение: Не нажимайте стрелку вверх и не прокручивайте назад.

^nginxx^nginx
# Bash automatically runs: systemctl restart nginx

8. Современный сетевой анализ: ss

Ситуация: Вы всё ещё используете netstat.
Решение: netstat устарел, работает медленно и обрезает вывод. ss(Статистика сокетов) взаимодействует напрямую с ядром и работает невероятно быстро.

ss -tulpn
# -t: TCP, -u: UDP, -l: Listening, -p: Process, -n: Numeric
# See everything listening on your server in milliseconds.

9. Мышечная память: sudo !! и !$

  • sudo !!: Вы ввели команду, но забыли sudo.
  • Действие: Введите sudo !!(выполняет последнюю команду от имени root).
  • !$: Вы создали директорию и теперь хотите в неё перейти.
mkdir -p /var/www/html/project/v2 cd !$  
# '!#39; expands to the last argument of the previous command

Заключение

Эти приёмы предназначены не просто для демонстрации мастерства; они придут на помощь, когда стандартные инструменты окажутся неэффективными. Освоив их, вы превратите терминал в продолжение своего разума, а не просто в чёрный экран.

На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.