You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用lsof命令时如何忽略TID/PID列 避免awk取字段错误

解决方案

方法1:强制关闭TID列输出

TID列仅在lsof开启线程信息展示时才会出现,你可以添加参数关闭线程展示,固定默认的输出列顺序,此时原有的取第7列的逻辑可以直接复用:

lsof -Ki- | awk '{print $7}'

如果上述参数不兼容你的系统版本,也可以用lsof --no-threads替代。

方法2:按表头匹配列号(全场景兼容)

如果你不想调整lsof的参数,也可以修改awk逻辑,通过表头匹配文件大小所在的列号,完全不依赖固定的列顺序,不管有没有新增TID列都能正常取数:

lsof | awk 'NR==1 { for(i=1;i<=NF;i++) { if($i=="SIZE/OFF") col=i } } NR>1 { print $col }'

这个逻辑会先在第一行表头中找到SIZE/OFF(文件大小列的固定表头)对应的列位置,后续所有行都取对应列的内容输出。

方法3:自定义lsof输出字段

你也可以直接指定lsof仅输出你需要的文件大小字段,从根源上避免多余列的干扰,更适合脚本自动化场景使用:

lsof -F s | awk '/^s/ { print substr($0,2) }'

该命令会直接输出纯数值格式的文件大小,不需要额外处理列偏移问题。

内容的提问来源于stack exchange,提问作者KENNY CHEN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:24:02