TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #572 853
Скрипт проверки зависших mount

Иногда сервер начинает странно тормозить: команда df -h зависает, ls не отвечает, а проблема оказывается в примонтированной NFS/SMB/сетевой ФС. Причина простая: mount есть, но I/O к нему не отвечает.

Проверить это можно через связку: timeout + stat. Можно выполнить stat для точки монтирования, но ограничить время ожидания.

▪️ Пример ручной проверки


timeout 3 stat /mnt/backup


Если ФС отвечает - увидим информацию о каталоге. Если команда зависла и была остановлена по таймауту - mount подозрительный.

🛠 Скрипт проверки всех mount


#!/usr/bin/env bash

TIMEOUT=3

findmnt -rn -o TARGET | while read -r mountpoint; do
if timeout "$TIMEOUT" stat "$mountpoint" >/dev/null 2>&1; then
echo "OK: $mountpoint"
else
echo "HANG: $mountpoint"
fi
done


Сохраняем:


nano check-mounts.sh


Делаем исполняемым:


chmod +x check-mounts.sh


Запускаем:


sudo ./check-mounts.sh


Пример вывода


OK: /
OK: /boot
OK: /home
HANG: /mnt/backup
HANG: /mnt/nfs-share


🛠 Также можно проверять только сетевые ФС


#!/usr/bin/env bash

TIMEOUT=3

findmnt -rn -t nfs,nfs4,cifs,smb3 -o TARGET | while read -r mountpoint; do
if timeout "$TIMEOUT" stat "$mountpoint" >/dev/null 2>&1; then
echo "OK: $mountpoint"
else
echo "HANG: $mountpoint"
fi
done


Такой вариант удобнее для серверов, где много локальных mount.

⚠️ stat может зависнуть, если ядро ждет ответ от удаленного хранилища. Поэтому мы оборачиваем его в timeout. Без timeout ваш скрипт сам может зависнуть на проблемной точке монтирования.

▪️ Быстрая проверка одной строкой


findmnt -rn -o TARGET | while read -r mp; do
timeout 3 stat "$mp" >/dev/null 2>&1 \
&& echo "OK: $mp" \
|| echo "HANG: $mp"
done


BashTex 📱 #mount #script
  • 👍 8
More from @bash_tex
  1. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  2. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  3. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  4. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
  5. Oct 1, 2026flock vs fcntl - почему две блокировки одного файла могут вести себя совершенно по-разному…
  6. Sep 30, 2026DEBUG trap - как Bash выполняет код перед каждой командой В Bash есть специальный DEBUG tr…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →