Linux文件句柄占用数量查看与设置

Linux文件句柄占用数量查看与设置,第1张

安装lsof

yum install lsof

查看线程占句柄

ulimit -a

查看系统打开句柄最大数量

more /proc/sys/fs/file-max

1

查看打开句柄总数

lsof|awk '{print $2}'|wc -l

1

根据打开文件句柄的数量降序排列,其中第二列为进程ID:

lsof|awk '{print $2}'|sort|uniq -c|sort -nr|more

1

根据获取的进程ID查看进程的详情

ps -ef |grep

1

修改linux单进程最大文件连接数

修改linux系统参数。vi /etc/security/limitsconf 添加

softnofile65536

hardnofile65536

修改以后保存,注销当前用户,重新登录,执行ulimit -a ,ok ,参数生效了:

你用的是IBMMQ还是Apache的?一般通过JAVA的JMS可以取得。

例如IBMMQ里有个MQQueue对象

//获取队列实例

MQQueuequeue=qMgraessQueue("TEST_QUEUE",openOptions);

//获取当前队列最长消息的长度

queue()

//获取当前队列最长深度

queue()

等等功能都是提供的,具体你下载个WebSphereMQAPI找到MQQueue一看便知。

linux系统下查看进程打开文件 在/proc下,对应每个进程有一个以进程号命名的目录,该目录下有一个fd目录,该目录下面的每个文件是一个符号连接,其文件名对应该进程占用的一个文件描述符,而连接指向的内容表示文件描述符对应的实际文件,有多少

FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
'可以通过查看前景窗口是否为指定窗口判断
hwd1 = FindWindow("#32770", "QQ用户登录") '获得指定窗口句柄
hwd2 = GetForegroundWindow '获得前景窗口句柄
If hwd1 = hwd2 Then MsgBox "指定窗口为活动状态!" '判断是否相同
'可以通过ModifyMenu修改系统菜单来禁止移动,但并不适用所有窗体,有的窗体不具有系统菜单(BorderStyle=0)
'但通过子类化仍可以实现系统菜单具有的功能,新建窗体,添加command1,复制粘贴下段代码
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As Any) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const SC_MOVE = &HF010&
Private Const MF_BYCOMMAND = &H0&
Private Const MF_ENABLED = &H0&
Private Const MF_GRAYED = &H1&
Private Sub Command1_Click()
hwind = FindWindow("#32770", "QQ用户登录") '获取窗体句柄
hMenu = GetSystemMenu(hwind, False) '获取该窗体系统菜单句柄
ModifyMenu hMenu, SC_MOVE, MF_BYCOMMAND Or MF_GRAYED, -10, "禁止移动" '设置移动菜单项不可用,并指定新ID为小于0的-10以防止系统重新加载该菜单,新标题为“禁止移动”,成功返回非0,失败0
'ModifyMenu hMenu, -10, MF_BYCOMMAND + MF_ENABLED, SC_MOVE, "移动(&M)" '恢复移动菜单
SendMessage hwind, WM_NCACTIVATE, True, 0 '发送WM_NCACTIVE消息到指定窗体刷新非客户区(标题栏)
End Sub

Linux系统如何查看修改最大打开文件数,这个问题对于很多刚刚学习linux的小伙伴来说觉得有点奇怪。Linux系统和windows不同之处在于更强的多任务多线程,由于文件系统结构的不同linux针对不同进程不同用户都可以设置最打打开文件数。(如下图,在设置某些配置文件的时候,会出现下图提示超过系统最大打开文件数
工具/原料
Centos
Linux文件数打开数
查看当前系统最大的文件打开数,如下图
在linux终端中输入ulimit -a
“open files”参数选项后面的数值就是当前系统支持的最大打开文件数
修改linux最大文件打开数
如果要修改linux最大文件打开数,可以通过如下图参数命令 unlimit -n 后面接需要设置的文件数量。
设置好之后,再次查看 unlimit -a 你会发现已经设置为新的数量了
设置好之后,再次编辑修改重启设置的服务,已经没有刚刚那个1024文件数限制的报错提示
其他修改方法
除此之外,如果针对不同的用户。也可以通过编辑修改 /etc/rclocal文件设置环境变量,添加 unlimit -n
如下图,重启之后一般就自动设置好了
查看系统句柄文件数
当前系统文件句柄的最大数目,只用于查看,不能设置修改
cat /proc/sys/fs/file-max
查看进程打开文件数
如果需要查看所有进程的文件打开数,如下图命令lsof |wc -l
特别提醒:
对于做服务器的linux系统来说,适当调整增加文件打开数量。可以加快服务性能,并且提供服务的连接线程数量。咗嚛提醒为了服务器性能,建议也不要设置太大哈

Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Const GW_CHILD = 5
Private Const GW_HWNDFIRST = 0
Private Const GW_HWNDNEXT = 2
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Sub Command1_Click()
Dim s As String
Dim hwnd As Long
hwnd = GetDesktopWindow()
hwnd = GetWindow(hwnd, GW_CHILD Or GW_HWNDFIRST)
While hwnd <> 0
s = String(256, vbNullChar)
GetClassName hwnd, s, 255
s = Left(s, InStr(s, vbNullChar) - 1)
If s = "ExploreWClass" Then
Print "找到句柄:" & hwnd
End If
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Wend
End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13294715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-09
下一篇 2023-07-09

发表评论

登录后才能评论

评论列表(0条)

保存