因为启动Emacs的时候不知道为什么卡住了,就用strace -p $(pgrep emacs)想看看卡那了,然后发现它在从7号fd中读取内容
lujun9972:~/ $ sudo strace -p 1265
[sudo] lujun9972 的密码:
strace: Process 1265 attached
read(7,
然后我去 /proc/1265/fd/下想看7号fd指向哪,
lujun9972:fd/ $ ls -l
总用量 0
lr-x------ 1 lujun9972 users 64 9月 25 20:04 0 -> /dev/null
lrwx------ 1 lujun9972 users 64 9月 25 20:04 1 -> 'socket:[27554]'
lrwx------ 1 lujun9972 users 64 9月 25 20:04 2 -> 'socket:[27554]'
lrwx------ 1 lujun9972 users 64 9月 25 20:04 3 -> 'anon_inode:[timerfd]'
lrwx------ 1 lujun9972 users 64 9月 25 20:04 4 -> 'anon_inode:[eventfd]'
lr-x------ 1 lujun9972 users 64 9月 25 20:04 5 -> anon_inode:inotify
lr-x------ 1 lujun9972 users 64 9月 25 20:04 7 -> 'pipe:[34038]'
然后就晕了,这里的链接除了 /dev/null 看得懂外,其他的都看不懂...
最近编辑记录 lujun9972 (2019-09-26 22:13:08)
离线
管道啊。你不会看文档啊。http://man7.org/linux/man-pages/man5/proc.5.html
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
嗯如樓上所說 man 5 proc 的 /proc/[pid]/fd/ 條目有詳細解釋。
以及諸如 pipe: 和 socket: 這種的後面方括號裏面的是 inode 號,對應 PipeFS 和 SockFS https://www.linux.org/threads/pipefs-so … tyfs.9638/
其它沒 inode 號的是 anon_inode: 後面寫文件類型(創建它的系統調用類型)
computerは神様だと信じていて
だからVIMの上でずっと指が舞って
自ら恋愛相手を作り出して
离线
哦,抱歉,没想到可以在 man 5 proc 中可以找到答案。
能不能再请教一下,有办法根据proc的inode找出是跟哪个程序的输出端相连吗?是不是只能遍历/proc/*/fd/*的指向才能找出来呢?
最近编辑记录 lujun9972 (2019-09-26 09:43:21)
离线
标准的Linux内核似乎没有这个操作。可能sysdig之类的可以。而且就不兴人家有两个进程同时持有管道另一端的fd吗?
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
嗯大概只能遍歷 /proc/*/fd/* 吧,或者 lsof | grep FIFO ,不過 lsof 應該也就是遍歷 /proc/*fd/
computerは神様だと信じていて
だからVIMの上でずっと指が舞って
自ら恋愛相手を作り出して
离线
嗯大概只能遍歷 /proc/*/fd/* 吧,或者 lsof | grep FIFO ,不過 lsof 應該也就是遍歷 /proc/*fd/
所以我讲嘞,sysdig要加载一个内核模块的,兴许那个模块提供了什么魔法功能,不需要遍历procfs也能查询到此类信息
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
明白了,谢谢两位大侠.
离线