常用脚本

1、fix_irq.sh

脚本作用:把所有硬件中断指定到0核上。读者若需修改指定核,可修改01参数为指定核的cpumask

echo 01 > /proc/irq/${irq_number}/smp_affinity
cat /proc/interrupts | awk '{print $1}'  > test_irq.txt
while read line
do
    irq_number=${line%?}
        irq_affinity=`cat /proc/irq/${irq_number}/smp_affinity`

        if [[ ${irq_affinity} != "01" ]] && [[ ${irq_affinity} != "" ]]
        then
            echo "fix ${irq_number} --- ${irq_affinity}  to 1 "
                echo 01 > /proc/irq/${irq_number}/smp_affinity
                irq_affinity=`cat /proc/irq/${irq_number}/smp_affinity`
        fi

        if [[ ${irq_affinity} != "" ]]
        then
                echo "${irq_number} --- ${irq_affinity}"
        fi

done < test_irq.txt

 

2、对比内核两份config的差异:

config分别存放在:config_5.txt、config_4.txt。config_4.txt比config_5.txt多的配置,存放在diff_4.txt

rm diff_4.txt
access_number=0
not_access_number=0
while read line
do
        is_config=`echo ${line: 0: 6}`

        if [[ "${is_config}"x == "CONFIG"x ]]
        then
            is_config=`echo ${line} | awk -F "=" '{print $1}'`
            grep_result=`grep -nr "${is_config}" config_5.txt`
            if [ $? -ne 0 ];then
                echo "${line} not_access" >> diff_4.txt
                let not_access_number=not_access_number+1
            else
                echo "${line} accessful" >> diff_4.txt
                let access_number=access_number+1
            fi

        fi

done < config_4.txt        

 

 3、高cpu 占用率测试代码

#!/bin/bash

while true; do
  for ((i=0; i<1000000; i++)); do
    result=$(echo "scale=1000; sqrt(2)" | bc -l)
    result=$(echo "scale=10; s(0)*c(0)" | bc -l)
  done
done

4、shell 打印时间搓

echo $(date +"%Y-%m-%d %H:%M:%S")

 

5、grep 只拿到检索进程pid

ps aux | grep "[t]est" | awk '{print $2}' //进程名第一个字符[]处理

 

6、while/for  循环示例

#!/bin/bash

while true; do
        process_pids=`ps aux | grep "[t]test" | awk '{print $2}'`
        
        for process_pid in $process_pids; do
            thread_dirs=$(ls /proc/$process_pid/task/)
            for thread_pid in $thread_dirs; do
                cgroup_info=$(cat /proc/$process_pid/task/$thread_pid/cgroup 2>/dev/null)
                #echo $(date +"%Y-%m-%d %H:%M:%S") > /mnt/flash\:/log.txt
                #echo "*********Thread PID: $thread_pid Cgroup Info: $cgroup_info" >> /mnt/flash\:/log.txt
            done
        done
    sleep 0.01
done

 

7、 判断系统是ubuntu 还是centos

//在Linux shell中,你可以使用以下脚本来判断当前系统是Ubuntu还是
if [ -f /etc/os-release ]; then
    source /etc/os-release
    if [ "$ID" == "ubuntu" ]; then
        echo "This is Ubuntu."
    elif [ "$ID" == "centos" ]; then
        echo "This is CentOS."
    else
        echo "Unknown Linux distribution."
    fi
else
    echo "Unable to determine the Linux distribution."
fi

 

posted on 2022-04-24 15:21  红旗kernel  阅读(55)  评论(0)    收藏  举报

导航