You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何查询正在运行的命令的执行起始目录

如何查询正在运行的命令的执行起始目录

这个问题我之前排查进程的时候也遇到过,其实有好几种简单可靠的方法能查到正在运行进程的起始目录,给你整理几个常用的:

  • 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

火山引擎 最新活动