Admin Future
242 subscribers
50 photos
1 video
4 files
87 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
Linux: "Какой процесс держит этот файл?" Магия lsof
Классическая ситуация: вы пытаетесь отмонтировать диск, а система говорит: "Resource busy". Или порт занят, а netstat/ss не показывают, кем. Вместо перезагрузки архитектор использует скальпель.

lsof (List Open Files) — это фундаментальная утилита, которая показывает, какой процесс какой файл (или сокет, или библиотеку) держит открытым. В мире *nix "всё есть файл", поэтому lsof видит всё.

Три команды, которые решают 90% проблем:
Узнать, кто "держит" файл или папку:
Bash
# Кто мешает отмонтировать /mnt/data?
lsof /mnt/data

Узнать, какой процесс слушает порт (альтернатива ss -tlpn):
Bash
# Кто занял 80-й порт?
sudo lsof -i :80

Посмотреть, что делает конкретный пользователь или процесс:
Bash
# Что открыл пользователь 'www-data'?
sudo lsof -u www-data
# Какие файлы и сокеты открыты у процесса с PID 1234?
sudo lsof -p 1234

Взгляд архитектора: lsof — это инструмент диагностики и отладки. Он позволяет понять внутренние связи в системе. Умение им пользоваться — это не просто "починить", а понять коренную причину (root cause) проблемы, будь то утечка файловых дескрипторов или конфликт портов.

#linux #lsof #diagnostics #sre #команды
Linux: "Куда делся диск?" Скрипт для поиска "призрачных" файлов

Боль: Вы запускаете df -h и видите Use% 99% на разделе /var. Вы запускаете du -sh /var... и он показывает, что занято только 50%. Где остальные 49%?!

Ответ: Это "файлы-призраки". Процесс (например, nginx или java`) держит лог-файл открытым, а `logrotate в это время его rm (удалил). Файл исчез с диска, но пространство не освободится, пока процесс держит его "в памяти".

Реакция админа: reboot сервера.
Реакция архитектора: Найти "призрака" с lsof и освободить место без перезагрузки.

Этот Bash-скрипт использует lsof для поиска всех файлов, которые помечены как (deleted) , но все еще удерживаются процессами.

Код скрипта:
Bash

#!/bin/bash
# --- Поиск "призрачных" файлов (deleted but held open) ---

echo "--- Начинаю поиск файлов, удаленных, но удерживаемых процессами... ---"
echo "PID USER COMMAND SIZE(MB) FILE"
echo "----------------------------------------------------------------------"

# 1. lsof +L1: Найти файлы с link count < 1 (классический "призрак")
# 2. awk: Форматируем вывод, чтобы показать PID, User, Command, Size
# 3. sort: Сортируем по размеру (7-е поле, numeric-reverse)
# 4. head: Показываем топ-15

lsof +L1 -n | \
awk '
{
size_mb = $7 / (1024*1024);
if (size_mb > 1) {
printf "%-7s %-10s %-15s %-10.2f %s\n", $2, $3, $1, size_mb, $9
}
}' | \
sort -k4 -nr | \
head -n 15

Как использовать:
1. Сохраните как find_ghosts.sh и chmod +x find_ghosts.sh.
2. sudo ./find_ghosts.sh
3. Результат: Вы увидите, что PID 1234 (java) держит файл app.log (deleted) размером 10240 MB.
4. Решение: systemctl restart java-app.service. (Перезапуск процесса, а не всего сервера).

Взгляд архитектора: Вы не "гадаете", вы диагностируете. Вы понимаете, как VFS (Virtual File System) в Linux работает с inode и file descriptors . Это глубокое знание системы, которое отличает инженера от "эникейщика".

#linux #bash #sre #diagnostics #lsof #storage #скрипты #гайд
🔥2
🕵️‍♂️ Linux: Кто занял порт? Кто держит файл? (lsof)

Классика: вы пытаетесь перезапустить Nginx, а он кричит: "Address already in use". Или пытаетесь размонтировать флешку, а Linux говорит: "Device is busy". Не гадайте. Вызывайте детектива — lsof (List Open Files).

1. Кто слушает порт 80?
lsof -i :80

Вывод покажет PID процесса. Можно сразу его убить.

2. Кто держит файл или папку? Если не дает удалить папку /var/www, узнайте, кто в ней сидит:
lsof +D /var/www

3. Что делает конкретный юзер?
lsof -u username

В Linux "всё есть файл" (и сокеты, и библиотеки). Поэтому lsof видит вообще всё.

#linux #cli #lsof #troubleshooting #sysadmin #tips
🐧 Linux: Спасаем диск от Ghost Files (удаленные, но занятые файлы)

Бывает так: df -h говорит, что диск забит на 100%, но du -sh показывает, что папки занимают всего пару гигабайт. Куда делось место? Скорее всего, какой-то процесс (например, nginx или база данных) держит открытым файл, который вы уже удалили командой rm. В Linux файл не удалится физически, пока его держит процесс.

Как найти этих "призраков":

lsof +L1

Что делать: Вы увидите список файлов с пометкой (deleted). Вместо того чтобы убивать процесс (что критично для продакшена), можно просто "обнулить" дескриптор файла:

truncate -s 0 /proc/[PID]/fd/[FD_NUMBER]

Место освободится мгновенно без рестарта сервиса.

#linux #sysadmin #troubleshooting #storage #lsof #filesystems
👍2
🐧 Linux: Кто держит мой файл и не дает его удалить?

Привет, коллеги! Пятница, 20 марта. Ситуация классическая: ты пытаешься размонтировать диск или удалить огромный старый лог, а система выдает Device or resource busy. В 2026 году, когда на одном сервере крутится сотня контейнеров и сервисов, искать виновника вручную — это как искать иголку в стоге сена.

Используй lsof (LiSt Open Files). Это твой рентген для файловой системы. Он покажет всё: какой процесс открыл файл, какой у него PID и что он с ним делает.


Практика:


# Найти процесс, который занял конкретный файл
lsof /var/log/nginx/access.log

# Посмотреть всё, что открыто в конкретной папке (удобно при размонтировании)
lsof +D /mnt/data/

# Узнать, какие сетевые файлы открыты конкретным пользователем
lsof -u admin -i


Зачем это нужно:
Для скорости. Вместо того чтобы гадать и перезапускать сервисы наугад, ты за одну секунду находишь PID процесса и решаешь, что с ним делать — подождать или культурно убить через kill. В пятницу вечером каждая сэкономленная минута приближает тебя к отдыху.


#linux #lsof #troubleshooting #admin_future
🔥2