2. 环境准备:Linux基础命令回顾、Python3环境安装、pip与虚拟环境配置
说实话,日志分析这件事,环境没搭好,后面全是坑。我见过太多人一上来就写代码,结果连文件都找不到、权限报错、Python版本冲突……折腾半天,正事儿一点没干。
这一章,咱们把地基打牢。别嫌基础,你想想看,后面几十章都要站在这个环境上跑。
2.1 Linux基础命令回顾
日志分析的主战场,99% 是 Linux 服务器。Windows?也有,但咱们这课主要讲 Linux。我自己的习惯是,不管用什么发行版,先把这几个命令刻在脑子里。
2.1.1 文件与目录操作
你拿到一份日志,第一件事是什么?找到它、看它、筛它。这几个命令就够了:
| 命令 | 用途 | 我常用的参数 |
|---|---|---|
ls |
列出目录内容 | -lh 看大小,-t 按时间排序 |
cd |
切换目录 | 没有参数就是回 home |
pwd |
显示当前路径 | 迷路时救命用的 |
cat |
查看小文件 | 日志太大别用,会卡死终端 |
less |
分页查看大文件 | Shift+G 跳到最后,/ 搜索关键词 |
head / tail |
看头/看尾 | tail -f 实时跟踪日志,调试神器 |
grep |
文本搜索 | -i 忽略大小写,-v 反向匹配,-E 正则 |
wc |
统计行数/字数 | wc -l 看日志有多少行 |
tail -f 加 grep 组合。开两个终端,一个看实时流,一个筛关键词。效率翻倍。
2.1.2 权限与进程管理
日志文件经常有权限问题。你写了个脚本,一跑发现 Permission denied,那叫一个憋屈。
chmod +x script.py—— 给脚本加执行权限。我经常忘,后来养成了写完脚本顺手chmod +x的习惯。chown user:group file—— 改文件所有者。部署日志采集 agent 时经常用到。ps aux | grep python—— 看 Python 进程有没有在跑。排查脚本是否卡死时必用。kill -9 PID—— 强制杀进程。嗯,慎用,但有时候真管用。
kill -9 是最后手段。它会直接干掉进程,不给任何清理机会。我曾经在生产环境上误杀了一个日志采集进程,导致丢了几分钟数据……从那以后,我都是先 kill -15 试试。
2.1.3 文本处理三剑客
日志分析,说白了就是文本处理。这三个工具,你越用越觉得香。
- grep:搜索。比如
grep "ERROR" app.log,一秒找出所有错误行。 - awk:按列处理。比如
awk '{print $1, $4}',只取时间戳和 IP。 - sed:替换与编辑。比如
sed 's/old/new/g',批量替换日志中的敏感信息。
举个例子,你想统计日志里每种错误级别出现了多少次:
grep -oP '\[(INFO|WARN|ERROR|DEBUG)\]' app.log | sort | uniq -c | sort -rn
这一行命令,就能给你一张错误分布表。我在一次线上故障排查中,就是用这行命令,30 秒定位到是某个模块疯狂刷 WARN 导致磁盘写满。
2.2 Python3 环境安装
好,命令熟悉了,接下来装 Python。现在都 2025 年了,别再用 Python 2 了。我建议统一用 Python 3.8+。
2.2.1 检查系统是否已安装
先看看系统里有没有:
python3 --version
# 或者
python --version
如果输出类似 Python 3.9.7,那就省事了。如果没装,或者版本太低,咱们手动装。
2.2.2 在 Ubuntu/Debian 上安装
sudo apt update
sudo apt install python3 python3-pip python3-venv -y
这三行,一次搞定 Python3、pip 和虚拟环境模块。我建议你一次性装全,省得后面缺东西。
2.2.3 在 CentOS/RHEL 上安装
sudo yum install -y epel-release
sudo yum install -y python3 python3-pip
CentOS 默认源里的 Python 版本可能比较老。如果你需要最新版,可以考虑用源码编译,或者加个 deadsnakes PPA(Ubuntu)或 IUS 仓库(CentOS)。
2.2.4 验证安装
python3 --version
pip3 --version
看到版本号输出,就说明装好了。
2.3 pip 与虚拟环境配置
Python 的包管理,核心就两个东西:pip 和 虚拟环境。我见过太多人直接在系统全局装包,结果项目一多,依赖全乱套了。
2.3.1 pip 基础用法
pip 是 Python 的包管理器。说白了,就是帮你下载、安装、管理第三方库的工具。
| 命令 | 说明 |
|---|---|
pip install 包名 |
安装包 |
pip install 包名==版本号 |
安装指定版本 |
pip list |
列出已安装的包 |
pip freeze |
输出当前环境的包清单(常用于生成 requirements.txt) |
pip uninstall 包名 |
卸载包 |
举个例子,咱们后面要用 pandas 和 matplotlib 做日志数据分析和可视化:
pip install pandas matplotlib
这样就把两个库装到当前环境了。但注意,如果你没激活虚拟环境,它会装到系统全局。我不推荐这么做。
2.3.2 虚拟环境:为什么需要它?
你想想看,你同时做两个项目:一个用 Django 3.2,一个用 Django 4.0。如果都装在系统全局,肯定冲突。虚拟环境就是给每个项目一个独立的 Python 解释器和包目录,互不干扰。
我个人的习惯是:每个项目,一个虚拟环境。哪怕只是个几十行的小脚本,我也建个虚拟环境。习惯了就不觉得麻烦。
2.3.3 创建与使用虚拟环境
Python 3.3+ 自带 venv 模块,不需要额外安装。
# 创建虚拟环境(在项目目录下执行)
python3 -m venv venv
# 激活虚拟环境(Linux/Mac)
source venv/bin/activate
# 激活虚拟环境(Windows)
venv\Scripts\activate
# 退出虚拟环境
deactivate
激活后,你会发现终端前面多了个 (venv) 前缀。这时候你再 pip install,所有包都会装到这个虚拟环境里,不会污染系统。
1.
mkdir project_name && cd project_name2.
python3 -m venv venv3.
source venv/bin/activate4.
pip install 需要的库5.
pip freeze > requirements.txt这样,换台机器,只要
pip install -r requirements.txt,环境就一模一样。
2.3.4 使用 requirements.txt 管理依赖
这是团队协作和部署时的标准做法。把你的依赖写进文件,别人一装就好。
# 生成 requirements.txt
pip freeze > requirements.txt
# 从 requirements.txt 安装
pip install -r requirements.txt
文件内容大概长这样:
pandas==1.5.3
matplotlib==3.7.1
requests==2.28.2
版本号锁死,避免「在我机器上能跑」的尴尬。
pip freeze 的输出直接扔进生产环境。它会把所有依赖(包括依赖的依赖)都列出来。建议手动整理,只保留顶层依赖。比如你用了 pandas,它底层依赖 numpy,你只需要写 pandas,pip 会自动装 numpy。
2.4 本章知识体系总览
下面这张图,把咱们这一章的核心逻辑串起来了。你可以把它当个地图,后面忘了哪个环节,回来瞄一眼就行。
嗯,环境准备这块,咱们就聊到这儿。你跟着把 Linux 命令过一遍,Python3 装好,虚拟环境配起来,后面写代码、跑脚本就顺了。别急,慢慢来,每一步都踩实了,后面才能跑得快。