Linux运维对比:Shell运维VSPython运维

    技术2025-06-07  66

    目录

     

    一、目的所在

    二、实例

    2.1、需求

    2.2、通过Shell实现

    2.3、通过Python实现

    2.4、扩展

    Shell

    Python

    主要区别:

    实现功能:

    跨平台性:


    一、目的所在

    通过简单的例子去找出Linux运维中使用shell与使用python的一些不同,分析两者的主要特点

    二、实例

    2.1、需求

    查询当前主机是否支持超线程

    查询当前内存使用情况

    2.2、通过Shell实现

    既然是在Linux,那么肯定要先使用Linux自身的工具,实现脚本内容如下:

    g='\e[1;32m' e='\e[0m' prin(){ echo -e "$1" } cpu_red(){ #内核数[即线程] cpu_processor=`grep processor /proc/cpuinfo | wc -l` #CPU数量[即多路] cpu_number=`cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l` #CPU物理内核 cpu_core=`cat /proc/cpuinfo | grep "cpu cores" | sed -n '1p' | awk '{print $4}'` #CPU型号 cpu_info=`cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c` } mem_red(){ #总内存[单位MB] total=`free -m | grep -v "Swap" | awk '{print $2}' | sed -n "2p"` used=`free -m | grep -v "Swap" | sed -n '2p' | awk '{print $3}'` free=`free -m | grep -v "Swap" | sed -n '2p'| awk '{print $4}'` shared=`free -m | grep -v "Swap" | sed -n '2p' | awk '{print $5}'` cache=`free -m | grep -v "Swap" | sed -n '2p' | awk '{print $6}'` } print_cpu(){ cpu_red echo -e "CPU物理数:${g}${cpu_number}${e}\nCPU内核数:${g}${cpu_core}${e}\nCPU型号:${g}${cpu_info}${e}" if [[ ${cpu_core} == ${cpu_processor} ]];then echo -e "超线程:${g}支持${e}" else echo -e "超线程:${g}不支持${e}" fi } print_mem(){ mem_red d="当前主机内存信息 总内存:${g}${total}MB${e} 当前已用:${g}${used}MB${e} 当前可用:${g}${free}MB${e} 共享占用:${g}${shared}MB${e} 缓存占用:${g}${cache}MB${e}" for i in $d;do prin "$i" done } print_cpu print_mem

    执行结果如下:

     

    2.3、通过Python实现

    源码如下:

    import psutil def cpu(): info = psutil.cpu_times() luoji = psutil.cpu_count() wuli = psutil.cpu_count(logical=False) if luoji == wuli: print("主机CPU不支持超线程") else: i = int(luoji/2) if wuli == i: print("主机CPU支持超线程") def mem(): mems = psutil.virtual_memory() print('当前主机总内存:', int(mems.total/1024/1024), 'MB') print('当前已使用:', int(mems.used/1024/1024), 'MB') cpu() mem()

    执行结果如下:

    2.4、扩展

    下面附上Windows端的执行结果

    Shell

    Python

    主要区别:

    实现功能:

    Shell需要通过相关命令进行特定的筛选,灵活性比较高,但是比较复杂

    Python只需要调用别人写好的模块即可实现相关功能,且不需要熟悉Linux命令,但是能够实现的功能相对来说不够灵活,总体就是简单

    跨平台性:

    Shell可以在任意Linux平台上运行

    Python可以在任意平台上运行,所以Python的跨平台性更强

     

    Processed: 0.013, SQL: 9