如何查看打开文件描述符的当前seek位置?排查awk脚本异常
查看awk进程处理大文件的当前位置
以下几种方法可以帮你获取进程当前的文件偏移(seek位置),甚至估算处理到第几行:
1. 用lsof直接查看偏移量
执行命令:
lsof -o -p <你的awk进程PID>
输出里的OFFSET列就是当前的文件偏移字节数。如果只想看目标大文件的信息,加个过滤:
lsof -o -p <PID> | grep <你的大文件名>
2. 读取/proc下的fdinfo文件
- 先通过
ls -l /proc/<PID>/fd找到目标文件对应的文件描述符(比如输出里的3 -> /path/to/your/100G-file,这里fd是3) - 查看该fd的详细信息:
cat /proc/<PID>/fdinfo/3
输出中的pos字段就是当前的seek位置(字节数)。
3. 估算当前处理到第几行
如果需要知道大概行数,可以用以下命令(把<pos值>替换成上面拿到的偏移字节数):
head -c <pos值> /path/to/your/100G-file | wc -l
这个命令会读取到偏移位置的内容并统计行数,比dd效率更高。
内容的提问来源于stack exchange,提问作者userQWERTY
相关产品推荐
相关产品推荐

