尝试使用bash脚本制作实时/ proc /阅读器以进行实时流程监控

时间:2018-03-15 00:13:23

标签: linux bash unix

我试图制作一个小的项目脚本来坐下来监视所有的/ proc /目录,因为大多数情况下我运行了这个概念并且它在某种程度上有效。我的目标是扫描所有文件并捕获它们的状态文件并提取相应的信息,然后我想在无限循环中运行此过程,以便为我提供有关何时运行和删除的实时更新离开调度程序。现在每次运行脚本时,它都会打印50多个空白行,每次打到正确的正则表达式时都会正确打印,但我的目的是不按照它的方式滚动屏幕。任何帮助都将不胜感激。

regex="[0-9]"
temp=""
for f in /proc/*; do
       if [[ -d $f && $f =~ /proc/$regex ]]; then
                output=$(cat $f/status | grep "^State") #> /dev/null
                process_id=$(cut -b 7- <<< $f)
                state=$(cut -b 10-19 <<< $output)
                tabs 4
                if [[ $state =~ "(running)" ]]; then
                echo -e "$process_id:$state\n" | sort >> temp
                fi
        fi
done
cat temp
rm temp````

1 个答案:

答案 0 :(得分:0)

要获取运行所有进程的PID和状态,请尝试:

awk -F':[[:space:]]*' '/State:/{s=$2} /Pid:/{p=$2} ENDFILE{if (s~/running/) print p,s; p="X"; s="X"}' OFS=: /proc/*/status

要每秒更新此输出:

while sleep 1; do awk -F':[[:space:]]*' '/State:/{s=$2} /Pid:/{p=$2} ENDFILE{if (s~/running/) print p,s; p="X"; s="X"}' OFS=: /proc/*/status; done