如何查询正在运行的命令的执行起始目录
如何查询正在运行的命令的执行起始目录
这个问题我之前排查进程的时候也遇到过,其实有好几种简单可靠的方法能查到正在运行进程的起始目录,给你整理几个常用的:
用
pwdx命令快速查询
这是最直接的方式,先通过ps aux找到目标进程的PID(比如假设是1234),然后执行:pwdx 1234命令会直接输出
1234: /path/to/starting/directory,后面的路径就是命令发起的目录。通过
/proc文件系统查看
Linux系统的/proc目录下会为每个运行的进程维护一个子目录,其中的cwd是一个符号链接,指向进程的当前工作目录。比如PID为1234的话,你可以用:readlink /proc/1234/cwd或者用
ls -l查看链接指向:ls -l /proc/1234/cwd这个方法兼容性很强,几乎所有Linux系统都支持,就算没有
pwdx也能用。用
ps命令直接输出目录
你可以给ps命令指定输出字段,只提取当前工作目录:ps -o cwd= -p 1234这里
-o cwd=表示只输出当前工作目录字段,-p指定进程PID,执行后会直接返回你要找的起始路径。
补充一下:进程的当前工作目录确实是系统维护的进程属性之一,上面这些方法本质都是读取系统保存的进程信息,只要进程还在运行,就能准确获取到它发起时的目录(除非进程自己中途切换了目录,但如果没切换的话就是起始目录)。
备注:内容来源于stack exchange,提问作者rooni




