找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2831

积分

0

好友

376

主题
发表于 2025-12-18 02:56:49 | 查看: 78| 回复: 0

对于资深运维工程师而言,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)}%')"

CPU监控示例

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)]'

MD5计算示例

三、进程管理类

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)]'

IP地址查看示例

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在运维自动化中的灵活应用,为学习脚本编写和扩展自定义功能提供了实用参考。
总结图示




上一篇:Spring AOP execution表达式底层逻辑:核心语法、匹配逻辑与失效排查
下一篇:PyTorch全连接层与卷积层详解:nn.Linear和nn.Conv2d参数与应用
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-8 22:21 , Processed in 0.525054 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表