查询进程打开的目录或者文件
发表: |更新:
|字数总计: 549|阅读时长: 2分钟|阅读量:
本文永久链接: https://www.xtplayer.cn/linux/query-dir-used-by-process/
在容器环境中,有时候可能发现某个容器占用了很大的磁盘空间。如果在特定的目录中没有看到占用空间的文件或者目录,那么可能进程还打开了其他的文件或者目录。
以 rancher 进程为例,在主机上执行以下脚本可以查询到 rancher 进程打开的目录和文件
#!/bin/bash
PID=$(pgrep rancher) if [ -z "$PID" ]; then echo "Usage: $0 <PID>" exit 1 fi
echo "进程 $PID 的目录信息:" echo "===================="
echo -n "工作目录: " readlink /proc/$PID/cwd
echo -e "\n打开的文件和目录:" lsof -p $PID | grep -E "(DIR|REG)" | awk '{print $9}' | sort -u
echo -e "\n文件描述符链接:" for fd in /proc/$PID/fd/*; do if [ -L "$fd" ]; then echo "FD $(basename $fd) -> $(readlink $fd)" fi done
|
执行命令后输出以下内容,注意,其中的文件和目录是指的容器内的文件路径和目录。
进程 12445 的目录信息: ==================== 工作目录: /var/lib/rancher
打开的文件和目录: / (stat: /usr/bin/rancher /var/lib/rancher /var/lib/rancher/informer_object_cache.db /var/lib/rancher/informer_object_cache.db-shm /var/lib/rancher/informer_object_cache.db-wal
文件描述符链接: FD 0 -> /dev/null FD 1 -> pipe:[84971] FD 10 -> socket:[626734] FD 11 -> /var/lib/rancher/informer_object_cache.db-shm FD 12 -> socket:[89835] FD 13 -> socket:[93808] FD 14 -> socket:[94294] FD 15 -> socket:[93413] FD 16 -> socket:[541870] FD 17 -> socket:[539963] FD 18 -> socket:[503935] FD 19 -> socket:[89838] FD 2 -> pipe:[84972] FD 20 -> /var/lib/rancher/informer_object_cache.db FD 22 -> socket:[337020] FD 26 -> /var/lib/rancher/informer_object_cache.db FD 27 -> socket:[503961] FD 28 -> socket:[90493] FD 29 -> /var/lib/rancher/informer_object_cache.db FD 3 -> socket:[85665] FD 30 -> /var/lib/rancher/informer_object_cache.db-wal FD 32 -> socket:[90494] FD 35 -> socket:[93604] FD 36 -> socket:[91662] FD 38 -> socket:[92446] FD 4 -> anon_inode:[eventpoll] FD 40 -> /var/lib/rancher/informer_object_cache.db FD 41 -> /var/lib/rancher/informer_object_cache.db FD 42 -> /var/lib/rancher/informer_object_cache.db-wal FD 43 -> socket:[336165] FD 44 -> /var/lib/rancher/informer_object_cache.db FD 46 -> /var/lib/rancher/informer_object_cache.db FD 5 -> anon_inode:[eventfd] FD 6 -> socket:[85671] FD 62 -> socket:[91890] FD 7 -> socket:[85673] FD 8 -> socket:[83942] FD 9 -> /var/lib/rancher/informer_object_cache.db
|