войти в состояние TIME_WAIT, чтобы ESTABLISHED получить PID - PullRequest
0 голосов
/ 14 января 2020

я получил linux соединение в состоянии TIME_WAIT, и иногда оно переходит в состояние ESTABLISHED и немедленно возвращается к TIME_WAIT. мой удаленный порт для удаленного - 3306.

netstat -tulnap |grep 10.10:                                                                                                                   

     tcp        0      0 10.2.11.169:50010           10.2.10.10:3306             TIME_WAIT   -

Я хотел бы постоянно проверить состояние ESTABLISHED и вывести локальный PID и команду, выполненную в момент его поступления.

i alread попробуйте эту команду:

watch -n 0,1 "netstat -tulnap |grep "10.10" |grep ESTA | awk '{print $7}' |cut -d / -f1" | tee -a /tmp/test.log

Команда дает мне pid, но не дает подробных сведений о процессе и выполненной команде.

10.2.10.10:5666^[[3;77HESTABLISHED 7327^[

Как мне выполнить exe c мгновенное «ps faux | grep $ pid», когда соединение УСТАНОВЛЕНО.

Для информации, соединение находится в УСТАНОВЛЕННОМ состоянии в течение + -0,1 с c до того, как оно опустится до TIME_WAIT. Это происходит примерно в 15.20 раз каждую минуту. Очевидно, что когда я пытаюсь использовать ps faux | grep $ pid после того, как связь не работает, pid не существует ..

Кстати, я просто хочу проверить:

if " заявление о связи УСТАНОВЛЕНО ok "do" извлекает pid и получает некоторую информацию об этом "

Спасибо большое!

1 Ответ

0 голосов
/ 14 января 2020

Я бы НЕ рекомендовал вам запускать это без какого-либо фактического тестирования, так как это повлияет на ваш компьютер (Mine использовал ~ 1% процессора, но YMMV), нет необходимости запускать команду наблюдения, поэтому она должна быть более детальной, чем даже 0,1 секунды.

Вы можете сделать что-то вроде:

while true; do
PID=`netstat -tulnap |grep "10.10" |grep ESTA | awk '{print $7}' | awk -F/ '{print $1}'`
   if [[ ! -z $PID ]]; then
    cat /proc/$PID/cmdline
  fi
done

Это будет выполняться бесконечно (пока не отменено) и будет выполняться максимально быстро - вы можете увидеть это, выполнив что-то вроде:

echo $PID `date` 

и проверку временных меток.

Я бы порекомендовал cat /proc/$PID/cmdline для фактической проверки команды pid.

Там также должны быть дополнительные проверки, чтобы это не не спамить один и тот же процесс (вы говорите, что он быстро проходит, но, возможно, нет). Может быть, что-то вроде сохранения pid и запускается только если оно не того же значения? например last_pid! = pid et c.

...