Find the Current Working Directory of a Running Process in Linux


Introduction

One of the basic tasks when working with processes on a Linux system is determining the current working directory of a process. The current working directory, also known as the "current directory" or "current working folder," is the directory in which a process runs and interacts with files. Knowing the current working directory of a process can be useful for a variety of purposes, such as debugging, understanding the environment in which a process is running, or simply monitoring the activity of a process.

In this article, we will discuss how to find the current working directory of a running process on Linux. We will cover several methods that can be used to accomplish this task, including using the ps command, the lsof command, and the /proc file system.

Using the ps command

The ps command is a standard command-line utility used to display information about processes currently running on a system. One of the pieces of information that ps can display is the current working directory of a process. To use ps to find the current working directory of a process, we can use the following command −

$ ps -o cwd -p PID

Where PID is the ID of the process for which we want to find the current working directory. For example, to find the current working directory of the process with a PID of 1234, we would use the following command −

$ ps -o cwd -p 1234

The “-o” option allows us to specify the output format for ps and the cwd argument tells ps to display the current working directory of the process.

Here's an example of using the ps command to find the current working directory of a process −

$ ps -o cwd -p 1234
CWD
/home/user/process

In this example, the process with a PID of 1234 has a current working directory of /home/user/app.

Using the lsof command

Another way to find the current working directory of a process on Linux is to use the lsof command. lsof stands for "list of open files" and is a command-line utility used to display information about files currently open by processes on the system. One of the pieces of information that lsof can display is the current working directory of a process.

To use lsof to find the current working directory of a process, we can use the following command −

$ lsof -a -d cwd -p PID

Where PID is the ID of the process for which we want to find the current working directory. For example, to find the current working directory of the process with a PID of 1234, we would use the following command −

$ lsof -a -d cwd -p 1234

The -a option tells lsof to AND the following selection criteria and the “-d” option specifies the type of descriptor we want to display. In this case, the cwd descriptor represents the current working directory of the process.

Here is an example of using the lsof command to find the current working directory of a process −

$ lsof -a -d cwd -p 1234

Using the /proc filesystem

Another method to find the current working directory of a process on Linux is to use the /proc file system. The /proc file system is a virtual file system that provides a view of the kernel and processes running on the system. It contains a directory for each running process, and each of these directories contains information about the process, such as its environment, open files, and current working directory.

To find the current working directory of a process using the /proc file system, we can use the following steps −

Find the process ID of the process for which we want to find the current working directory. We can use the ps or lsof commands to do this, as described in the previous sections.

Change to the /proc directory for the process. This is done by entering the following command −

$ cd /proc/PID

Where PID is the ID of the process for which we want to find the current working directory.

Display the contents of the cwd symlink. The cwd symbolic link in the /proc directory for a process points to the current working directory of the process. To view the contents of the “cwd” symlink, we can use the following command −

$ readlink cwd

Here's an example of using the /proc file system to find the current working directory of a process −

$ cd /proc/1234
$ readlink cwd
/home/user/process

In this example, the process with a PID of 1234 has a current working directory of /home/user/app.

Conclusion

In this article, we have discussed how to find the current working directory of a running process on Linux. We've covered three different methods of doing this: using the ps command, the lsof command, and the /proc file system. Each of these methods has its advantages and disadvantages, and the appropriate method will depend on the specific requirements and limitations of the business at hand. Regardless of the method you use, being able to find the current working directory of a process can be an invaluable tool when working with processes on a Linux system.

Updated on: 25-Jan-2023

5K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements