☰
Python开发者必备的30个Linux命令全解析
2026/11/4 18:56:33 网站建设 项目流程

1. Python开发者必备的Linux命令全解析

作为一名Python开发者,掌握Linux命令是提升开发效率的必备技能。无论是服务器部署、日志分析还是日常开发调试,Linux命令行都能让我们事半功倍。本文将分享我在多年Python开发中积累的最实用Linux命令集,涵盖从基础操作到高级技巧的完整知识体系。

2. 基础文件操作命令

2.1 文件与目录管理

ls命令是使用频率最高的基础命令之一。我习惯使用ls -alh组合参数:

  • -a显示隐藏文件
  • -l以长格式显示
  • -h以人类可读格式显示文件大小
# 查看当前目录详细内容 ls -alh # 按修改时间排序显示 ls -lt

find命令是文件搜索的瑞士军刀。在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.txt

3. 系统监控与进程管理

3.1 系统状态监控

top和htop是监控系统资源的首选:

# 基本系统监控 top # 更友好的交互式监控(需安装) htop

free和df查看内存和磁盘使用情况:

# 查看内存使用(-h人类可读格式) free -h # 查看磁盘空间 df -h

3.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 8000

ss是更现代的替代方案:

# 显示所有TCP连接 ss -tulnp

4.2 网络测试工具

curl是HTTP请求测试的瑞士军刀:

# 简单GET请求 curl http://example.com # 带Header的POST请求 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://api.example.com

telnet测试端口连通性:

# 测试Redis服务是否可达 telnet redis-host 6379

5. 开发调试实用命令

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/activate

5.2 调试与分析工具

strace跟踪系统调用:

# 跟踪Python程序的系统调用 strace -f python script.py

time测量命令执行时间:

# 测量脚本执行时间 time python script.py

6. 高级技巧与组合命令

6.1 命令组合与管道

统计代码行数:

# 统计项目Python代码总行数 find . -name "*.py" | xargs wc -l

批量重命名文件:

# 将所有.txt文件改为.md for f in *.txt; do mv "$f" "${f%.txt}.md"; done

6.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 -nr

7. 安全与权限管理

7.1 文件权限控制

chmod修改文件权限:

# 设置Python脚本可执行 chmod +x script.py # 递归修改目录权限 chmod -R 755 /path/to/directory

chown修改文件所有者:

# 修改文件所有者 chown user:group file.txt # 递归修改目录所有者 chown -R user:group /path/to/directory

7.2 SSH相关技巧

SSH密钥对管理:

# 生成SSH密钥对 ssh-keygen -t rsa -b 4096 # 复制公钥到远程服务器 ssh-copy-id user@remote-host

SSH端口转发:

# 本地端口转发(访问本地8080即访问远程80) ssh -L 8080:localhost:80 user@remote-host # 远程端口转发 ssh -R 9090:localhost:80 user@remote-host

8. 实用工具与替代命令

8.1 现代替代工具

bat替代cat:

# 语法高亮显示文件内容(需安装bat) bat config.py

exa替代ls:

# 更友好的目录列表(需安装exa) exa -l --git --icons

8.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 ls

9. 性能优化与系统调优

9.1 性能监控命令

vmstat查看系统整体性能:

# 每2秒刷新一次,共显示5次 vmstat 2 5

iostat监控磁盘IO:

# 监控磁盘IO使用情况 iostat -dx 2

9.2 系统调优技巧

ulimit查看和设置系统限制:

# 查看当前限制 ulimit -a # 修改最大文件打开数 ulimit -n 65536

sysctl查看和修改内核参数:

# 查看所有参数 sysctl -a # 临时修改参数 sysctl -w net.core.somaxconn=1024

10. 自动化与脚本编写

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/syslog

11. 容器化环境命令

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 down

12. 终端效率提升技巧

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/directory

13.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.log

14.2 sed流编辑器

文本替换与处理:

# 替换文件中的文本 sed -i 's/old_text/new_text/g' file.txt # 删除空白行 sed '/^$/d' file.txt # 提取特定行范围 sed -n '10,20p' file.txt

14.3 xargs并行处理

批量操作文件:

# 批量压缩日志文件 find /var/log -name "*.log" | xargs -P 4 -I {} gzip {} # 批量修改文件权限 find . -name "*.sh" | xargs chmod +x

15. 系统信息查询

15.1 硬件信息查询

查看CPU和内存信息:

# CPU信息 lscpu # 内存信息 cat /proc/meminfo # 硬件概览 lshw -short

15.2 系统版本信息

获取系统版本:

# Linux发行版信息 cat /etc/*release # 内核版本 uname -a # 系统运行时间 uptime

16. 压缩与归档技巧

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.xz

16.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 olduser

17.2 用户组管理

组操作命令:

# 创建新组 sudo groupadd newgroup # 将用户加入组 sudo usermod -aG groupname username # 查看用户所属组 groups username

18. 环境变量与路径管理

18.1 环境变量操作

查看和设置环境变量:

# 查看所有环境变量 env # 查看特定变量 echo $PATH # 临时设置变量 export PYTHONPATH=/custom/path # 永久设置(添加到~/.bashrc) echo 'export PYTHONPATH=/custom/path' >> ~/.bashrc

18.2 PATH管理

修改PATH环境变量:

# 添加自定义路径到PATH export PATH=$PATH:/custom/bin # 查找命令所在路径 which python whereis python

19. 系统服务管理

19.1 systemd服务管理

服务控制命令:

# 启动服务 sudo systemctl start service_name # 停止服务 sudo systemctl stop service_name # 查看服务状态 sudo systemctl status service_name # 设置开机启动 sudo systemctl enable service_name

19.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_name

21. 性能分析与调试

21.1 系统级性能分析

perf性能分析工具:

# 记录性能数据 perf record -g python script.py # 生成报告 perf report

strace系统调用跟踪:

# 跟踪Python程序系统调用 strace -f -o trace.log python script.py

21.2 Python专用调试

py-spy实时Python分析:

# 采样运行中Python进程(需安装py-spy) py-spy top --pid 1234 # 生成火焰图 py-spy record -o profile.svg --pid 1234

22. 安全加固命令

22.1 防火墙管理

ufw防火墙配置:

# 允许SSH连接 sudo ufw allow ssh # 允许特定端口 sudo ufw allow 8000/tcp # 启用防火墙 sudo ufw enable

22.2 安全扫描工具

lynis系统安全审计:

# 运行安全扫描(需安装lynis) sudo lynis audit system

chkrootkitrootkit检查:

# 检查rootkit(需安装chkrootkit) sudo chkrootkit

23. 磁盘管理命令

23.1 磁盘分区管理

fdisk分区工具:

# 列出磁盘分区 sudo fdisk -l # 交互式分区 sudo fdisk /dev/sdb

mkfs创建文件系统:

# 创建ext4文件系统 sudo mkfs.ext4 /dev/sdb1

23.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/fstab

24. 包管理命令

24.1 apt/dnf/yum包管理

Debian/Ubuntu系统:

# 更新软件包列表 sudo apt update # 升级已安装包 sudo apt upgrade # 搜索软件包 apt search package_name

RHEL/CentOS系统:

# 更新系统 sudo dnf update # 安装软件包 sudo dnf install package_name

24.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 -U

25. 版本控制命令

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_name

25.2 Git高级技巧

分支管理:

# 创建新分支 git checkout -b feature_branch # 合并分支 git merge feature_branch # 变基操作 git rebase main

历史修改:

# 修改最后一次提交 git commit --amend # 交互式变基 git rebase -i HEAD~3

26. 正则表达式实战

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.txt

26.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.html

27. 时间与日期处理

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 # 查看待执行任务 atq

28. 文件比较与差异

28.1 diff文件比较

比较文件差异:

# 简单比较 diff file1.txt file2.txt # 并排显示差异 diff -y file1.txt file2.txt # 递归比较目录 diff -r dir1 dir2

28.2 vimdiff可视化比较

交互式比较:

# 使用vimdiff比较文件 vimdiff file1.py file2.py

29. 系统备份与恢复

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=progress

29.2 增量备份

rsync增量备份:

# 每日增量备份 rsync -avz --delete --link-dest=/backup/previous /source/ /backup/current

30. 终端自定义与美化

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'

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询