文章

系统检测

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 进行授权