以CentOS7为例,请开发shel脚本,统计出系统中所有进程的状态,即running/sleeping/stopped/zombie的个数分别多少
时间: 2024-10-10 10:06:26 浏览: 41
要编写一个Shell脚本来统计CentOS 7系统中所有进程的状态(运行中、睡眠中、停止和僵尸进程),你可以使用`ps`命令结合`grep`过滤和计数。下面是一个简单的bash脚本示例:
```bash
#!/bin/bash
# 定义进程状态的别名
RUNNING="R"
SLEEPING="Sl"
STOPPED="T"
ZOMBIE="Z"
# 初始化计数器
total_running=0
total_sleeping=0
total_stopped=0
total_zombie=0
# 使用ps命令获取进程状态
ps -eo status | while read -r line; do
# 根据状态分组计数
case $line in
$RUNNING)
((total_running++))
;;
$SLEEPING)
((total_sleeping++))
;;
$STOPPED)
((total_stopped++))
;;
$ZOMBIE)
((total_zombie++))
;;
esac
done
# 输出结果
echo "Running processes: $total_running"
echo "Sleeping processes: $total_sleeping"
echo "Stopped processes: $total_stopped"
echo "Zombie processes: $total_zombie"
# 结果汇总
echo "Total processes: $(($total_running + $total_sleeping + $total_stopped + $total_zombie))"
```
将此脚本保存为`process_status.sh`,赋予执行权限(`chmod +x process_status.sh`),然后运行它`./process_status.sh`。注意,该脚本假设`ps`的输出中状态列是以大写字母表示的,实际的进程状态可能因Linux发行版而略有不同,如有的版本可能是小写。
阅读全文