对于资深运维工程师而言,Perl的一行式脚本曾是高效解决问题的利器,其语法特性甚至让脚本自带混淆效果。如今,Python凭借其简洁语法和丰富库支持,成为运维自动化的重要工具。本文整理了一系列实用的Python一行式脚本,覆盖Linux运维的多个场景,包括系统监控、文件管理、进程控制与网络检测等,可直接在终端执行,提升日常工作效率。
一、系统资源监控类
1. 查看CPU核心数与实时使用率
依赖psutil库,Debian系统可通过apt-get install python3-psutil安装,其他系统可使用pip安装。
python3 -c "import psutil; print(f'CPU核心数:{psutil.cpu_count()}\nCPU使用率:{psutil.cpu_percent(interval=1)}%')"

2. 查看内存使用情况(以GB为单位)
python3 -c "import psutil; mem=psutil.virtual_memory(); print(f'总内存:{mem.total/1024/1024/1024:.2f}GB\n已用内存:{mem.used/1024/1024/1024:.2f}GB\n内存使用率:{mem.percent}%')"

3. 查看磁盘挂载点及使用率
python3 -c "import psutil; [print(f'挂载点: {d.mountpoint}\t使用率: {psutil.disk_usage(d.mountpoint).percent}%') for d in psutil.disk_partitions() if d.fstype]"
二、文件与目录管理类
1. 统计指定目录下文件总数(包含子目录)
将命令中的/var替换为目标目录路径。
python3 -c 'import os; total = sum(len(files) for _, _, files in os.walk("/var")); print(f"文件总数:{total}")'

2. 查找系统中大于10MB的文件(排除/proc、/sys、/dev目录)
python3 -c 'import os; res=[];[res.append((os.path.getsize(p),p)) for r,_,fs in os.walk("/") if not r.startswith(("/proc","/sys","/dev")) for f in fs for p in [os.path.join(r,f)] if os.path.exists(p) if os.path.getsize(p)>10*1024*1024]; res.sort(reverse=True); print("\n".join([f"{p} - {s/1024/1024:.2f}MB" for s,p in res]) if res else "无≥10MB的文件")'

3. 批量修改文件后缀(例如将.txt改为.bak)
python3 -c "import os; [os.rename(f, f.replace('.txt','.bak')) for f in os.listdir('.') if f.endswith('.txt')]"

4. 计算目录下所有文件的MD5校验值
python3 -c 'import hashlib,os; [print(f"{f}: {hashlib.md5((lambda x: (x.read(),x.close())[0])(open(f, "rb"))).hexdigest()}") for f in os.listdir(".") if os.path.isfile(f)]'

三、进程管理类
1. 查找指定进程(如python)的PID与内存占用
python3 -c "import psutil; [print(f'PID:{p.pid}\t名称:{p.name()}\t内存占用:{p.memory_percent()}%') for p in psutil.process_iter(['pid','name','memory_percent']) if 'python' in p.info['name']]"

2. 强制终止指定进程(谨慎操作,示例为终止所有python进程)
python3 -c "import psutil; [p.kill() for p in psutil.process_iter() if 'python' in p.name()]"
3. 查看系统中占用CPU最高的5个进程
python3 -c "import psutil; [print(f'PID:{p.pid}\t名称:{p.name()}\tCPU:{p.cpu_percent()}%') for p in sorted(psutil.process_iter(['pid','name','cpu_percent']),key=lambda x:x.info['cpu_percent'],reverse=True)[:5]]"
四、网络相关类
1. 检测指定端口是否开放(以80端口为例)
python3 -c "import socket; s=socket.socket(); s.settimeout(2); print('开放' if s.connect_ex(('localhost',80))==0 else '关闭'); s.close()"

2. 查看本机所有IP地址
需安装netifaces库:apt-get install python3-netifaces。
python3 -c 'import netifaces; [print(f"{iface}: {netifaces.ifaddresses(iface)[netifaces.AF_INET][0]["addr"]}") for iface in netifaces.interfaces() if netifaces.AF_INET in netifaces.ifaddresses(iface)]'

3. 测试网络延迟(ping 8.8.8.8)
python3 -c "import subprocess; res=subprocess.run(['ping','-c','1','8.8.8.8'],stdout=subprocess.PIPE); print(res.stdout.decode('utf-8'))"

五、系统信息查询类
1. 查看系统内核版本
python3 -c "import platform; print(f'内核版本:{platform.release()}')"

2. 查看系统启动时间
python3 -c 'import psutil,datetime; print(f"启动时间:{datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")}")'

3. 统计当前登录用户数
python3 -c 'import os; print(f"当前登录用户数:{len(os.popen("who | wc -l").read().strip())}")'

这些Python一行式脚本虽然在某些场景下可能比Shell命令更复杂,但展示了Python在运维自动化中的灵活应用,为学习脚本编写和扩展自定义功能提供了实用参考。
