0

0

Linux如何查看某个进程的启动时间

P粉602998670

P粉602998670

发布时间:2025-09-03 10:15:01

|

307人浏览过

|

来源于php中文网

原创

答案是通过解析/proc/[pid]/stat文件第22个字段starttime并结合系统启动时间和时钟频率可计算进程启动时间,也可使用ps命令直接查看;具体步骤为:先用pidof或ps获取PID,再读取/proc/[pid]/stat第22字段值,除以CLK_TCK得到自系统启动以来的秒数,加上系统启动时间的纪元秒数后转换为可读格式;此外可用ps -o lstart [pid]直接显示启动时间,或通过systemctl status查看systemd服务的启动时间。

linux如何查看某个进程的启动时间

要查看Linux进程的启动时间,核心在于读取

/proc/[pid]/stat
文件。这个文件包含了进程的各种状态信息,其中就包括启动时间。

/proc/[pid]/stat文件解析及命令组合

如何通过/proc/[pid]/stat准确获取进程启动时间?

/proc/[pid]/stat
文件中的第22个字段(
starttime
)记录了进程的启动时间。这个时间是从系统启动到进程启动所经过的时钟滴答数。要将其转换为可读的时间格式,需要进行一些计算。

  1. 找到进程PID: 首先,你需要知道目标进程的PID。可以使用

    ps aux | grep 
    pidof 
    命令来查找。

  2. 读取

    /proc/[pid]/stat
    使用
    cat /proc/[pid]/stat
    命令读取该文件。

  3. 提取

    starttime
    使用
    awk
    命令提取第22个字段。例如:
    cat /proc/[pid]/stat | awk '{print $22}'

  4. 计算启动时间:

    starttime
    的值需要进行转换。

    • 首先,获取系统启动时间(以秒为单位):
      uptime -s
    • 然后,获取时钟频率(通常是100):
      getconf CLK_TCK
    • starttime
      除以时钟频率,得到进程启动后经过的秒数。
    • 将系统启动时间加上进程启动后经过的秒数,得到进程的实际启动时间。

一个完整的Shell脚本示例:

#!/bin/bash

process_name=$1
pid=$(pidof "$process_name")

if [ -z "$pid" ]; then
  echo "Process $process_name not found."
  exit 1
fi

starttime=$(cat /proc/$pid/stat | awk '{print $22}')
boottime=$(uptime -s)
clk_tck=$(getconf CLK_TCK)

seconds=$((starttime / clk_tck))

# Convert boottime to epoch seconds
boottime_epoch=$(date -d "$boottime" +%s)

# Calculate process start time in epoch seconds
start_epoch=$((boottime_epoch + seconds))

# Convert epoch seconds to human-readable format
start_time=$(date -d @$start_epoch)

echo "Process $process_name (PID: $pid) started at: $start_time"

这个脚本接受进程名作为参数,然后计算并打印出进程的启动时间。

除了/proc/[pid]/stat,还有其他方法可以查看进程启动时间吗?

除了

/proc/[pid]/stat
,还可以使用
ps
命令结合一些选项来查看进程的启动时间。

ps -o lstart 
:这个命令会直接以可读的格式显示进程的启动时间。 例如:
ps -o lstart 12345

淘客帝国免费版
淘客帝国免费版

淘客帝国免费版4.3,整合JSSDK,开放屏蔽词设置,优化效率。,感谢大家对淘客帝国的支持,因为有你们的支持,让我们不断前进,不断完善.淘客帝国团队向各位淘客致谢~我们一直在努力争取给淘客朋友们提供最好的淘客TOP API淘客程序!免费版我们一如既往会一直更新,希望大家关注免费版的最新版本号。随时保持版本更新。 请仔细用10分钟时间查看以下信息!本程序以官方名义推荐。没有任何后门,大家可放心使用!

下载

ps -o etime 
:这个命令显示进程运行了多长时间。 虽然不是直接的启动时间,但结合当前时间可以推算出启动时间。 例如:
ps -o etime 12345

ps -aux
:虽然这个命令输出的信息很多,但其中包含了一个
START
列,显示了进程的启动时间。不过,对于运行时间较长的进程,
START
列可能只会显示日期,而没有具体的启动时间。

需要注意的是,使用

ps
命令受到系统安全策略的限制,可能无法查看所有进程的信息。

如何处理进程启动时间显示不准确的情况?

有时候,由于系统时间调整、进程重启等原因,通过

/proc/[pid]/stat
ps
命令获取的进程启动时间可能不准确。

  • 系统时间调整: 如果在进程运行期间系统时间被调整,那么计算出来的启动时间可能会出现偏差。 解决办法是在时间调整后重启进程,或者使用更可靠的时间戳记录方法。

  • 进程重启: 如果进程被重启,那么

    /proc/[pid]/stat
    中的信息会被更新为新的启动时间。 要查看历史启动时间,可能需要借助系统日志或进程监控工具

  • 虚拟化环境: 在虚拟化环境中,由于时间同步问题,进程启动时间可能与宿主机不同步。 解决办法是配置虚拟机与宿主机之间的时间同步,或者使用虚拟化平台提供的API来获取准确的进程启动时间。

此外,一些进程管理工具(如

systemd
)会记录进程的启动时间,可以通过这些工具来获取更准确的信息。 例如,使用
systemctl status 
可以查看由
systemd
管理的服务的启动时间。

总的来说,虽然

/proc/[pid]/stat
ps
命令是常用的方法,但在实际应用中,需要根据具体情况选择合适的方法,并注意处理可能出现的误差。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

184

2023.09.27

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1348

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

701

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

572

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

545

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

297

2023.07.20

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.1万人学习

Git 教程
Git 教程

共21课时 | 2.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号