shell脚本获取进程基本信息

花了一会时间写了个脚本

指定进程的pid,获取他的运行状态、父进程id、运行时长、物理内存、虚拟内存等信息,还有一个CPU占用率没有获取他,想要获取这个值直接top即可,没有必要在这个脚本中实现。

主要方法是获取/proc/$pid/stat和/proc/$pid/status两个文件

这两个文件的主要内容介绍可以看下这个链接:https://www.kernel.org/doc/html/latest/filesystems/proc.html

直接上脚本代码

#!/bin/sh

#根据进程号获取进程的信息,包括运行时间、CPU占用率、物理内存占用、父进程id
HZ=100
pid=$1
# [ -z "$pid" ] && echo "未指定PID" && exit 1
# pid=$
# echo $pid

get_uptime()
{
    uptime=$(cat /proc/uptime | awk '{print int($0)}')
    echo $uptime
}
_name=""
_ppid=""
stat=$(cat /proc/$pid/stat)
# echo $stat
i=0
for s in $stat
do
    #  echo "$i,$s"
     [ $i = 1  ]&& _name=$s
     [ $i = 2  ]&& _state=$s
     [ $i = 3  ]&& _ppid=$s
     [ $i = 21 ]&& _start_time=$(($s/100))   #单位是jiffies
     i=$(($i+1))
done

hwmem=$(cat /proc/$pid/status | grep VmRSS | cut -d ' ' -f 5)
vmmem=$(cat /proc/$pid/status | grep VmSize | cut -d ' ' -f 5)
uptime=$(get_uptime)
_run_time=$(($uptime-$_start_time))

echo -e "进程名称:	"$_name
echo -e "运行状态:	"$_state
echo -e "运行时长:	"$_run_time"秒"
echo -e "父进程ID:	"$_ppid
echo -e "物理内存:	"$hwmem"KB"
echo -e "虚拟内存:	"$vmmem"KB"
# echo $_name $_state $_run_time
展开阅读全文

页面更新:2024-05-16

标签:脚本   进程   基本信息   内存   物理   名称   两个   单位   文件   时间   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top