Linux下获取queue大小及指定表格/queue行数的技术问询
嘿,我来帮你搞定这两个问题:
1. 如何在Linux中获取Queue的大小?
Linux里的队列分不同类型,常见的有SysV消息队列和POSIX消息队列,获取大小的方法略有不同:
SysV消息队列
先通过ipcs -q查看所有SysV消息队列的信息,输出里会包含队列ID、已用字节数、消息数量等字段。如果要提取特定队列的消息数量,可以用:ipcs -q | grep <你的队列ID> | awk '{print $6}'要是你需要的是已使用的字节大小,就把
$6换成$5——因为ipcs -q的输出列依次是:key、msqid、owner、perms、used-bytes、messages。POSIX消息队列
POSIX消息队列通常挂载在/dev/mqueue/目录下,先通过ls -l /dev/mqueue/查看存在的队列。要获取队列的当前消息数(也就是队列大小),可以读取队列的属性文件:cat /dev/mqueue/<你的队列名称> | grep curmsgs | awk -F= '{print $2}'这个命令会提取出
curmsgs的值,也就是当前队列里的消息数量。
2. 获取表格/Queue的精确行数并输出数字结果
针对你提供的表格,要只输出数据行的数量(也就是5),可以用以下几种方法:
方法一:处理本地文件
如果表格已经保存到queue_table.txt文件中,运行这个命令:
grep -v "^|.*\+" queue_table.txt | grep -v "^| E1" | wc -l
解释一下:
grep -v "^|.*\+":排除掉表格的分隔线(以|开头且包含+的行)grep -v "^| E1":排除表头行(以| E1开头的行)wc -l:统计剩下的行数,也就是数据行的数量,直接输出5
方法二:直接处理命令输出
如果这个表格是某个命令(比如获取队列内容的命令)的输出,可以直接管道处理:
<你的队列查询命令> | grep -v "^|.*\+" | grep -v "^| E1" | wc -l
这样就能直接得到数据行的数字结果。
更简洁的awk写法
你也可以用awk一步完成,避免多次grep:
awk '!/^(\|.*\+|\| E1)/{count++} END{print count}' queue_table.txt
这个命令会直接输出5,不需要再搭配wc -l。
内容的提问来源于stack exchange,提问作者BlackForest
相关产品推荐
相关产品推荐

