我试图制作一个小的项目脚本来坐下来监视所有的/ 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````
答案 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