在/proc/pid/fd/
中,文件描述符太多。我可以使用shell命令关闭这些文件描述符吗?如何通过Linux shell命令关闭文件描述符
回答
您可以在bash关闭当前程序的FD n
像这样:
exec n<&-
谢谢。但它用于关闭当前进程的FD(bash进程)。你知道关闭特定过程的FD的方法吗? – Eric 2011-05-13 08:07:52
你不能只是到处去关闭其他进程的文件描述符,并希望他们继续工作。
修复打开了太多文件的程序,使其打开的次数减少。这可能是一个配置更改,或修改源等你不能只关闭它的文件。
当然可以。想要这样做的一个常见情况是因为程序泄漏了fd;在这种情况下,它不会再使用它们。当然,这是一个错误,但想要解决它仍然是有效的。 – 2012-08-21 15:10:26
在我的情况下,我有一个长时间运行的挂起批处理过程,因为从http套接字读取已经死亡。关闭fd作为@ThomasVanderStichele描述为我解决了这个问题:-) – 2015-03-31 00:45:15
只要您有权限,您就可以关闭其他正在运行的进程的fd。
首先找到PID。
然后,启动gdb并且连接到进程:
gdb -p 1598
然后,打电话要关闭FD上的close系统调用:
(gdb) call close(999)
$1 = 0
如果文件描述符被泄露一个,那么该程序将永远不会再尝试使用它,它不应该引起任何问题。然而,该程序很可能有一个错误。
我跑了类似的情况,但其中gdb
不是一个选项,因为它破坏了我的应用程序的实时约束和扭曲我的测试。
所以我想出了一个快速iptables
规则。 将可选参数放在方括号内([ opt ]
)。
找到你的IP地址和端口:
netstat --program [ --numeric-host --numeric-ports ] | grep [<pid>]/[<appname>]
$ netstat --program --numeric-ports | grep 8812/ tcp 0 0 ysc.xxx:54055 10.56.1.152:30000 ESTABLISHED 8812/my-application tcp 0 0 ysc.xxx:46786 postgres.xxx:5432 ESTABLISHED 8812/my-application tcp 0 0 ysc.xxx:36090 10.56.4.79:57000 ESTABLISHED 8812/my-application ... unix 2 [ ] DGRAM 7177020 8812/my-application
在这里,我想削减
10.56.4.79:57000
。创建
iptables
规则切断插座:iptables -A OUTPUT [ --out-interface <if> --protocol <tcp|udp|unix> ] --destination <addr> --dport <port> --jump DROP
$ iptables -A OUTPUT --destination 10.56.4.79 --dport 57000 --jump DROP $
在这个阶段,你的程序不能将数据包发送到遥远的主机。在大多数情况下,TCP连接已关闭。如果有的话,你可以继续进行测试。
$ netstat --program --numeric-ports | grep 8812/ tcp 0 0 ysc.xxx:54055 10.56.1.152:30000 ESTABLISHED 8812/my-application tcp 0 0 ysc.xxx:46786 postgres.xxx:5432 ESTABLISHED 8812/my-application ... unix 2 [ ] DGRAM 7177020 8812/my-application
取出
iptables
规则:您只需键入相同
iptables
规则由D
更换A
。$ iptables -D OUTPUT --destination 10.56.4.79 --dport 57000 --jump DROP $
请注意,我的意图是测试如果我的应用程序如果失去与关键服务的连接,它将如何反应。 – YSC 2016-02-23 08:38:24
- 1. 关闭文件描述符
- 2. Adb shell命令描述
- 3. python关闭文件描述符问题
- 4. Logstash关闭文件描述符?
- 5. Linux open()文件描述符
- 6. Linux内核 - 套接字文件描述符关闭位置
- 7. Linux的wc命令和文件描述符
- 8. 关闭原始文件描述符后,重复的描述符文件是否关闭?
- 9. 复制文件失败,EBADF关闭输出文件描述符
- 10. 关闭文件指针而不关闭底层文件描述符
- 11. 的Python:关闭文件描述符daemonizing过程
- 12. 通过文件描述符 - Execve(typecast)
- 13. 如何在python中关闭文件描述符?
- 14. 如何枚举文件描述符? (叉后关闭它们)
- 15. 文件描述符未在exec上关闭
- 16. 从文件描述符重命名?
- 17. 执行ioctl时关闭文件描述符
- 18. 关闭正在轮询的文件描述符
- 19. 文件描述符饥饿和阻断文件描述符
- 20. Linux文件描述符日志
- 21. Linux文件描述符表和vmalloc
- 22. Linux Socket文件描述符与线程
- 23. Epoll_wait在关闭的文件描述符上返回事件
- 24. 执行描述shell命令的字符串数组
- 25. 进程在Linux中终止时文件描述符是否关闭?
- 26. 在子进程中关闭已打开的文件描述符
- 27. 关闭log4j记录器以释放文件描述符
- 28. 如何通过int描述符找出文件名? (或“?可我..”)
- 29. 错误的文件描述符关闭Boost套接字
- 30. 了解dup2和关闭文件描述符
哪个过程是?它是你的程序吗?你能发布一些信息来源吗? – MarkR 2011-05-14 06:53:24