当前位置: 首页 > news >正文

获取Linux设备系统启动时间和进程启动时间

获取Linux设备系统启动时间和进程启动时间

1、/proc/[pid]/stat

cat /proc/3889/stat 3889 (syslogd) S 1 3889 3889 0 -1 4194368 98 0 0 0 2 5 0 0 20 0 1 0 2367 2723840 335 4294967295 65536 813332 3203767808 0 0 0 0 1 16386 1 0 0 17 1 0 0 0 0 0 880376 882517 884736 3203768080 3203768106 3203768106 3203768302 0
  1. PID (字段 0): 3889

    • 进程 ID 为 3889。
  2. 进程名 (字段 1): (syslogd)

    • 进程名称为 syslogd(系统日志守护进程)。
  3. 进程状态 (字段 2): S

    • S 表示进程处于 可中断睡眠(等待事件完成,如 I/O 操作)。

      R:runnign, S:sleeping (TASK_INTERRUPTIBLE), D:disk sleep (TASK_UNINTERRUPTIBLE), T: stopped, T:tracing stop,Z:zombie, X:dead

  4. PPID (字段 3): 1

    • 父进程 ID 为 1(通常是 systemdinit 进程)。
  5. 进程组与会话 (字段 4-5):

    • PGID (字段 4): 3889(进程组 ID 与 PID 相同,表示是组长进程)。
    • Session ID (字段 5): 3889(会话 ID 与 PID 相同)。
  6. 终端信息 (字段 6-7):

    • tty_nr (字段 6): 0(无控制终端)。
    • tpgid (字段 7): -1(前台进程组 ID 无效,无终端关联)。
  7. 缺页统计 (字段 9-12):

    • minflt (字段 9): 98(次要缺页次数,无需磁盘 I/O)。
    • majflt (字段 11): 0(主要缺页次数,需磁盘 I/O)。
    • 子进程缺页统计(字段 10, 12)均为 0
  8. CPU 时间 (字段 13-16):

    • utime (字段 13): 2(用户态运行时间,单位:时钟滴答jiffies)。
    • stime (字段 14): 5(内核态运行时间,单位:时钟滴答jiffies)。
    • cutime: 0,累计的该任务的所有的waited-for进程曾经在用户态运行的时间,单位为jiffies。
    • cstime: 0,累计的该任务的所有的waited-for进程曾经在核心态运行的时间,单位为jiffies。
  9. 优先级与调度 (字段 17-20):

    • priority (字段 17): 20(动态优先级)。
    • nice (字段 18): 0(静态优先级调整值,默认优先级)。
    • num_threads (字段 19): 1(仅 1 个线程)。
    • itrealvalue (字段 20): 0(废弃字段)。
  10. 启动时间 (字段 21): 2367

    • start_time进程启动时刻(单位:时钟滴答),需结合系统启动时间计算绝对时间。
  11. 内存使用 (字段 22-24):

    • vsize (字段 22): 2723840(虚拟内存大小 ≈ 2.6 MB)。
    • rss (字段 23): 335(驻留物理内存页数,每页通常 4 KB → 335 × 4 KB ≈ 1.34 MB)。
    • rsslim (字段 24): 4294967295(RSS 软限制,值 0xFFFFFFFF 表示无限制)。
  12. 地址空间 (字段 25-30):

    • startcode/endcode (字段 25-26): 65536, 813332(代码段起止地址)。
    • startstack (字段 27): 3203767808(栈起始地址)。
    • kstkesp/kstkeip (字段 28-29): 0(当前栈指针和指令指针,可能为内核态值)。
    • signal/blocked (字段 30-33): 信号位图(待处理、阻塞、忽略、捕获的信号)。
  13. 挂起等待 (字段 34): 0

    • wchan: 0(等待事件的内核地址,0 表示无等待)。
  14. 退出与调度 (字段 37-41):

    • exit_signal (字段 37): 17(进程退出时向父进程发送的信号,SIGCHLD)。
    • processor (字段 38): 1(最后运行的 CPU 编号)。
    • rt_priority (字段 39): 0(实时优先级,0 表示普通进程)。
    • policy (字段 40): 0(调度策略,0 为 SCHED_NORMAL)。
  15. 内存布局 (字段 44-50):

    • start_data/end_data (字段 44-45): 880376, 882517(数据段起止)。
    • start_brk (字段 46): 884736(堆起始地址)。
    • arg_start/arg_end (字段 47-48): 3203768080, 3203768106(命令行参数地址)。
    • env_start/env_end (字段 49-50): 3203768106, 3203768302(环境变量地址)。
  16. 退出状态 (字段 51): 0

    • exit_code: 0(进程尚未退出)。

注:字段从0开始累计

进程的总Cpu时间processCpuTime = utime + stime + cutime + cstime,该值包括其所有线程的cpu时间。

2、/proc/stat

cat /proc/statcpu  76365 0 231716 826914 1167 0 14933 0 0 0
cpu0 71215 0 196028 280105 549 0 14930 0 0 0
cpu1 5150 0 35688 546809 618 0 3 0 0 0
intr 20010304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8004733 0 0 0 0 0 10 408408 49114 3467541 0 270133 619373 0 0 0 96963 773185 0 0 0 0 4426 0 2 0 0 0 0 0 0 92496 0 0 0 1456328 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 1 1
ctxt 24407140
btime 1749798323
processes 13785
procs_running 2
procs_blocked 0
softirq 4706790 0 1038568 33285 1480921 0 0 16 1008048 0 1145952

总的cpu时间totalCpuTime = user + nice + system + idle + iowait + irq + softirq + stealstolen + guest

btime 系统启动时间点

#!/bin/shALL_SERVER=`cat /tmp/app/exec/app.json |grep name |awk -F ":" '{print $2}'| sed 's/"//g' | sed 's/,//g'`RSize=0
VSize=0
PSize=0printvalue()
{RSize=0VSize=0PSize=0boot_time=$(awk '/btime/ {print $2}' /proc/stat)echo "kernel_start  $boot_time"cd /procfor ecpt in $ALL_SERVERdoallprocid=`ps | grep $ecpt | grep -v '/bin/sh' | grep -v 'grep' | awk '{print $1}'`for procid in $allprociddoawk '{print $14, $15, $16, $17, $22}' "/proc/$procid/stat" | {read utime stime cutime cstime start_timetotal_cpu_time_jiffies=$((utime + stime + cutime + cstime))# 获取当前系统时间(jiffies)uptime=$(awk '{print $1}' /proc/uptime)new_time=$((start_time / 100 + boot_time))echo "$ecpt  $new_time"}donedonereturn 0
}printinfo()
{printvaluedatereturn 0
}printinfo
http://www.xdnf.cn/news/1019053.html

相关文章:

  • 基于Netty的UDPServer端和Client端解决正向隔离网闸数据透传问题
  • 前端八股文-vue篇
  • 2025-06-13【视频处理】基于视频内容转场进行分割
  • 深度剖析:AI 社媒矩阵营销工具,如何高效获客?
  • 实验复现:应用 RIR 触发器的 TrojanRoom 后门攻击实现
  • Java虚拟机解剖:从字节码到机器指令的终极之旅(二)
  • 【第一章:人工智能基础】03.算法分析与设计-(4)贪心算法(Greedy Algorithm)
  • C++ 中文件 IO 操作详解
  • 软件开发 | 从 Azure DevOps迁移至GitHub企业版的最佳路径
  • HTTP全攻略:从入门到精通
  • @RequestHeader(“Authorization“) 解析:HTTP 请求头中的 Authorization 字段
  • JSON 编辑器:从语法到数据处理(二)
  • 在C#中乐观锁的实现
  • ios 26发布:设计革新与智能整合
  • 分析实例,学习了解浏览器事件循环机制
  • 基于ssm的教学质量评估系统
  • CIM和建筑风貌管控平台
  • [7-01-03].第03节:环境搭建 - 集群架构
  • Java企业技术趋势分析:AI应用的落地实践与未来展望
  • nuxt2报错Unexpected token ‘{‘
  • CSS flex-basis 属性详解:功能、用法与最佳实践
  • CSS Houdini 解锁前端动画的下一个时代!
  • 主流版本控制工具Git vs Perforce P4:架构模式、性能、大文件管理及分支管理对比详解
  • 在线教程丨刷新TTS模型SOTA,OpenAudio S1基于200万小时音频数据训练,深刻理解情感及语音细节
  • 引入 Kafka 消息队列解耦热点操作
  • list使用及模拟
  • HarmonyOS 应用模块化设计 - 面试核心知识点
  • WPF--Application.Current.Dispatcher.BeginInvoke
  • 在Jupyter Notebook中使用Conda虚拟环境
  • 使用 PyMuPDF 和 PySide6/PyQt6 编写的 PDF 查看器 (显示树状书签和缩略图列表,没有文字选择功能)