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

简介: 【5月更文挑战第4天】

进程的运行时间是指进程自启动以来所经过的时间。通过检查进程运行时间,我们可以了解到底有哪些进程在系统中运行了很长时间,这对于定位系统资源占用高、导致系统响应变慢的问题至关重要。及时发现并处理这些长时间运行的进程,可以提高系统的稳定性和性能。

使用 ps 命令

ps 命令是一个用于报告当前系统进程状态的强大工具。通过结合不同的选项,我们可以获取有关进程的各种信息,包括进程运行时间。

使用以下命令可以查看进程的基本信息,包括进程 ID(PID)、运行时间等:

ps -eo pid,cmd,etime
  • -e: 显示所有进程
  • -o: 指定输出的格式

上述命令输出的列中,etime 表示进程的运行时间。例如:

  PID CMD                          ELAPSED
 1234 /usr/bin/example-process    02:30:45

这表示 PID 为 1234 的进程 example-process 已经运行了2小时30分钟45秒。

使用 top 命令

top 是一个实时监控系统进程的命令行工具,提供了一个动态更新的进程列表。

运行以下命令启动 top

top

top 界面,你可以按 Shift+E 键来切换显示进程的运行时间。这将使得进程列表中包含 TIME+ 列,显示进程已运行的总时间。

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
1234 user     20   0  200012  10560   8204 R   5.0   0.3  02:30:45 example-process

这个例子中,example-process 的运行时间为2小时30分钟45秒。

使用 pstree 命令

pstree 命令以树状图的形式显示进程的层次结构。通过查看进程树,我们可以更清晰地了解进程之间的关系,并查看它们的运行时间。

运行以下命令使用 pstree 查看进程树:

pstree -p

其中,-p 选项显示进程的 PID。输出可能如下:

init(1)─┬─systemd─┬─(sd-pam)
        │         ├─...
        │         └─(process-1)
        ├─(process-2)
        ├─(process-3)
        └─...

通过查看这个树状结构,你可以识别每个进程及其子进程,并在需要时了解它们的运行时间。

使用 /proc 文件系统

Linux 中的 /proc 目录是一个虚拟文件系统,提供了有关系统和进程的信息。我们可以通过读取 /proc 下的文件获取进程的详细信息,包括运行时间。

通过读取 /proc/[PID]/stat 文件,我们可以获取有关特定进程的详细信息,包括运行时间。以下是一个示例:

cat /proc/1234/stat

输出可能如下:

1234 (example-process) S 0 1234 1234 0 -1 4194560 385 0 0 0 0 0 0 0 20 0 1 0 12345678 1024 18446744073709551615 134512640 134513319 4294956704 18446744073709551615 135481464 0 0 0 0 17 1 0 0 0 0 0 0 0 0 0

在输出中,第 22 列(从左数)表示进程的运行时间,以时钟滴答为单位。

使用 htop

htop 是一个交互式的、更友好的进程查看工具,相对于传统的 top 命令更为强大和直观。

运行以下命令启动 htop

htop

htop 界面,你可以使用箭头键和功能键来导航和执行各种操作。按下 F6 键,选择并启用 TIME+ 以显示进程的运行时间。

PID USER      PRI  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
1234 user      20   0  200012  10560   8204 R   5.0   0.3  02:30.45 example-process

这里,TIME+ 列显示进程的运行时间,以小时、分钟和秒的格式呈现。

使用 Systemd 工具

Systemd 是一套系统和服务管理器,提供了多种工具来监控和控制系统上运行的进程。

通过运行以下命令,你可以使用 systemctl 查看特定服务的详细信息,包括运行时间:

systemctl status example-service

输出中包含了服务的详细信息,其中也包括了运行时间:

● example-service.service - Example Service
   Loaded: loaded (/etc/systemd/system/example-service.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2024-03-01 12:00:00 UTC; 2h 30min ago
 Main PID: 1234 (example-process)
    Tasks: 1 (limit: 4915)
   Memory: 10.5M
   CGroup: /system.slice/example-service.service
           └─1234 /usr/bin/example-process

在输出中,Active 部分显示了服务的活动状态以及自启动以来的时间。

编写脚本自动化检查

使用 Shell 脚本

创建一个 Shell 脚本文件,比如 check_process_time.sh,并添加以下内容:

#!/bin/bash

# 设置要检查的进程名称
process_name="example-process"

# 获取进程运行时间
process_time=$(ps -eo cmd,etime | grep "$process_name" | awk '{print $NF}')

echo "Process $process_name has been running for: $process_time"

保存脚本文件后,赋予执行权限并运行:

chmod +x check_process_time.sh
./check_process_time.sh

脚本将输出指定进程的运行时间,方便用户定期执行以监控进程状态。

定时执行脚本

使用 cronsystemd 的定时任务功能,你可以定期执行上述脚本,以便及时了解进程的运行时间。下面是使用 cron 的例子:

# 打开定时任务编辑器
crontab -e

添加以下行来每小时执行一次脚本:

0 * * * * /path/to/check_process_time.sh

保存并退出编辑器。

目录
相关文章
|
2月前
|
网络协议 Linux
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
143 2
|
2月前
|
Linux Python
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
47 2
|
6天前
|
Linux Shell
6-9|linux查询现在运行的进程
6-9|linux查询现在运行的进程
|
13天前
|
存储 传感器 Linux
STM32微控制器为何不适合运行Linux系统的分析
总的来说,虽然技术上可能存在某些特殊情况下将Linux移植到高端STM32微控制器上的可能性,但从资源、性能、成本和应用场景等多个方面考虑,STM32微控制器不适合运行Linux系统。对于需要运行Linux的应用,更适合选择ARM Cortex-A系列处理器的开发平台。
73 0
|
19天前
|
存储 监控 安全
探究Linux操作系统的进程管理机制及其优化策略
本文旨在深入探讨Linux操作系统中的进程管理机制,包括进程调度、内存管理以及I/O管理等核心内容。通过对这些关键组件的分析,我们将揭示它们如何共同工作以提供稳定、高效的计算环境,并讨论可能的优化策略。
22 0
|
1月前
|
Unix Linux
linux中在进程之间传递文件描述符的实现方式
linux中在进程之间传递文件描述符的实现方式
|
1月前
|
Linux
用QEMU模拟运行uboot从SD卡启动Linux
用QEMU模拟运行uboot从SD卡启动Linux
|
2月前
|
开发者 API Windows
从怀旧到革新:看WinForms如何在保持向后兼容性的前提下,借助.NET新平台的力量实现自我进化与应用现代化,让经典桌面应用焕发第二春——我们的WinForms应用转型之路深度剖析
【8月更文挑战第31天】在Windows桌面应用开发中,Windows Forms(WinForms)依然是许多开发者的首选。尽管.NET Framework已演进至.NET 5 及更高版本,WinForms 仍作为核心组件保留,支持现有代码库的同时引入新特性。开发者可将项目迁移至.NET Core,享受性能提升和跨平台能力。迁移时需注意API变更,确保应用平稳过渡。通过自定义样式或第三方控件库,还可增强视觉效果。结合.NET新功能,WinForms 应用不仅能延续既有投资,还能焕发新生。 示例代码展示了如何在.NET Core中创建包含按钮和标签的基本窗口,实现简单的用户交互。
52 0
|
3月前
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
掌握taskset:优化你的Linux进程,提升系统性能
|
3月前
|
弹性计算 Linux 区块链
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
88 4
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
下一篇
无影云桌面