Как говорит название, я бегу несколько игровых серверов, и каждый из них имеет то же самое , name
но разные PID
и в port
номер. Я хотел бы сопоставить PID
сервер, который прослушивает определенный порт, а затем я хотел бы убить этот процесс. Мне это нужно для завершения моего сценария bash.
Это вообще возможно? Потому что он еще не нашел решений в сети.
netstat: 80: unknown or uninstrumented protocol
использовал80
порт (nginx) для целей тестирования. Не сработало.netstat -nlp | grep :80
вместо этогоnetstat: option requires an argument -- p
netstat
. У него другой синтаксис.Краткая версия, которую вы можете передать команде kill:
источник
lsof -i4TCP:80 -sTCP:LISTEN -t
это, вероятно, то, что вы хотите вместо этого.kill -9 `lsof -i:80 -t`
для удобства копированияnetstat -p -l | grep $PORT
иlsof -i :$PORT
решения хороши, но я предпочитаюfuser $PORT/tcp
синтаксис расширения POSIX (который работаетcoreutils
), как с pipe:он печатает чистый pid, чтобы вы могли выбросить
sed
магию.Одна вещь, которая делает
fuser
мои любимые инструменты, - это возможность напрямую отправлять сигнал этому процессу (этот синтаксис также является расширением POSIX):Также -k поддерживается FreeBSD: http://www.freebsd.org/cgi/man.cgi?query=fuser
источник
netstat -nlp
должен сообщить вам PID того, что слушает какой порт.источник
netstat: 80: unknown or uninstrumented protocol
использовал80
порт (nginx) для целей тестирования. Не сработало.Поскольку sockstat изначально не был установлен на моей машине, я взломал стандартный ответ, чтобы вместо этого использовать netstat ..
источник
Я хотел программно - используя только Bash - убить процесс, прослушивающий данный порт.
Допустим, это порт 8089, тогда я сделал следующее:
Надеюсь, это поможет кому-то другому! Я знаю, что это поможет моей команде.
источник
function kill-listener { lsof -i:$1 -t | xargs kill -9 }
Используя ваш пример порта 8089:kill-listener 8089
Синтаксис:
Пример: чтобы остановить процесс, запущенный на порту 4200, выполните следующую команду
Проверено в Ubuntu.
источник
в Windows параметр netstat для получения идентификатора pid равен -o, а -p выбирает фильтр протокола, например: netstat -a -p tcp -o
источник