How Long a Linux Process Has Been Running

1. Overview

Linux comes with a handful of monitoring tools which can help us to get
some insight about the OS itself. The ps utility from
the Procps package is one of those
tools which can report some stats about the current processes in the OS.

In this tutorial, we’re going to see how we can use
the ps utility to find the uptime for a particular process.

2. Process Uptime

In order to see how long a particular Linux (or even Mac) process has
been running
, assuming that we already know the Process Id, we can
enter the following command in our Bash shell:

>> ps -p <process_id> -o etime

Let’s break down the command:

  • ps helps us to see
    a snapshot of current processes in the operating system. ps stands
    for “Process Status”

  • Using -p <process_id> option we can specify the process id. For
    example, -p20 or -p 20 are representing a process with 20 as the
    process id

  • The -o <format> lets us specify a custom format for the output.
    That is, <format> is an argument in the form of a blank-separated
    or comma-separated list, which offers a way to specify individual output
    columns.
     Here we’re justing going to know about the process elapsed
    time, so we’re using the etime as the single output column. By the
    way, etime stands for “Elapsed Time”.

For example, if we run the above command for a process id of 1:

>> ps -p 1 -o etime

We would get the process’s elapsed time:

ELAPSED
03:24:30

This particular process has been running for 3 hours, 24 minutes and 30
seconds. In order to see the elapsed time in seconds, let’s use
etimes instead of etime
:

>> ps -p 1 -o etimes
ELAPSED
12270

Please note that we can’t use the etimes option on a Mac.

3. Elapsed Output Format

By default, etime represents elapsed time since the process was
started, in the
 [[DD-]hh:]mm:ss format. For example, for a process
that has been running for 20 days, the elapsed time output would be
something like:

ELAPSED
20-11:59:45

The DD and hh parts are optional, so when the elapsed time is less
than a day or less than an hour, they won’t show up in the output:

ELAPSED
21:51

This process has been running for 21 minutes and 51 seconds.

4. Custom Column Header

As we saw in the previous examples, the -o etime option prints the
elapsed time under a column header named ELAPSED. We can rename this
header using the -o etime=<header_name> syntax:

>> ps -p 1 -o etime=Uptime
Uptime
03:24:30

Also, we can even remove the header altogether:

>> ps -p 1 -o etime=
03:24:30

Same is true for etimes:

>> ps -p 1 -o etimes=
12270

This comes in handy when we’re going to write a script and we only
care about the numerical output.

5. Conclusion

In this tutorial, we used the ps command-line utility to find out how
long a particular process is running.

We also focused on and learned how to customize the output generated by
ps.

Leave a Reply

Your email address will not be published.