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

评论 0 浏览 0 2019-08-15

1.概述

Linux自带了一些监控工具,可以帮助我们深入了解操作系统本身。来自Procps软件包的ps utility就是这些工具之一,它可以报告关于操作系统中当前进程的一些统计数据。

在本教程中,我们将看到如何使用ps 工具来查找某个特定进程的正常运行时间。

2.进程的运行时间

为了查看一个特定的Linux(甚至Mac)进程已经运行了多长时间,假设我们已经知道了进程标识,我们可以在Bash shell中输入以下命令。

>> ps -p <process_id> -o etime

让我们来分析一下这个命令。

  • ps 帮助我们看到操作系统中当前进程的快照。ps 代表“进程状态”。
  • 使用-p <process_id> 选项,我们可以指定进程ID。例如,-p20或-p 20 代表一个进程,进程ID为20。
  • -o <format>让我们为输出指定一个自定义格式。也就是说,<format>是一个空白分隔或逗号分隔的列表形式的参数,它提供了一种指定单个输出列的方法。这里我们只是要了解进程中的耗时,所以我们用etime 作为单个输出列。顺便说一下,etime 代表“Elapsed Time”。

例如,如果我们对一个进程ID为1的程序运行上述命令。

>> ps -p 1 -o etime

我们会得到这个过程的耗时。

ELAPSED
03:24:30

这个特定的进程已经运行了3小时24分30秒。为了看到以秒为单位的运行时间,让我们使用etimes而不是time

>> ps -p 1 -o etimes
ELAPSED
12270

请注意,我们不能在Mac上使用etimes 选项。

3.计时的输出格式

默认情况下,etime 代表自进程开始以来的时间,格式为[[DD-]hh:]mm:ss。例如,对于一个已经运行了20天的进程,经过的时间输出将是这样的。

ELAPSED
20-11:59:45

DD hh部分是可选的,因此当运行时间少于一天或少于一小时时,它们不会出现在输出中:

ELAPSED
21:51

这个过程已经运行了21分51秒。

4.自定义列标题

正如我们在前面的例子中所看到的,-o etime 选项在名为ELAPSED的列标题下打印已过时间。我们可以用-o etime=<header_name> 语法来重命名这个标题。

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

此外,我们甚至可以完全删除标题。

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

时:来说也是如此。

>> ps -p 1 -o etimes=
12270

这在我们要编写脚本时派上用场,而我们只关心数字输出。

5.总结

在本教程中,我们使用ps命令行工具来找出一个特定进程正在运行的时间。

我们还关注并学习了如何定制由ps生成的输出。

最后更新2022-11-17
0 个评论
标签
ps