# How to Execute ps in Linux


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:

```bash
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:

```bash
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`:

```bash
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:

```bash
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:

```bash
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:

```bash
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:

```bash
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:

```bash
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:

```bash
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

| Command               | Description                               |
|-----------------------|-------------------------------------------|
| `ps`                  | Show processes in current terminal        |
| `ps -ef`              | Show all processes with full details      |
| `ps aux`              | Show all processes with user-oriented info|
| `ps -u username`      | Show processes for a specific user        |
| `ps -eo pid,cmd`      | Show only PID and command columns          |
| `ps -ef --forest`     | Show process tree                          |
| `ps aux --sort=-%cpu` | Show 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`.
