呵呵呵呵呵

萝莉有三好,柔体 轻音 易推倒。女神有三宝,干嘛 呵呵 去洗澡。宅男有三好:Dota 基友 破电脑。


Linux下获取进程的启动时间的二种方法

Linux下获取进程的启动时间的二种方法

1、使用shell实现

ps -p <pid> -o lstart
ps -eo pid,lstart|grep 1267
ps axo pid,ppid,comm,pmem,lstart | grep scim

2、通过procfs里面的jiffies时间计算


在Linux系统中,时间管理有两个基本概念:xtime和jiffies。

    xtime主要给time系函数使用,结构比较简单(include\linux\time.h):
        
    struct timespec {
         time_t     tv_sec ;          /* seconds */
         long      tv_nsec ;      /* nanoseconds, 纳秒,以前的版本是微秒*/
    } ;

    tv_sec就是大家平常所说的unix时间戳,在CMOS中维护,关机时由电池维持正常运行。

    系统启动时,通过get_cmos_time()取cmos时间赋值。运行时,通过设置系统定时器,每隔一段时间触发一个节拍,他们管这个节拍叫tick。每触发一次tick,就会通过update_wall_time_one_tick()来更新xtime。

    而jiffies是内核中的一个全局变量,它的功能看起来很简单:记录从系统启动以来的tick数。
    在/proc/ /stat中( 源码请参考proc_pid_stat(),文件是fs/proc/array.c ),维护了进程的很多状态信息,其中第22项是进程启动时的jiffies值,通过它可以计算出进程启动时,系统已经开机的时间。把这个时间加上系统启动时间(/proc/stat),就可以得到进程启动时间。


#!/bin/sh
function show_start_time ( )
{
   pid = $ 1
   JIFFIES = ` cat / proc / $pid / stat | cut - d " " - f22 `
   UPTIME = ` grep btime / proc / stat | cut - d " " - f2 `
   START_SEC = $ ( ( $UPTIME + $JIFFIES / 100) )
   date - d "1970-01-01 UTC $START_SEC seconds"
}
 

更多内容:

linux根据进程名获取进程pid的三种方法
linux中clock,times,gettimeofday,clock_gettime对比代码示例
linux中时间函数gettimeofday()使用示例
linux中实时函数clock_gettime示例
linux中times()时间函数示例

本文链接地址:http://www.hehehehehe.cn/i/825.html