Проверить в Linux, что определенный порт занят

Я пишу сценарий, который запускает сервер, который хочет использовать определенный номер порта. В некоторых случаях этот порт занят. Я хочу знать, как это проверить в bash, чтобы правильно отреагировать.

Как я могу проверить на Linux, что определенный порт занят?

0
задан 23 May 2016 в 21:04
2 ответа

Вы можете использовать netcat, чтобы проверить, прослушивает ли порт что-либо:

PORT_STATUS=$(nc -v <host> -z <port number> 2>&1 | grep open | wc -l )
if [[ "$PORT_STATUS" = "1" ]];then
    echo Port is occupied
fi

Это, конечно, работает только в том случае, если нет брандмауэра, блокирующего netcat. Но если запустить его локально на сервере, то хотя бы проблем возникнуть не должно.

2
ответ дан 4 December 2019 в 13:41

Если вы имеете в виду порт TCP, вы можете проверить с помощью netstat, может сработать что-то вроде этого:

 netstat -ntp |  grep -v '::' | awk  '{print $4}'  | grep -E '^[[:digit:]]+' | awk -F: '{print $2}' | sort -n | uniq

Конечно, это не атомарно, поэтому возможно, что какой-то порт будет занят после проверки операции, но до запуска службы.

0
ответ дан 4 December 2019 в 13:41

Теги

Похожие вопросы