Linux进程开始时间及运行时间

Published: Tags: SHELL LINUX
  • 进程开始时间

    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"
    
  • 进程运行秒数

    ETIME() { 
    pid=$1; 
    user_hz=$(getconf CLK_TCK); # Mostly it's 100 on x86/x86_64 
    jiffies=$(cat /proc/$pid/stat |awk '{print $22}'); 
    sys_uptime=$(cat /proc/uptime |awk '{print $1}'); 
    elapsed_time=$(( ${sys_uptime%.*} - ($jiffies/$user_hz) )); 
    echo $elapsed_time; # Process Elapsed Time 
    }
    
  • 进程运行时间

    ps -p $pid -o etime |tail -1 #人类可读时间
    ps -p $pid -o pid,lstart,stime,etime,cmd #指定进程PID值
    ps -C jsvc -o pid,lstart,stime,etime,args #指定进程名字
    ps ax -o pid,lstart,etime,args #所有进程信息
    
  • 进程打开的文件数量

    lsof -n |awk '{print $2}' |sort |uniq -c |sort -nr |head