On Sat, 2009-05-23 at 13:53 +0200, Mildred Ki'Lya wrote:
So, it happened again. There are 234 opened sockets, and the last file
descriptor seems to be 255u, so perhaps there is a limit there. Any
ideas on how to find the program responsible for that?
This is a bit awkward since there's no obvious way to get the inode of
the peer socket. The best you can do is hope that it was created
immediately before the corresponding fd in the X server. So, something
like this:
---
#!/usr/bin/python
from subprocess import Popen, PIPE
client_sockets = []
match = 0
ns = Popen(["netstat", "-an", "--unix"], stdout=PIPE)
output = ns.communicate()[0]
for line in output.split('\n'):
if line.find("X11-unix") != -1:
match = 1
elif match:
match = 0
inode = line.split()[6]
client_sockets.append(inode)
lsof = Popen(["lsof", "-U", "+c0", "-w"], stdout=PIPE)
output = lsof.communicate()[0]
for line in output.split('\n'):
try:
inode = line.split()[7]
if inode in client_sockets:
print line
except:
pass
---
- ajax