您的位置:首页 > 运维架构 > Shell

linux shell 查看进程的可执行程序路径

2013-05-18 02:46 971 查看
Linux下,如果某些程序启动的时候没有加上绝对路径,直接在当前目录用“./程序名 参数表”的方式启动的话,使用ps或者top命令查看后台进程的时候,显示的Comand栏也只是“./程序名 参数表”的形式,为了找到该程序的绝对路径,想必大家最先想到的是用find命令全盘搜索,但是这样做的代价太大,而且当有多个同名文件时还不一定能区分开来,这里教大家一个更简单有效的办法。 因为任何一个程序启动以后,Linux系统会为其分配一个ID,即我们熟悉的PID,称为进程号,与此同时,系统会在/proc目录下为其创建一个独立的文件夹,文件夹以PID命名,在该文件夹内保存着该进程运行相关的详细信息,有兴趣的朋友可以进到这个目录下好好研究研究,不过今天的重点是获得该进程的绝对路径。在该目录下有一个名为exe的文件,像Windows系统下的可执行文件,这其实是一个符号链接(类似于Windows下的快捷方式),它指向该进程对应程序的绝对路径。用file命令或ls命令查看该符号链接的属性即可获取它所指向的绝对路径。ls -l /proc/PID/exe

file /proc/PID/exe

将PID替换为你想查看的进程号即可,注意两条命令都需要root权限运行,Ubuntu下加sudo即可。

Linux下查看进程绝对路径注:此方法仅在bash下测试有效。ps -el | grep hellols -l /proc/19120/exe | awk '{print $11}'hello是某程序的名字,ps -el | grep hello 命令把是hello名字进程全部列出来。然后,加入要查看进程号PID为19120的可执行程序路径,ls -l /proc/19120/exe | awk '{print $11}'
写一个脚本获取指定进程名字的绝对路径,该脚本匹配包含参数1的进程名,列出所有进程的可执行程序的路径。脚本文件psd 如下
#! /bin/bash

if [ $# -ne 1 ] ; then
echo "Usage: psd exe"
exit 1
fi

for pid in `ps -e | grep $1 | awk '{print $1}'` ;
do
echo -n "${pid} "
ls -l /proc/${pid}/exe | awk '{print $11}'
done
本文转自 /article/6261772.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: