[工具] Shell 批量比较服务器所有正在运行进程的变化

介绍

基本信息

作者:朱明宇
名称:批量比较服务器所有正在运行进程的变化
作用:批量比较服务器所有正在运行进程的变化

使用方法

1. 服务器清单 $server_list 每台服务器占用 1 行
2. 在此脚本的分割线内写入相应的内容,并和此脚本放在同一目录下
3. 给此脚本添加执行权限
4. 执行此脚本
5. 此脚本执行完成后,会将运行结果写入当前目录下的 $compare_file 里

脚本分割线里的变量

server_list=server_list.txt #服务器清单
first_time=first_time #存储第一次检结果的目录
second_time=second_time #存储第二次检查结果的目录
compare_file=comparison_results.txt #存储比较结果的文件

注意

此脚本执行前必须要先保证执行本脚本的用户能无密码 ssh 远程这些远程服务器

脚本

#!/bin/bash

####################### Separator ########################

server_list=server_list.txt
first_time=first_time
second_time=second_time
compare_file=comparison_results.txt

####################### Separator ########################

mkdir $first_time &> /dev/null
mkdir $second_time &> /dev/null
echo > $compare_file

read -p "Please input first second or compare now: " choice

check(){
        for server_name in `cat $1`
        do
                ssh -t $server_name "ps -A" | awk '{print $4}' > $2/$server_name
        done
}

compare(){
        for server_name in `cat $1`
        do
                echo $server_name >> $4
                for process in `cat $2/$server_name`
                        do
                        grep $process $3/$server_name &> /dev/null
                        if [ $? -ne 0 ];then
                                echo $process >> $4
                        fi
                done
                echo >> $4
        done
}

if [ $choice == first ];then
        check $server_list $first_time
fi

if [ $choice == second ];then
        check $server_list $second_time
fi

if [ $choice == compare ];then
        compare $server_list $first_time $second_time $compare_file
fi

[内容] Linux 进程修正值 (nice 值) 的设置

内容一:进程优先级和修正值(nice 值)的关系

1.1 进程优先级的作用

进程的真正优先级越小,则此进程则越能优先被执行

1.2 进程优先级和修正值(nice 值)的关系

进程的真正优先级 = 进程默认优先级 + 修正值(nice 值)

1.3 修正值(nice 值)的范围

从 -20 到 +19

内容二:修正值(nice 值)的设置

2.1 设置修正值(nice 值)的格式

# nice -n <correction value> <command>

或者:

# nice --adjustment=<correction value> <command>

或者:

# nice -<correction value> <command>

2.2 设置修正值(nice 值)的案例

# nice -n 10 top

或者:

# nice --adjustment=10 top

或者:

# nice -10 top

(注意:这里的 -10 不是指负数 10 而是指正数 10)

(补充:这里以修正值为 10 启动 top 命令为例)

内容三:显示进程的修正值

# top

或者:

# ps -ef


补充:
1) PRI 代表进程默认的优先级
2) NI 代表进程的修正值(nice 值)
3) 进程的真正优先级 = PRI + NI
4) 如果多个进程的真正优先级一样,则 root 用户的进程被优先执行

[步骤] Linux 脚本的管理 (通过 systemd 实现)

步骤一:创建要被管理的脚本

# vim /root/12456.sh

创建以下内容:

#!/bin/bash
for i in {1..5}
do
echo $i
done

(补充:这里以创建 /etc/root/for.sh 脚本为例)

步骤二:创建 systemctl 的管理文件

# vim /etc/systemd/system/12456.service

创建以下内容:

[Unit]
Description=12345
After=default.target

[Service]
Type=oneshot
ExecStart=/root/12456.sh

[Install]
WantedBy=default.target

(补充:这里以创建 /etc/systemd/system/12456.service 来管理 ExecStart=/root/12456.sh 为例)

步骤三:加载刚刚创建的 systemctl 管理文件

# systemctl daemon-reload

步骤四:给 systemctl 的管理文件添加执行权限

# chmod u+x /etc/systemd/system/12456.service

步骤五:通过 systemd 管理脚本

5.1 启动脚本

# systemctl start 12456.service

5.2 关闭脚本

# systemctl stop 12456.service

5.3 重启脚本

# systemctl restart 12456.service

5.4 让脚本开机自启

# systemctl enable 12456.service

[内容] Linux 进程状态介绍

内容一:Linux 的第一进程状态

(1)R 处于运行状态或者等待运行状态
(2)S 处于休眠状态
(3)T 处于停止状态或者处于被追踪的状态
(4)Z 处于僵尸进程的状态
(5)W 处于进入内存交换的状态
(6)X 处于被杀死进程的状态
(7)D 处于不可中断的休眠状态

(注意:D 状态通常由存储进程中断导致,无法被 kill 命令杀死,但可以通过重启系统清除)

内容二:Linux 的第二进程状态

(1)< 代表此进程具有高优先级
(2)N 代表此进程具有低优先级
(3)L 代表此进程有些部分被所进了内存
(4)s 代表此进程包含子进程
(5)+ 代表此进程处于后台的状态
(6)l 代表此进程是被克隆出来的多线程

内容三:Linux 显示进程状态的命令

# ps -aux