Linux一个进程已经运行了多长时间?

时间:2020-01-09 14:16:55  来源:igfitidea点击:

如何检查进程或pid在Ubuntu/Debian或CentOS Linux服务器上运行了多长时间?

解决方法:您需要使用ps命令来查看有关活动进程选择的信息。

pid命令为PID(过程标识号)提供以下两个格式选项。
在Linux或类似Unix的操作系统上创建进程时自动分配的PID。

Linux ps命令来查找进程运行时选项:

  • etime以格式[[[DD-] hh:] mm:ss`显示自开始处理以来经过的时间。
  • etimes显示自开始处理以来经过的时间,以秒为单位。

如何检查进程运行了多长时间?

您需要将-o etimes或-o etime传递给ps命令。
语法为:

ps -p {PID-HERE} -o etime
ps -p {PID-HERE} -o etimes

ps命令用于提供有关Linux上当前正在运行的进程的信息,包括其进程标识号(PID)和其他信息。
我们也可以使用其他命令。
例如,pstree命令,top命令,htop命令等。
让我们看一些示例,以了解我的服务器上OpenVPN进程已经运行了多长时间。

步骤1:查找进程的PID(例如openvpn)

打开shell程序提示符,然后执行以下pidof命令:

$ pidof openvpn
`6176`

请记下PID" 6176"。

步骤2:openvpn进程已经运行了多长时间?

$ ps -p 6176 -o etime

或者

$ ps -p 6176 -o etimes

隐藏标题:

$ ps -p 6176 -o etime=
$ ps -p 6176 -o etimes=

Linux检查openvpn进程在服务器上运行了多长时间

6176是您要检查的过程的PID。
在这种情况下,我正在研究openvpn进程。
可以根据自己的需要随意替换openvpn和PID#6176。
在此查找示例中,我正在打印PID,命令,经过时间,用户ID和组ID:

$ ps -p 6176 -o pid,cmd,etime,uid,gid

输出示例:

PID CMD                             ELAPSED   UID   GID
6176 /usr/sbin/openvpn --daemon        15:25 65534 65534

在许多生产系统上,出于安全考虑,不允许特权用户或开发人员查找与过程相关的信息。
在这种情况下,有必要使用su命令或sudo命令以root用户身份运行ps。
有关更多信息,请参见其他用户的Linux隐藏进程和ps命令。

如何查找名为mysqld的进程在Linux中运行了多长时间

通过ps命令或pidof命令查找mysqld的进程ID:

$ sudo pidof mysqld
## Alternatively, use the grep command as filter ##
$ sudo ps aux | grep '/usr/sbin/[m]ysqld'

现在,您有了mysqld的PID,让我们找到并打印PID创建日期。
换句话说,找出何时在Linux上启动进程,请执行:

$ sudo ps -p {PID} -o start,etimes,etime
$ sudo ps -p 1861 -o start,etimes,etime
$ sudo ps -p 1861 -o pid,cmd,start,etimes,etime

我们的最后一个示例通过提供进程名称(例如lighttpd,nginx,mysqld等)直接找到PID:

$ sudo ps -C {process-name} -o pid,cmd,start,etimes,etime
$ sudo ps -C lighttpd -o pid,cmd,start,etimes,etime
$ sudo ps -C nginx -o pid,cmd,start,etimes,etime
$ sudo ps -C mysqld -o pid,cmd,start,etimes,etime

多个进程或PID意味着您正在使用Docker/LXD或Linux容器运行同一进程。

Nginx之类的相同守护进程(长时间运行的后台进程)使用父子进程模型,因此您可能还会看到许多PID。
例如,以下是运行多个Linux容器且每个容器具有php-fpm7主进程的服务器的输出:

sudo ps -C php-fpm7 -o pid,cmd,lstart,etime,etimes

输出示例:

PID CMD                                          STARTED     ELAPSED ELAPSED
5329 php-fpm: master process (/e Sun Feb  2 11:37:30 2020 98-00:47:03 8470023
8907 php-fpm: pool www           Fri May  1 21:25:46 2020  8-14:58:47  745127
15269 php-fpm: pool www           Wed Apr 15 11:28:58 2020 25-00:55:35 2163335
15271 php-fpm: pool www           Wed Apr 15 11:28:59 2020 25-00:55:34 2163334

我的PID 5329(php-fpm主进程)于2020年2月2日11:37:30和8470023秒前启动。

  • 执行PS的今日日期:2020年5月10日,星期日
  • PID开始于:2020年2月2日,星期日
  • 经过的时间(以秒为单位):8470023
  • 经过的天数:98天

了解ps选项

Linux查找使用ps运行一个进程的时间:

选项简短描述示例
-C通过命令名代替PID来选择进程ps -C firefoxps -C memcachedps -C redis-server
-o pid表示进程ID的数字ps -C nginx -o pidps -p PID_HERE -o pid
-o cmd命令及其所有参数作为字符串ps -C google-chrome -o cmd
-o start命令启动的时间。如果该过程在24小时前启动,则输出格式为HH:MM:SS,否则为Mmm dd(其中Mmm是三个字母的月份名称)ps -C mysqld -o start
-o lstart查找启动背景命令的时间ps -C lighttpd -o lstart
-o etimes获得自进程启动以来经过的时间,以秒为单位ps -C php-fpm7 -o etimes
-o etime以[DD-] hh: mm:ss的形式查看自启动过程以来经过的时间。ps -C php-fpm7 -o etime
-o etime = -o cmd = -o $opt =隐藏ps命令标头ps -C php-fpm7 -o pid,cmd,lstart,etimes =