Угадайте, кто использовал "=" вместо "==", подразумевая, что правило будет соответствовать, кто-либо удаляет событие?Ой...
Существует много перекрытия в двух наборах событий, но строка, которая будет предназначаться для того концентратора:
ACTION=="remove", ENV{PRODUCT}=="50d/237/100", RUN+="/sbin/shutdown -h now"
Программа lsof
позволяет проверить, какие процессы используют какие ресурсы, например, файлы или порты.
Чтобы показать, какие процессы прослушивают на порту 8080:
lsof -Pi :8080 -sTCP:LISTEN
В вашем случае, вы хотите проверить, прослушивает ли процесс на 8080 - возвращаемое значение этой команды говорит именно об этом. Также она печатает pid процесса.
lsof -Pi :8080 -sTCP:LISTEN -t
Если вам нужен только тест, без вывода, перенаправьте его на /dev/null
:
if lsof -Pi :8080 -sTCP:LISTEN -t >/dev/null ; then
echo "running"
else
echo "not running"
fi
Если вы локально используете несколько имен хостов с несколькими IP-адресами, укажите также имя хоста как
lsof -Pi @someLocalName:8080 -sTCP:LISTEN
Простейший способ бить. Проверьте, открыт ли ваш порт.
(echo >/dev/tcp/localhost/8080) &>/dev/null && echo "TCP port 8080 open" || echo "TCP port 8080 close"
Замените эхо на то, что хотите.
Или вы можете использовать nc.
nc -vz 127.0.0.1 8080
Возвращает:
Подключение к переносу 127.0.0.1 8080 [tcp/*] успешно
Уточнение ответа RJ, в котором отмечается nc
, также полезно ... NC
полезно не только для быстрого запрос командной строки
❯ nc -z -v -w5 127.0.0.1 8080
localhost [127.0.0.1] 8080 (http-alt) : Connection refused
, но его можно использовать без -v, если удобочитаемость - не то, что вам нужно - например, для использования в сценарии (код выхода укажет, открыт ли порт или закрыто).
❯ nc -z 127.0.0.1 8080
❯ echo $?
1