CentOS 7下如何让ps -ef | grep显示运行中脚本的完整路径?
实现脚本完整路径查看的方法
当然可以实现,给你几个实用的操作方法:
方法1:结合/proc文件系统和readlink
先通过ps -ef | grep myScript.sh找到脚本对应的PID(输出结果的第二列数字),然后执行以下命令替换<PID>:
readlink /proc/<PID>/exe
比如PID是1234,就运行readlink /proc/1234/exe,会直接返回脚本的完整绝对路径。
方法2:一键式自动匹配命令
不用手动查找PID,直接运行这条命令就能输出结果:
pgrep -f myScript.sh | xargs -I {} readlink /proc/{}/exe
pgrep -f会自动匹配包含myScript.sh的进程PID,再通过xargs把PID传递给readlink,直接输出完整路径。
方法3:同时显示PID和完整路径
如果需要同时查看进程PID和对应的脚本路径,可以用这条命令:
ps -ef | grep myScript.sh | grep -v grep | awk '{print $2}' | xargs -I {} echo "PID: {}, 完整路径: $(readlink /proc/{}/exe)"
其中grep -v grep是过滤掉grep自身的进程,awk负责提取PID,最后拼接输出PID和路径信息。
特殊情况处理
如果脚本是通过bash myScript.sh这类方式间接启动的,/proc/<PID>/exe会指向bash的路径,这时候可以查看/proc/<PID>/cmdline文件获取完整启动命令:
cat /proc/<PID>/cmdline | tr '\0' ' '
命令里的tr '\0' ' '是把文件中的空字符替换为空格,就能看到包含脚本路径的完整启动参数。
内容的提问来源于stack exchange,提问作者Alexei
相关产品推荐
相关产品推荐

