я использую ss
в пакете iproute2 для вывода статистики сокетов. С помощью -p
опция может предоставить мне информацию о процессе. Вы знаете, что означают цифры? Я вижу, что первый PID, но не последний.
Пример вывода:
ESTAB 0 0 192.168.1.2:59246 124.40.42.38:www users:(("gweather-applet",1922,23))
ESTAB 0 0 192.168.1.2:42612 72.14.213.16:imaps users:(("thunderbird-bin",5553,45))
Второе число - это номер дескриптора файла, связанного с этим соединением в процессе.
Как показано в реализации сс :
static int find_users(unsigned ino, char *buf, int buflen)
{
struct user_ent *p;
int cnt = 0;
char *ptr;
if (!ino)
return 0;
p = user_ent_hash[user_ent_hashfn(ino)];
ptr = buf;
while (p) {
if (p->ino != ino)
goto next;
if (ptr - buf >= buflen - 1)
break;
snprintf(ptr, buflen - (ptr - buf),
"(\"%s\",%d,%d),",
p->process, p->pid, p->fd);
ptr += strlen(ptr);
cnt++;
next:
p = p->next;
}
if (ptr != buf)
ptr[-1] = '\0';
return cnt;
}
первое число p-> pid, а второе p-> fd.