Соединитесь между PID и портом на ZOS

Мой вопрос относится к ZOS 2.1 и 1.13, я ищу команду в ZOS, как

netstat -ano

в винде.

У меня есть номер порта TCP-соединения, и я хочу знать PID, который подключается к нему.

Я знаю системную команду MVS для пользователей и TCP:

/d omvs,asid=all

но вывод не включает PID.

Существуют ли какие-либо команды оболочки из USS (OMVS) MVS, Rexx или Java-функции?

1 ответ

Требуемая консольная команда будет "D TCPIP,CONN". Это покажет вам состояние всех различных сетевых подключений, и вы можете выровнять выход с помощью команды "D OMVS,A=ALL", которую вы упомянули, чтобы определить PID для любого соединения с открытым сокетом.

Обратите внимание, что если на вашем сайте работает несколько стеков TCP/IP, вам необходимо знать имя стека TCPIP, владеющего интересующим вас соединением. Команда "D TCPIP,DEVLINK" может помочь вам в этом... обычно, если вы запускаете несколько стеков, каждый будет обслуживать разные IP-адреса (и устройства). Вам нужно знать, к чему вы подключаетесь (IP-адрес и порт), затем связать IP-адрес с именем задания стека TCP/IP, а затем получить нужные данные.

Если вам нужно сделать что-то подобное из оболочки USS, вы также можете использовать команды "ps" и "netstat" для получения этих же данных. Существуют также API-интерфейсы, которые позволят вам делать все это программно из C/C++ или, возможно, Java, если вы не возражаете против вмешательства JNI-кода.

Обратите внимание, что полученный вами комментарий о том, что PID может отсутствовать, как правило, не соответствует действительности. Когда приложение открывает сокет, оно сначала "перезаписывается" как процесс служб UNIX, и это означает, что вызывающему абоненту назначается идентификатор процесса. Действительно, иногда у вас возникает противоположная проблема - сложное приложение со многими подзадачами может иногда иметь несколько идентификаторов PID в одном адресном пространстве.

Другие вопросы по тегам