系统检测
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash
# 判断是什么系统类型
if [ -f /etc/redhat-release ]; then
SYSTEM=0
else
SYSTEM=1
fi
function centos_info()
{
net_ip=`curl -s ip.sb`
intranet_ip=`ifconfig | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}'`
echo -e "外网IP: \t"$net_ip
echo -e "内网IP: \t"$intranet_ip
cpu_num=`grep -c "model name" /proc/cpuinfo`
echo -e "cpu总核数: \t"$cpu_num
echo "$( date "+%Y-%m-%d %H:%M:%S" ):内存监控"
# MEM=$( vmstat 2 5 | )
}
function ubuntu_info()
{
IP=`ifconfig | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}' | awk -F":" '{print $2}'`
echo -e "IP地址:"$IP
}
if [ $SYSTEM -eq 0 ]; then
centos_info
else
ubuntu_info
fi
检测进程状态
是否存活
1
2
3
4
5
6
7
8
for pid in /proc/[0-9]*; do
pid_num=$(basename "$pid")
if kill -0 "$pid_num" 2>/dev/null; then
echo "PID $pid_num: 存活"
else
echo "PID $pid_num: 不存在或僵死"
fi
done
1
2
3
4
5
6
7
8
PID 1: 存活
PID 10: 存活
PID 11: 存活
PID 12: 存活
PID 370: 存活
PID 7: 存活
PID 8: 存活
PID 9: 存活
进程状态
1
2
3
4
5
for pid in /proc/[0-9]*; do
if [ -f "$pid/status" ]; then
echo "PID: $(basename $pid) - State: $(grep State "$pid/status" | cut -f2)"
fi
done
1
2
3
4
5
6
7
PID: 1 - State: S (sleeping)
PID: 10 - State: S (sleeping)
PID: 11 - State: S (sleeping)
PID: 12 - State: S (sleeping)
PID: 273 - State: S (sleeping)
PID: 7 - State: S (sleeping)
PID: 8 - State: S (sleeping)
1
2
3
4
5
6
7
8
9
10
11
12
13
进程状态解释
S (sleeping): 睡眠状态,进程在等待事件发生(如I/O操作、信号等),这是最常见的正常状态
R (running): 运行状态,进程正在运行或在运行队列中等待
D (disk sleep): 不可中断睡眠,通常在进行I/O操作
Z (zombie): 僵死状态,这是需要关注的异常状态
T (stopped): 停止状态,进程被信号暂停
X (dead): 死亡状态,即将被销毁
本文由作者按照
CC BY 4.0
进行授权