Linux一个进程已经运行了多长时间?
如何检查进程或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 = |