Skip to main content

Command Palette

Search for a command to run...

How to Execute ps in Linux

Published
6 min readView as Markdown

When you work with Linux, understanding how to manage and monitor running processes is essential. The ps command is one of the most useful tools for this. It helps you see what programs are running on your system, their status, and resource usage. If you want to keep your system healthy or troubleshoot issues, knowing how to execute ps in Linux is a great skill to have.

In this article, I’ll guide you through the basics of the ps command, show you how to use it effectively, and explain some common options and examples. Whether you’re a beginner or just need a refresher, you’ll find practical tips to help you get the most out of ps in Linux.

What Is the ps Command in Linux?

The ps command stands for "process status." It shows a snapshot of the current processes running on your Linux system. Unlike commands like top that update continuously, ps gives you a static list of processes at the moment you run it.

You can use ps to:

  • See which programs are running
  • Check process IDs (PIDs)
  • Find out who owns a process
  • Monitor CPU and memory usage of processes

This command is essential for system monitoring, debugging, and managing system resources.

How ps Works

When you run ps, it reads information from the /proc filesystem, which contains details about all active processes. It then formats this data into a readable table. By default, ps shows only processes running in the current shell session.

Basic Usage of ps

The simplest way to use ps is by typing it without any options:

ps

This command lists processes running in your current terminal session. You’ll see columns like:

  • PID: Process ID
  • TTY: Terminal associated with the process
  • TIME: CPU time used by the process
  • CMD: Command that started the process

Example Output

  PID TTY          TIME CMD
 1234 pts/0    00:00:00 bash
 5678 pts/0    00:00:01 ps

This shows the shell (bash) and the ps command itself.

Common ps Options to Know

To get more detailed information, you’ll want to use options with ps. Here are some of the most useful ones:

  • -e or -A: Show all processes on the system, not just your own.
  • -f: Full-format listing, showing more details like PPID (parent process ID), user, and start time.
  • -u username: Show processes for a specific user.
  • -x: Include processes without a controlling terminal (like background services).
  • -o: Customize the output format by specifying which columns to display.

Using ps -ef

This is one of the most common ways to run ps. It shows all processes with full details:

ps -ef

Example output columns include:

  • UID: User ID of the process owner
  • PID: Process ID
  • PPID: Parent process ID
  • C: CPU utilization
  • STIME: Start time
  • TTY: Terminal type
  • TIME: CPU time used
  • CMD: Command name

Filtering Processes with ps

You can filter the output to find specific processes. For example, to find all processes related to apache2, you can combine ps with grep:

ps -ef | grep apache2

This command lists all processes with "apache2" in their command line.

Using ps with User Filters

To see processes owned by a specific user, use:

ps -u username

Replace username with the actual user name. This is helpful for checking what a particular user is running.

Customizing Output with ps -o

The -o option lets you choose exactly which columns to display. For example:

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu

This command shows:

  • PID: Process ID
  • PPID: Parent process ID
  • CMD: Command name
  • %MEM: Memory usage percentage
  • %CPU: CPU usage percentage

The --sort=-%cpu sorts the list by CPU usage in descending order, so the most CPU-intensive processes appear first.

Viewing Processes Hierarchically

Sometimes, you want to see the parent-child relationship between processes. The ps command can show this with the --forest option:

ps -ef --forest

This displays processes in a tree-like structure, making it easier to understand which processes spawned others.

Using ps to Monitor System Performance

While ps is not a real-time monitoring tool like top or htop, it can still help you check resource usage at a specific moment. For example, to find the top memory-consuming processes, you can run:

ps aux --sort=-%mem | head -10

Here:

  • aux shows all processes with detailed info.
  • --sort=-%mem sorts by memory usage descending.
  • head -10 limits output to the top 10 processes.

This is useful when you want to identify memory hogs quickly.

Combining ps with Other Commands

You can combine ps with other Linux commands to automate tasks or get more insights.

Kill a Process by Name

To kill all processes with a certain name, you can use:

ps -ef | grep process_name | awk '{print $2}' | xargs kill

This finds the process IDs and sends a kill signal.

Count Running Processes

To count how many processes are running, use:

ps -e | wc -l

This counts all lines output by ps -e, giving you the total number of processes.

Differences Between ps and Other Process Commands

You might wonder how ps compares to other commands like top or htop.

  • ps shows a snapshot of processes at one moment.
  • top and htop provide real-time, continuously updating views.
  • htop offers a more user-friendly interface with color and interactive controls.

Use ps when you want a quick, scriptable snapshot. Use top or htop for ongoing monitoring.

Troubleshooting Common ps Issues

Sometimes, you might not see the processes you expect. Here are some tips:

  • Use ps -ef or ps aux to see all processes, including those without a terminal.
  • Remember that ps output depends on your permissions. Use sudo if you need to see system or other users’ processes.
  • If you want to see processes in a container or chroot environment, make sure you run ps inside that environment.

Summary Table of Useful ps Commands

CommandDescription
psShow processes in current terminal
ps -efShow all processes with full details
ps auxShow all processes with user-oriented info
ps -u usernameShow processes for a specific user
ps -eo pid,cmdShow only PID and command columns
ps -ef --forestShow process tree
ps aux --sort=-%cpuShow processes sorted by CPU usage

Conclusion

Now that you know how to execute ps in Linux, you can easily check what’s running on your system. The ps command is simple but powerful, giving you detailed snapshots of processes whenever you need them. By using options like -ef, -u, and -o, you can customize the output to fit your needs.

Remember, ps works well for quick checks and scripting, but for real-time monitoring, tools like top or htop are better. With these skills, you’ll be able to manage your Linux system more effectively and troubleshoot issues faster.


FAQs

What does the ps command do in Linux?

The ps command displays a snapshot of current running processes. It shows details like process IDs, owners, CPU and memory usage, helping you monitor and manage system processes.

How do I see all processes running on my Linux system?

Use ps -ef or ps aux to list all processes on the system, including those not attached to a terminal.

Can I filter processes by user with ps?

Yes, use ps -u username to show only processes owned by a specific user.

How do I display processes in a tree format?

Run ps -ef --forest to view processes hierarchically, showing parent-child relationships.

Is ps a real-time monitoring tool?

No, ps shows a static snapshot of processes at the moment you run it. For real-time monitoring, use top or htop.

More from this blog

L

LinuxBloke | Linux Tips, Tricks & Troubleshooting

672 posts