Why "lsof" reports files for each thread in process ?
Issue
- Doing
lsof -p PID
will get the open files andlsof | grep PID
gets all files repeated for each thread in theproc
. strace
shows its opening each/proc/pid/task/pid/fd
directory per thread.- Compile below :
cat 10.c
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
void *thr(void *arg)
{
sleep(60);
return(0);
}
int main(void)
{
int i;
FILE *fp[10];
char name[32];
pthread_t t;
for (i = 0; i < 10; i++) {
sprintf(name, "/dev/shm/test_%d", i);
fp[i] = fopen(name, "w");
}
pthread_create(&t, 0, thr, 0);
pthread_join(t, 0);
return(0);
}
- Running it :
[root@localhost ~]# ./10 &
[1] 26790
[root@localhost ~]# lsof -p 26790
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
10 26790 root cwd DIR 253,0 4096 201326721 /root
10 26790 root rtd DIR 253,0 4096 128 /
10 26790 root txt REG 253,0 5024 202109902 /root/10
10 26790 root mem REG 253,0 2107816 67240415 /usr/lib64/libc-2.17.so
10 26790 root mem REG 253,0 142304 67240435 /usr/lib64/libpthread-2.17.so
10 26790 root mem REG 253,0 164440 67240412 /usr/lib64/ld-2.17.so
10 26790 root 0u CHR 136,1 0t0 4 /dev/pts/1
10 26790 root 1u CHR 136,1 0t0 4 /dev/pts/1
10 26790 root 2u CHR 136,1 0t0 4 /dev/pts/1
10 26790 root 3w REG 0,18 0 239293070 /dev/shm/test_0
10 26790 root 4w REG 0,18 0 239293071 /dev/shm/test_1
10 26790 root 5w REG 0,18 0 239293072 /dev/shm/test_2
10 26790 root 6w REG 0,18 0 239293073 /dev/shm/test_3
10 26790 root 7w REG 0,18 0 239293074 /dev/shm/test_4
10 26790 root 8w REG 0,18 0 239293075 /dev/shm/test_5
10 26790 root 9w REG 0,18 0 239293076 /dev/shm/test_6
10 26790 root 10w REG 0,18 0 239293077 /dev/shm/test_7
10 26790 root 11w REG 0,18 0 239293078 /dev/shm/test_8
10 26790 root 12w REG 0,18 0 239293079 /dev/shm/test_9
[root@localhost ~]# lsof | grep 26790
lsof: WARNING: can't stat() nfs file system /cs
Output information may be incomplete.
10 26790 root cwd DIR 253,0 4096 201326721 /root
10 26790 root rtd DIR 253,0 4096 128 /
10 26790 root txt REG 253,0 5024 202109902 /root/10
10 26790 root mem REG 253,0 2107816 67240415 /usr/lib64/libc-2.17.so
10 26790 root mem REG 253,0 142304 67240435 /usr/lib64/libpthread-2.17.so
10 26790 root mem REG 253,0 164440 67240412 /usr/lib64/ld-2.17.so
10 26790 root 0u CHR 136,1 0t0 4 /dev/pts/1
10 26790 root 1u CHR 136,1 0t0 4 /dev/pts/1
10 26790 root 2u CHR 136,1 0t0 4 /dev/pts/1
10 26790 root 3w REG 0,18 0 239293070 /dev/shm/test_0
10 26790 root 4w REG 0,18 0 239293071 /dev/shm/test_1
10 26790 root 5w REG 0,18 0 239293072 /dev/shm/test_2
10 26790 root 6w REG 0,18 0 239293073 /dev/shm/test_3
10 26790 root 7w REG 0,18 0 239293074 /dev/shm/test_4
10 26790 root 8w REG 0,18 0 239293075 /dev/shm/test_5
10 26790 root 9w REG 0,18 0 239293076 /dev/shm/test_6
10 26790 root 10w REG 0,18 0 239293077 /dev/shm/test_7
10 26790 root 11w REG 0,18 0 239293078 /dev/shm/test_8
10 26790 root 12w REG 0,18 0 239293079 /dev/shm/test_9
10 26790 26791 root cwd DIR 253,0 4096 201326721 /root
10 26790 26791 root rtd DIR 253,0 4096 128 /
10 26790 26791 root txt REG 253,0 5024 202109902 /root/10
10 26790 26791 root mem REG 253,0 2107816 67240415 /usr/lib64/libc-2.17.so
10 26790 26791 root mem REG 253,0 142304 67240435 /usr/lib64/libpthread-2.17.so
10 26790 26791 root mem REG 253,0 164440 67240412 /usr/lib64/ld-2.17.so
10 26790 26791 root 0u CHR 136,1 0t0 4 /dev/pts/1
10 26790 26791 root 1u CHR 136,1 0t0 4 /dev/pts/1
10 26790 26791 root 2u CHR 136,1 0t0 4 /dev/pts/1
10 26790 26791 root 3w REG 0,18 0 239293070 /dev/shm/test_0
10 26790 26791 root 4w REG 0,18 0 239293071 /dev/shm/test_1
10 26790 26791 root 5w REG 0,18 0 239293072 /dev/shm/test_2
10 26790 26791 root 6w REG 0,18 0 239293073 /dev/shm/test_3
10 26790 26791 root 7w REG 0,18 0 239293074 /dev/shm/test_4
10 26790 26791 root 8w REG 0,18 0 239293075 /dev/shm/test_5
10 26790 26791 root 9w REG 0,18 0 239293076 /dev/shm/test_6
10 26790 26791 root 10w REG 0,18 0 239293077 /dev/shm/test_7
10 26790 26791 root 11w REG 0,18 0 239293078 /dev/shm/test_8
10 26790 26791 root 12w REG 0,18 0 239293079 /dev/shm/test_9
Environment
Red Hat Enterprise Linux 7.2
kernel 3.10.0-327.10.1.el7.x86_64
lsof-4.87-4.el7.x86_64
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.