花了一会时间写了个脚本 指定进程的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