Linux下查看进程的执行文件绝对路径

  • Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
  • /proc/N pid为N的进程信息
  • /proc/N/cmdline 进程启动命令
  • /proc/N/cwd 链接到进程当前工作目录
  • /proc/N/environ 进程环境变量列表
  • /proc/N/exe 链接到进程的执行命令文件
  • /proc/N/fd 包含进程相关的所有的文件描述符
  • /proc/N/maps 与进程相关的内存映射信息
  • /proc/N/mem 指代进程持有的内存,不可读
  • /proc/N/root 链接到进程的根目录
  • /proc/N/stat 进程的状态
  • /proc/N/statm 进程使用的内存的状态
  • /proc/N/status 进程状态信息,比stat/statm更具可读性
#!/bin/bash                                                                                                                                                                 

RES_COLOR="\E[0m"                                                                                                                                                           
RED_COLOR="\E[1;31m"                                                                                                                                                        
GREEN_COLOR="\E[1;32m"                                                                                                                                                      
YELOW_COLOR="\E[1;33m"                                                                                                                                                      
BLUE_COLOR="\E[1;34m"                                                                                                                                                       
PINK_COLOR="\E[1;35m"                                                                                                                                                       

if [ $# -ne 1 ] ; then                                                                                                                                                      
        echo -e ${RED_COLOR} "Usage: pwatch exe" ${RES_COLOR}                                                                                                               
        exit 1                                                                                                                                                              
fi                                                                                                                                                                          

for pid in `ps aux | grep $1 | awk '{print $2}'` ;                                                                                                                          
do                                                                                                                                                                          
        if [ -d "/proc/${pid}" ]; then                                                                                                                                      
                echo -ne "${pid} "                                                                                                                                          
                # echo -e ${BLUE_COLOR} `cat -v /proc/${pid}/cmdline` ${RES_COLOR}                                                                                          
                echo -e ${BLUE_COLOR} `ps aux | awk '{if($2=="'${pid}'") for(i=11;i<=NF;i++) printf("%s ", $i)}'` ${RES_COLOR}                                              
                echo -e ${GREEN_COLOR} EXE: `ls -l /proc/${pid}/exe 2>/dev/null | awk '{print $NF}'` ${RES_COLOR}                                                           
                echo -e ${GREEN_COLOR} PWD: `ls -l /proc/${pid}/cwd 2>/dev/null | awk '{print $NF}'` ${RES_COLOR}                                                           
        fi                                                                                                                                                                  
done 

➜ ~ ./pwatch.sh vim
27609 vim log.cpp
EXE: /usr/bin/vim
PWD: /home/service/common
35772 vim worker.cpp
EXE: /usr/bin/vim
PWD: /home/service/app/src

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值