Linux command line offers a lot of utilities that work with processes. The pidof command in Linux is a utility that identifies the process ID (PID) of one or more running processes. It is sometimes necessary to know a process’ PID in order to interact with it using other commands; pidof makes the task easier by allowing you to search for a process by its name and quickly get back its associated PID. pidof is usually included with most distributions of Linux, and it can be used from the command line.

In this tutorial, we will discuss the basics of pidof using some easy-to-understand examples. But before we do that, it’s worth mentioning that all examples here have been tested on an Ubuntu 22.04 LTS machine.

Linux pidof command

As mentioned above, the pidof command lets you find the process ID of a running program. Following is its syntax:

pidof [options] command

And here’s what the man page says about the tool:

       Pidof finds the process id's (pids) of the named  programs.  It  prints

       those id's on the standard output. This program is on some systems used

       in run-level change scripts, especially when the system has a  System-V

       like   rc  structure.  In  that  case  these  scripts  are  located  in

       /etc/rc?.d, where ? is the runlevel. If the system  has  a  start-stop-

       daemon (8) program that should be used instead.

Following are some Q&A-styled examples that should give you a good idea of how the tool works.

Q1. How to use pidof command?

Basic usage is fairly simple – just pass the program’s name as input to the command. For example:

pidof nano

So you can see the command returned nano’s process ID in the output.

<img alt="The pidof command" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/01/echo/pidof-command.png63d7e79219058.jpg" ezimgfmt="rs rscb5 src ng ngcb5" height="150" loading="lazy" src="data:image/svg xml,” width=”750″>

Q2. How to make pidof return only single pid?

Sometimes, you’ll see the pidof command returns multiple pids. For example, try running the pidof command with ssh daemon as input.

pidof sshd

Following is the output produced on my system:

<img alt="Multiple pid of a Linux program" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/01/echo/pidof.png63d7e7924f15b.jpg" ezimgfmt="rs rscb5 src ng ngcb5" height="172" loading="lazy" src="data:image/svg xml,” width=”750″>

And here in comparison, how the processes get listed by the ps command:

<img alt="process ID in ps command" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/01/echo/ps-command.png63d7e792a8d22.jpg" ezimgfmt="rs rscb5 src ng ngcb5" height="140" loading="lazy" src="data:image/svg xml,” width=”750″>

However, you can force the tool only to produce a single PID in output. This can be done using the -s command line option.

pidof -s sshd

<img alt="Return a single process ID" data-ezsrc="https://kirelos.com/wp-content/uploads/2023/01/echo/single-pid.png63d7e792d1153.jpg" ezimgfmt="rs rscb5 src ng ngcb5" height="155" loading="lazy" src="data:image/svg xml,” width=”750″>

Q3. How to limit output based on root directory?

If you want pidof only to return process ids running with the same root directory, use the -c command line option.

pidof -c program_name

Please note that this option is ignored for non-root users, as they will be unable to check the current root directory of processes

they do not own.

Q4. How to use pidof in case of binaries kept on network file systems?

While dealing with binaries located on network-based file systems like NFS, you can use the -n command line option to make pidof command avoid using the stat system function call.

pidof -n program_name

Please note that the man page suggests, “instead of using this option, the variable PIDOF_NETFS may be set and exported.”

Q5. How pidof works internally?

Official docs say pidof is actually the same program as killall. The program behaves according to the name under which it is called. Here’s what the man page exactly says:

       When pidof is invoked with a full pathname to the program it should

       find the pid of, it is reasonably safe. Otherwise it is  possible  that

       it  returns  pids of running programs that happen to have the same name

       as the program you're after but are actually other programs. Note  that

       that  the executable name of running processes is calculated with read?

       link(2), so symbolic links to executables will also match.

Conclusion

The pidof command may come in handy in many situations. For example, if you want to kill a process whose PID you don’t know, you can quickly use this tool to find the process id, and the process can be killed within no time. The pidof command doesn’t offer many options, and we’ve already discussed most of them here. For more info, head to the tool’s man page.