gpt4 book ai didi

linux - 我如何计算 shell 脚本 linux bash 中有多少个挂起的进程

转载 作者:行者123 更新时间:2023-12-03 09:53:46 28 4
gpt4 key购买 nike

我尝试编写一个 shell 脚本来显示和计算有多少个挂起的进程。

但我只成功地显示了挂起的进程:

#!/bin/bash
list_ps=`ps aux | awk '$8~/T/'`
echo "$list_ps"

我试图计算暂停的进程数:

nr=0
for i in $list_ps
do
nr=`expr $nr + 1`
done

当然这是行不通的,因为它计算了那里的每个单词,即使第一行有 USER PID STAT COMMAND。

你能给我一些建议吗?这也是我停止一些 sleep 进程后 "ps aux | awk '$8~/T/" 的输出。

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
alexsan+ 6441 0.0 0.0 9008 736 pts/0 T 16:17 0:00 sleep 5000
alexsan+ 6511 0.0 0.0 9008 820 pts/0 T 16:18 0:00 sleep 5000
alexsan+ 7041 0.0 0.0 9008 760 pts/0 T 16:21 0:00 sleep 333

最佳答案

可以将其他字符添加到状态字段(取决于您使用的选项),因此这可能是一种更安全的方法:

ps aux | awk '$8~/T/'

用一个header来计算你有多少个进程:

ps aux | awk '$8~/T/' | wc -l

跳过标题:

count=$(ps aux | awk '$8~/T/' | wc -l)
echo $((count -1))

一行版本:

echo $(( $(ps aux | awk '$8~/T/' | wc -l)-1))

在单个 awk 中:

ps aux | awk 'NR>1 && $8~/T/' | wc -l

关于linux - 我如何计算 shell 脚本 linux bash 中有多少个挂起的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61986689/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com