9 хитростей Linux
Это перевод оригинальной статьи 9 Linux Tricks.
Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.
Любой может работать с файловой системой. Но настоящий системный инженер знает, как управлять памятью процессов, восстанавливать потерянные сессии и создавать дисковое пространство из ничего, когда сервер уходит в 100% загрузки в 3 часа ночи.
Это не просто команды; это инструменты выживания. Вот 9 продвинутых трюков Linux, которые помогут вам превратиться из пользователя в мастера :)
Оглавление
- Охота за привидениями: поиск удаленных файлов, занимающих место на диске (
lsof) - Путешествие во времени: перемещение запущенного процесса в screen (
reptyr) - Рентген: отладка процессов без логов (
strace) - Шпионаж за конфигурацией: чтение окружения запущенного процесса (
/proc) - Кнопка паники: мгновенное освобождение дискового пространства для пользователя Root (
tune2fs) - Турбо-режим SSH: Мультиплексирование соединений (
ControlMaster) - Быстрое исправление: мгновенное исправление опечаток (
^old^new) - Современный сетевой анализ:
netstatмертв, да здравствуетss! - Мышечная память:
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 6007. Быстрое решение: ^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, где будет еще больше полезной информации.