零基础也能上手的Python自动化运维教程
准备工作:先搭好Python环境
无论你的服务器是CentOS还是Ubuntu,Python通常已预装。
在命令行输入 python3 --version 可查看版本。
如果提示命令未找到,运行 sudo apt install python3(Debian系)或 sudo yum install python3(RHEL系)。
建议用 python3 而不是 python,避免版本混淆。
安装好之后需要确认pip是否可用:pip3 --version。
没有的话执行 sudo apt install python3-pip。
有了pip,后续安装第三方库会非常方便。
第一个自动化脚本:清理7天前的日志
日志占满磁盘是运维中最常见的问题。
写一个Python脚本定期清理旧日志,可以避免手动排查。
在 /usr/local/bin/ 下新建文件 clean_logs.py:
#!/usr/bin/env python3
import os
import time
log_dir = "/var/log/myapp"
retention_days = 7
now = time.time()
cutoff = now - retention_days * 86400
for filename in os.listdir(log_dir):
filepath = os.path.join(log_dir, filename)
if os.path.isfile(filepath):
mtime = os.path.getmtime(filepath)
if mtime < cutoff:
os.remove(filepath)
print(f"Deleted: {filepath}")
给脚本执行权限:chmod +x /usr/local/bin/clean_logs.py。
手动运行一次测试:python3 /usr/local/bin/clean_logs.py。
如果 /var/log/myapp 路径不存在,先创建好,否则会报错。
用crontab让脚本自动运行
Linux自带的定时任务工具crontab能让脚本每天执行一次。
编辑当前用户的crontab:
crontab -e
第一次会提示选择编辑器,建议选vim或nano。
在文件末尾添加一行:
0 2 * * * /usr/local/bin/clean_logs.py >> /var/log/clean_logs.log 2>&1
这里表示每天凌晨2点运行,并把输出和错误都追加到日志文件,方便后续查看。
保存后,crontab会自动加载。
验证是否生效:crontab -l 应该能看到刚添加的行。
高频问题与避坑说明
问题1:脚本报错 Permission denied
原因:日志目录或文件没有读/写权限。
用 ls -ld /var/log/myapp 查看目录权限,确保运行脚本的用户(通常是root或当前用户)可以删除文件。
临时解决可以用 sudo 运行,但更推荐给脚本加sudo或者调整目录权限。
问题2:crontab不执行
检查crontab语法:五个时间字段和命令之间必须有空格。
同时确认系统时间准确。
另外,crontab中的环境变量和终端不一样,所以脚本里最好使用绝对路径。
如果脚本依赖环境变量,可在crontab开头添加 SHELL=/bin/bash 和 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin。
问题3:删除的不是预期文件
建议先写一个只打印不删除的测试版本——把 os.remove 改成 print,运行确认后再改回正式版本。
这是最重要的避坑步骤。
效果验证:确认自动化生效
创建几个旧文件来模拟:
touch -t 202301010000 /var/log/myapp/old_test.log
touch /var/log/myapp/new_test.log
然后手动运行脚本:python3 /usr/local/bin/clean_logs.py。
之后查看目录,确认旧文件被删除、新文件还在。
再检查crontab日志 /var/log/clean_logs.log 是否有输出。
如果一切正常,第二天凌晨2点就会自动执行。
你还可以扩展这个脚本:用 psutil 监控CPU和内存,用 smtplib 发告警,或者用 shutil 做文件同步。
Python自动化运维的核心就是先跑通一个简单任务,然后逐步叠加功能。
如果你正在学习Python自动化运维,建议先从本文的日志清理脚本练手,理解文件操作和定时执行,再结合实际业务场景编写更复杂的工具。
遇到问题优先检查路径、权限和crontab语法,大多数错误都能靠这几招解决。