Я пробовал разные команды netstat
, lsof
, но мое требование: я хочу передать порт прослушивания, говорят, что процесс x запущен на chl21000303.sesson.net: 32456.
Мне нужна команда linux, которая читает только порт 32456 и хочет передать его в java, как java -jar runs.jar port.
Поэтому мне нужны некоторые команды для получения только работающего порта или порта прослушивания. Если я попробую команды netstat вроде этого, я скажу около 20 строк портов.
Вы можете сделать это в сценарии оболочки
var='"netstat -atn | grep LISTEN | awk {print $4}"'
for x in $var
do
port='echo $x | awk -F':' '{print $2}'';
echo $port;
done
У вас есть номер порта в $ port, который вы можете передать в свой java-скрипт
netstat | awk '{print $4}' | sed -nr 's/.*:([0-9]+)/\1/p' | xargs java -jar runs.jar
Я не совсем понимаю вопрос. Вышеупомянутый будет включать все номера портов в аргументы вашего java файла
Если вы уверены, что это будет на chl21000303.sesson.net, вы можете вместо этого сделать
netstat | awk '{print $4}' | sed -nr 's/chl21000303.sesson.net:([0-9]+)/\1/p' | xargs java -jar runs.jar
edit-
для полного завершения плохо дать краткий обзор того, что все делает.
netstat получает все соединения и подключает его к awk. awk получает 4-й столбец и передает его в sed. sed получает номер порта, используя регулярное выражение, и передает его в вашу java-программу в качестве аргументов