TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #439 1.25K
Автопоиск подвисших сетевых соединений и перезапуск сервисов

Если сервис начинает подвисать, это часто видно по сети: соединения зависают в SYN-SENT, CLOSE-WAIT или сидят в одном состоянии слишком долго. Это можно определить прямо в bash, без netstat/ss.

1️⃣ Читаем таблицу соединений из /proc/net/tcp

Формат /proc/net/tcp содержит:

local addr/port
remote addr/port
state
inode (ключ!)


Мы будем искать ошибочные или зависшие состояния.



grep -E "$(echo $hung_states | sed 's/ /|/g')" /proc/net/tcp |
while read -r _ _ _ state _ _ _ _ inode _; do
echo "$inode"
done


2️⃣ Привязка inode к PID процесса. Каждый сокет отображается как /proc/$pid/fd/* → socket:[inode].


find_pid_by_inode() {
inode=$1
for p in /proc/[0-9]*/fd/*; do
if readlink "$p" 2>/dev/null | grep -q "socket:\[$inode\]"; then
echo "$p" | cut -d/ -f3
fi
done
}


3️⃣ Перезапуск сервиса


for inode in $(get_hung_inodes); do
pid=$(find_pid_by_inode "$inode")
svc=$(ps -p "$pid" -o comm=)

echo "Hung socket in PID $pid ($svc)"

case "$svc" in
nginx) systemctl restart nginx ;;
sshd) systemctl restart sshd ;;
myapp) systemctl restart myapp ;;
esac
done


▪️Получаем:

- Автоматический поиск зависших TCP-соединений;
- Связь сокета с реальным процессом;
- Перезапуск только нужного сервиса;

Такой подход полезен для nginx, API-сервисов, баз данных и любых демонов, которые иногда залипают в сетевых состояниях.

BashTex 📱 #bash #utils
  • 👍 10
More from @bash_tex
  1. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  2. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  3. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  4. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  5. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
  6. Oct 1, 2026flock vs fcntl - почему две блокировки одного файла могут вести себя совершенно по-разному…
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 →