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

SHELLLINUX2015-06-30 17:11
  • 进程开始时间
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 

原文链接: http://blog.jtwo.me/process-start-time-and-elapsed-time