![Trending Articles on Technical and Non Technical topics](/images/trending_categories.jpeg)
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
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.