1. Python开发者必备的Linux命令全解析
作为一名Python开发者,掌握Linux命令是提升开发效率的必备技能。无论是服务器部署、日志分析还是日常开发调试,Linux命令行都能让我们事半功倍。本文将分享我在多年Python开发中积累的最实用Linux命令集,涵盖从基础操作到高级技巧的完整知识体系。
2. 基础文件操作命令
2.1 文件与目录管理
ls命令是使用频率最高的基础命令之一。我习惯使用ls -alh组合参数:
-a显示隐藏文件-l以长格式显示-h以人类可读格式显示文件大小
# 查看当前目录详细内容 ls -alh # 按修改时间排序显示 ls -ltfind命令是文件搜索的瑞士军刀。在Python项目中查找所有.py文件:
# 查找当前目录及子目录下所有.py文件 find . -name "*.py" # 查找并删除所有.pyc文件 find . -name "*.pyc" -exec rm -f {} \;2.2 文件内容查看与处理
grep是文本搜索利器,结合正则表达式能实现复杂搜索:
# 在Python文件中搜索特定类定义 grep -n "class User" *.py # 递归搜索目录,忽略大小写 grep -rni "sqlalchemy" /path/to/project/tail和head是查看日志的必备工具:
# 实时查看日志更新 tail -f /var/log/app.log # 查看文件前10行 head -n 10 requirements.txt3. 系统监控与进程管理
3.1 系统状态监控
top和htop是监控系统资源的首选:
# 基本系统监控 top # 更友好的交互式监控(需安装) htopfree和df查看内存和磁盘使用情况:
# 查看内存使用(-h人类可读格式) free -h # 查看磁盘空间 df -h3.2 进程管理技巧
ps命令配合grep查找特定进程:
# 查找Python相关进程 ps aux | grep python # 显示进程树结构 pstree -p杀死进程的正确姿势:
# 先尝试正常终止 kill -15 PID # 强制终止 kill -9 PID # 批量杀死Python进程 pkill -f "python.*script_name"4. 网络相关命令
4.1 网络状态检查
netstat查看网络连接状态:
# 查看所有TCP连接 netstat -tulnp # 查看特定端口占用 netstat -tulnp | grep 8000ss是更现代的替代方案:
# 显示所有TCP连接 ss -tulnp4.2 网络测试工具
curl是HTTP请求测试的瑞士军刀:
# 简单GET请求 curl http://example.com # 带Header的POST请求 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://api.example.comtelnet测试端口连通性:
# 测试Redis服务是否可达 telnet redis-host 63795. 开发调试实用命令
5.1 Python开发专用命令
查看Python模块安装位置:
# 查看模块安装路径 python -c "import sqlalchemy; print(sqlalchemy.__file__)" # 检查模块版本 python -c "import sqlalchemy; print(sqlalchemy.__version__)"虚拟环境管理:
# 创建虚拟环境 python -m venv myenv # 激活虚拟环境 source myenv/bin/activate5.2 调试与分析工具
strace跟踪系统调用:
# 跟踪Python程序的系统调用 strace -f python script.pytime测量命令执行时间:
# 测量脚本执行时间 time python script.py6. 高级技巧与组合命令
6.1 命令组合与管道
统计代码行数:
# 统计项目Python代码总行数 find . -name "*.py" | xargs wc -l批量重命名文件:
# 将所有.txt文件改为.md for f in *.txt; do mv "$f" "${f%.txt}.md"; done6.2 日志分析实战
分析Nginx访问日志:
# 统计访问量前10的IP awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10 # 统计HTTP状态码分布 awk '{print $9}' access.log | sort | uniq -c | sort -nr7. 安全与权限管理
7.1 文件权限控制
chmod修改文件权限:
# 设置Python脚本可执行 chmod +x script.py # 递归修改目录权限 chmod -R 755 /path/to/directorychown修改文件所有者:
# 修改文件所有者 chown user:group file.txt # 递归修改目录所有者 chown -R user:group /path/to/directory7.2 SSH相关技巧
SSH密钥对管理:
# 生成SSH密钥对 ssh-keygen -t rsa -b 4096 # 复制公钥到远程服务器 ssh-copy-id user@remote-hostSSH端口转发:
# 本地端口转发(访问本地8080即访问远程80) ssh -L 8080:localhost:80 user@remote-host # 远程端口转发 ssh -R 9090:localhost:80 user@remote-host8. 实用工具与替代命令
8.1 现代替代工具
bat替代cat:
# 语法高亮显示文件内容(需安装bat) bat config.pyexa替代ls:
# 更友好的目录列表(需安装exa) exa -l --git --icons8.2 开发辅助工具
jq处理JSON数据:
# 格式化JSON输出 curl http://api.example.com | jq . # 提取特定字段 curl http://api.example.com | jq '.data[].name'tmux终端复用:
# 新建会话 tmux new -s session_name # 分离会话 Ctrl+b d # 列出会话 tmux ls9. 性能优化与系统调优
9.1 性能监控命令
vmstat查看系统整体性能:
# 每2秒刷新一次,共显示5次 vmstat 2 5iostat监控磁盘IO:
# 监控磁盘IO使用情况 iostat -dx 29.2 系统调优技巧
ulimit查看和设置系统限制:
# 查看当前限制 ulimit -a # 修改最大文件打开数 ulimit -n 65536sysctl查看和修改内核参数:
# 查看所有参数 sysctl -a # 临时修改参数 sysctl -w net.core.somaxconn=102410. 自动化与脚本编写
10.1 Shell脚本基础
简单的备份脚本示例:
#!/bin/bash # 备份Python项目 BACKUP_DIR="/backups/projects" PROJECT_DIR="/home/user/project" DATE=$(date +%Y%m%d) tar -czf "$BACKUP_DIR/project_$DATE.tar.gz" "$PROJECT_DIR" echo "Backup completed: project_$DATE.tar.gz"10.2 定时任务管理
crontab设置定时任务:
# 编辑当前用户的crontab crontab -e # 每天凌晨3点执行备份 0 3 * * * /path/to/backup.sh查看cron日志:
# Ubuntu系统查看cron日志 grep CRON /var/log/syslog11. 容器化环境命令
11.1 Docker基础命令
管理Docker容器:
# 运行Python容器 docker run -it --rm python:3.9 bash # 查看运行中的容器 docker ps # 构建Docker镜像 docker build -t myapp .11.2 Docker Compose技巧
常用compose命令:
# 启动服务 docker-compose up -d # 查看服务日志 docker-compose logs -f # 停止并删除容器 docker-compose down12. 终端效率提升技巧
12.1 命令别名设置
在~/.bashrc中添加常用别名:
# Python开发常用别名 alias pyclean="find . -name '*.pyc' -delete" alias venv="python -m venv venv && source venv/bin/activate" alias pipup="pip list --outdated | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U"12.2 历史命令优化
增强命令历史记录:
# 在~/.bashrc中添加 export HISTSIZE=10000 export HISTFILESIZE=20000 export HISTTIMEFORMAT="%F %T " shopt -s histappend快速搜索历史命令:
# 使用Ctrl+r搜索历史 (reverse-i-search)`':13. 文件传输与同步
13.1 SCP远程文件传输
基本文件传输��作:
# 上传文件到远程服务器 scp local_file user@remote_host:/remote/directory # 下载远程文件 scp user@remote_host:/remote/file local_directory # 递归传输整个目录 scp -r local_dir user@remote_host:/remote/directory13.2 Rsync高效同步
增量同步文件:
# 本地目录同步 rsync -avz /source/directory /destination/ # 远程同步 rsync -avz -e ssh /local/dir user@remote_host:/remote/dir # 删除目标多余文件 rsync -avz --delete /source/ /destination/14. 文本处理三剑客
14.1 awk高级用法
提取和处理数据:
# 提取CSV文件特定列 awk -F ',' '{print $1,$3}' data.csv # 统计日志中不同状态码数量 awk '{count[$9]++} END {for(code in count) print code, count[code]}' access.log14.2 sed流编辑器
文本替换与处理:
# 替换文件中的文本 sed -i 's/old_text/new_text/g' file.txt # 删除空白行 sed '/^$/d' file.txt # 提取特定行范围 sed -n '10,20p' file.txt14.3 xargs并行处理
批量操作文件:
# 批量压缩日志文件 find /var/log -name "*.log" | xargs -P 4 -I {} gzip {} # 批量修改文件权限 find . -name "*.sh" | xargs chmod +x15. 系统信息查询
15.1 硬件信息查询
查看CPU和内存信息:
# CPU信息 lscpu # 内存信息 cat /proc/meminfo # 硬件概览 lshw -short15.2 系统版本信息
获取系统版本:
# Linux发行版信息 cat /etc/*release # 内核版本 uname -a # 系统运行时间 uptime16. 压缩与归档技巧
16.1 常见压缩命令
不同格式的压缩解压:
# tar.gz格式 tar -czf archive.tar.gz /path/to/dir tar -xzf archive.tar.gz # zip格式 zip -r archive.zip /path/to/dir unzip archive.zip # 高压缩率xz格式 tar -cJf archive.tar.xz /path/to/dir tar -xJf archive.tar.xz16.2 分卷压缩
大文件分卷压缩:
# 分卷压缩(每卷100M) tar -czvf - /path/to/dir | split -b 100M - archive.tar.gz. # 合并解压 cat archive.tar.gz.* | tar -xzvf -17. 用户与权限管理
17.1 用户管理命令
用户账户操作:
# 创建新用户 sudo useradd -m newuser # 设置密码 sudo passwd newuser # 删除用户 sudo userdel -r olduser17.2 用户组管理
组操作命令:
# 创建新组 sudo groupadd newgroup # 将用户加入组 sudo usermod -aG groupname username # 查看用户所属组 groups username18. 环境变量与路径管理
18.1 环境变量操作
查看和设置环境变量:
# 查看所有环境变量 env # 查看特定变量 echo $PATH # 临时设置变量 export PYTHONPATH=/custom/path # 永久设置(添加到~/.bashrc) echo 'export PYTHONPATH=/custom/path' >> ~/.bashrc18.2 PATH管理
修改PATH环境变量:
# 添加自定义路径到PATH export PATH=$PATH:/custom/bin # 查找命令所在路径 which python whereis python19. 系统服务管理
19.1 systemd服务管理
服务控制命令:
# 启动服务 sudo systemctl start service_name # 停止服务 sudo systemctl stop service_name # 查看服务状态 sudo systemctl status service_name # 设置开机启动 sudo systemctl enable service_name19.2 日志查看
journalctl查看系统日志:
# 查看服务日志 sudo journalctl -u service_name # 实时查看最新日志 sudo journalctl -f # 按时间筛选 sudo journalctl --since "2023-01-01" --until "2023-01-02"20. 终端复用与工作区管理
20.1 tmux高级用法
tmux会话管理:
# 新建命名会话 tmux new -s session_name # 分离会话 Ctrl+b d # 列出会话 tmux ls # 附加到会话 tmux attach -t session_name # 窗格管理 Ctrl+b % # 垂直分割 Ctrl+b " # 水平分割 Ctrl+b 方向键 # 切换窗格20.2 screen替代方案
screen基本命令:
# 新建screen会话 screen -S session_name # 分离会话 Ctrl+a d # 列出会话 screen -ls # 恢复会话 screen -r session_name21. 性能分析与调试
21.1 系统级性能分析
perf性能分析工具:
# 记录性能数据 perf record -g python script.py # 生成报告 perf reportstrace系统调用跟踪:
# 跟踪Python程序系统调用 strace -f -o trace.log python script.py21.2 Python专用调试
py-spy实时Python分析:
# 采样运行中Python进程(需安装py-spy) py-spy top --pid 1234 # 生成火焰图 py-spy record -o profile.svg --pid 123422. 安全加固命令
22.1 防火墙管理
ufw防火墙配置:
# 允许SSH连接 sudo ufw allow ssh # 允许特定端口 sudo ufw allow 8000/tcp # 启用防火墙 sudo ufw enable22.2 安全扫描工具
lynis系统安全审计:
# 运行安全扫描(需安装lynis) sudo lynis audit systemchkrootkitrootkit检查:
# 检查rootkit(需安装chkrootkit) sudo chkrootkit23. 磁盘管理命令
23.1 磁盘分区管理
fdisk分区工具:
# 列出磁盘分区 sudo fdisk -l # 交互式分区 sudo fdisk /dev/sdbmkfs创建文件系统:
# 创建ext4文件系统 sudo mkfs.ext4 /dev/sdb123.2 磁盘挂载
手动挂载分区:
# 创建挂载点 sudo mkdir /mnt/data # 挂载分区 sudo mount /dev/sdb1 /mnt/data # 自动挂载(添加到/etc/fstab) echo '/dev/sdb1 /mnt/data ext4 defaults 0 0' | sudo tee -a /etc/fstab24. 包管理命令
24.1 apt/dnf/yum包管理
Debian/Ubuntu系统:
# 更新软件包列表 sudo apt update # 升级已安装包 sudo apt upgrade # 搜索软件包 apt search package_nameRHEL/CentOS系统:
# 更新系统 sudo dnf update # 安装软件包 sudo dnf install package_name24.2 pip包管理
Python包管理技巧:
# 安装包 pip install package_name # 导出环境 pip freeze > requirements.txt # 从文件安装 pip install -r requirements.txt # 升级所有包 pip list --outdated | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U25. 版本控制命令
25.1 Git基本操作
日常Git工作流:
# 克隆仓库 git clone https://github.com/user/repo.git # 查看状态 git status # 添加更改 git add . # 提交更改 git commit -m "commit message" # 推送更改 git push origin branch_name25.2 Git高级技巧
分支管理:
# 创建新分支 git checkout -b feature_branch # 合并分支 git merge feature_branch # 变基操作 git rebase main历史修改:
# 修改最后一次提交 git commit --amend # 交互式变基 git rebase -i HEAD~326. 正则表达式实战
26.1 grep正则搜索
复杂模式匹配:
# 匹配IP地址 grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' file.txt # 匹配邮箱地址 grep -Eo '\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b' file.txt26.2 sed正则替换
高级文本替换:
# 替换日期格式(MM/DD/YYYY -> YYYY-MM-DD) sed -E 's#([0-9]{2})/([0-9]{2})/([0-9]{4})#\3-\1-\2#g' dates.txt # 删除HTML标签 sed 's/<[^>]*>//g' file.html27. 时间与日期处理
27.1 日期格式化
date命令使用:
# 当前日期时间 date +"%Y-%m-%d %H:%M:%S" # 时间戳转换 date -d @1630000000 # 计算时间差 start=$(date +%s) # 执行命令... end=$(date +%s) echo "耗时: $((end-start))秒"27.2 定时任务
at命令一次性任务:
# 一小时后执行命令 echo "python script.py" | at now +1 hour # 查看待执行任务 atq28. 文件比较与差异
28.1 diff文件比较
比较文件差异:
# 简单比较 diff file1.txt file2.txt # 并排显示差异 diff -y file1.txt file2.txt # 递归比较目录 diff -r dir1 dir228.2 vimdiff可视化比较
交互式比较:
# 使用vimdiff比较文件 vimdiff file1.py file2.py29. 系统备份与恢复
29.1 全盘备份
dd命令磁盘克隆:
# 备份整个磁盘(谨慎使用) sudo dd if=/dev/sda of=/backup/sda.img bs=4M status=progress # 恢复备份 sudo dd if=/backup/sda.img of=/dev/sda bs=4M status=progress29.2 增量备份
rsync增量备份:
# 每日增量备份 rsync -avz --delete --link-dest=/backup/previous /source/ /backup/current30. 终端自定义与美化
30.1 PS1提示符定制
自定义bash提示符:
# 在~/.bashrc中添加 export PS1='\[\e[32m\]\u@\h \[\e[34m\]\w \[\e[31m\]\$ \[\e[0m\]' # 显示Git分支(需安装git-prompt) source /usr/share/git-core/contrib/completion/git-prompt.sh export PS1='\[\e[32m\]\u@\h \[\e[34m\]\w\[\e[33m\]$(__git_ps1 " (%s)")\[\e[31m\]\$ \[\e[0m\]'30.2 终端主题配置
修改终端颜色方案:
# 设置ls颜色(添加到~/.bashrc) export LS_COLORS='di=1;35:ln=36:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=30;41:sg=30;46:tw=30;42:ow=30;43' alias ls='ls --color=auto'