查找 Linux 运行进程的当前工作目录
简介
在 Linux 系统上处理进程时,一项基本任务是确定进程的当前工作目录。当前工作目录,也称为“当前目录”或“当前工作文件夹”,是进程运行并与文件交互的目录。了解进程的当前工作目录对于多种用途都很有用,例如调试、了解进程运行的环境或只是监控进程的活动。
在本文中,我们将讨论如何在 Linux 上查找正在运行的进程的当前工作目录。我们将介绍几种可用于完成此任务的方法,包括使用ps命令、lsof命令和/proc文件系统。
使用 ps 命令
ps 命令是一个标准的命令行实用程序,用于显示系统上当前正在运行的进程的信息。ps 可以显示的信息之一是进程的当前工作目录。要使用 ps 查找进程的当前工作目录,可以使用以下命令:
$ ps -o cwd -p PID
其中PID是要查找其当前工作目录的进程的 ID。例如,要查找 PID 为1234的进程的当前工作目录,可以使用以下命令:
$ ps -o cwd -p 1234
“-o”选项允许我们指定 ps 的输出格式,而 cwd 参数告诉 ps 显示进程的当前工作目录。
以下是使用ps命令查找进程当前工作目录的示例:
$ ps -o cwd -p 1234 CWD /home/user/process
在此示例中,PID 为 1234 的进程的当前工作目录为/home/user/app。
使用 lsof 命令
在 Linux 上查找进程当前工作目录的另一种方法是使用 lsof 命令。lsof代表“list of open files”(打开文件列表),是一个命令行实用程序,用于显示系统上进程当前打开的文件信息。lsof 可以显示的信息之一是进程的当前工作目录。
要使用lsof查找进程的当前工作目录,可以使用以下命令:
$ lsof -a -d cwd -p PID
其中PID是要查找其当前工作目录的进程的 ID。例如,要查找 PID 为1234的进程的当前工作目录,可以使用以下命令:
$ lsof -a -d cwd -p 1234
-a 选项告诉 lsof AND 以下选择条件,而“-d”选项指定我们要显示的描述符类型。在这种情况下,cwd 描述符表示进程的当前工作目录。
以下是使用lsof命令查找进程当前工作目录的示例:
$ lsof -a -d cwd -p 1234
使用 /proc 文件系统
在 Linux 上查找进程当前工作目录的另一种方法是使用/proc文件系统。/proc文件系统是一个虚拟文件系统,它提供对内核和系统上运行的进程的视图。它为每个正在运行的进程包含一个目录,并且每个目录都包含有关进程的信息,例如其环境、打开的文件和当前工作目录。
要使用/proc文件系统查找进程的当前工作目录,可以使用以下步骤:
查找我们要查找其当前工作目录的进程的进程 ID。我们可以使用前面部分中描述的ps或lsof命令来执行此操作。
更改到进程的/proc目录。这是通过输入以下命令完成的:
$ cd /proc/PID
其中PID是要查找其当前工作目录的进程的 ID。
显示cwd 符号链接的内容。进程的/proc目录中的 cwd 符号链接指向进程的当前工作目录。要查看“cwd”符号链接的内容,可以使用以下命令:
$ readlink cwd
以下是使用/proc文件系统查找进程当前工作目录的示例:
$ cd /proc/1234 $ readlink cwd /home/user/process
在此示例中,PID 为1234的进程的当前工作目录为/home/user/app。
结论
在本文中,我们讨论了如何在 Linux 上查找正在运行的进程的当前工作目录。我们介绍了三种不同的方法:使用 ps 命令、lsof 命令和 /proc 文件系统。每种方法都有其优点和缺点,合适的方法将取决于手头业务的具体要求和限制。无论使用哪种方法,能够找到进程的当前工作目录都是处理 Linux 系统上的进程时非常有用的工具。