1. Debian与Ubuntu命令体系概述
作为Linux发行版中最具影响力的两个分支,Debian和Ubuntu在命令体系上既有传承又有差异。我使用这两个系统已超过十年,从早期的Debian 5到最新的Ubuntu 22.04,见证了它们命令体系的演进过程。
Debian作为"Linux发行版之母",其命令体系以稳定性和兼容性著称。在较老的版本中(如Debian 7之前),主要采用apt-get和apt-cache这套传统工具链。而Ubuntu基于Debian开发,早期完全继承了这套体系,但从16.04 LTS开始逐步推广更现代的apt命令。
重要提示:虽然
apt命令在语法上更简洁,但在编写自动化脚本时,仍建议使用apt-get以保证最大兼容性,特别是在需要支持旧版系统的场景下。
2. 系统管理核心命令对比
2.1 软件包管理
Debian传统方式:
# 更新软件源 sudo apt-get update # 安装软件包 sudo apt-get install package_name # 移除软件包(保留配置文件) sudo apt-get remove package_name # 完全卸载(包括配置) sudo apt-get purge package_name # 搜索软件包 apt-cache search keywordUbuntu推荐方式:
# 合并了update和upgrade sudo apt update && sudo apt upgrade # 更简洁的安装命令 sudo apt install package_name # 智能移除(自动处理依赖) sudo apt autoremove实际经验:
- 在Debian 10+和Ubuntu 18.04+中,两种方式都可以使用
apt命令会显示进度条和彩色输出,交互体验更好- 生产环境中建议固定使用一种风格以保持一致性
2.2 系统服务管理
传统System V风格(Debian 7/Ubuntu 14.04之前):
# 启动服务 sudo service service_name start # 查看状态 sudo service service_name status现代systemd方式(通用):
# 更强大的服务管理 sudo systemctl start service_name # 设置开机启动 sudo systemctl enable service_name # 查看详细日志 sudo journalctl -u service_name -f注意事项:
- 新旧命令可以混用,但建议统一使用systemd
- 使用
systemctl status时,绿色"active"表示运行正常 - 按q键可以退出journalctl的日志查看界面
3. 文件与目录操作精要
3.1 基础文件操作
# 创建多层目录(比mkdir更强大) mkdir -p path/to/directory # 复制并保留属性 cp -a source destination # 安全删除(需要确认) rm -i filename # 递归删除目录 rm -rf directory_name危险警告:
rm -rf命令极其危险,特别是在root权限下。建议先执行ls确认路径,再执行删除。
3.2 文件查找与处理
快速查找:
# 按名称查找(忽略大小写) find /path -iname "*.conf" # 查找并删除(谨慎使用) find /tmp -type f -mtime +7 -delete内容搜索:
# 递归搜索文本 grep -r "search_term" /path # 显示前后3行 grep -A3 -B3 "keyword" file.txt # 统计出现次数 grep -o "pattern" file.txt | wc -l实用技巧:
- 结合xargs处理大量文件:
find ... | xargs grep ... - 使用
-exec参数时,用{}表示文件名,\;结束命令 grep -v可以反向匹配,排除特定内容
4. 网络配置与诊断
4.1 基础网络命令
# 显示所有接口(比ifconfig更现代) ip addr show # 测试连通性(指定次数) ping -c 4 example.com # 显示路由表 ip route # 查看开放端口 ss -tulnp4.2 高级网络工具
curl高级用法:
# 下载文件并显示进度 curl -# -O http://example.com/file # 提交表单数据 curl -X POST -d "key=value" http://api # 使用代理(仅示例基础语法) curl --proxy http://proxy:port URL网络诊断三板斧:
# 检查DNS解析 dig example.com +short # 追踪路由路径 traceroute example.com # 测试端口连通性 telnet example.com 80排错经验:
- 连接问题先检查
ping,再检查telnet到具体端口 - 使用
mtr替代traceroute可以获得更稳定的结果 nc(netcat)是测试网络服务的瑞士军刀
5. 用户与权限管理
5.1 用户账户操作
# 添加用户并创建家目录 sudo useradd -m username # 设置密码(交互式) sudo passwd username # 修改用户属性 sudo usermod -aG groupname username5.2 权限控制进阶
ACL权限设置:
# 查看ACL权限 getfacl /path # 设置ACL权限 setfacl -m u:username:rwx /path特殊权限标志:
# 设置SUID(以文件所有者身份执行) chmod u+s /path/to/binary # 设置粘滞位(目录下只有所有者能删除) chmod +t /shared/directory安全建议:
- 避免随意设置SUID,特别是对脚本文件
- 使用
visudo编辑sudoers文件,它有语法检查 - 新建文件默认权限由umask控制,通常设置为022
6. 系统监控与性能分析
6.1 实时监控命令
# 动态查看进程(按CPU排序) top -o %CPU # 更现代的替代品 htop # 磁盘I/O监控 iotop # 网络流量监控 nload6.2 性能分析工具
系统快照:
# 综合系统状态(推荐) sudo dstat -cdlmnpsy # 内存使用详情 free -h # 磁盘空间(人类可读) df -h进程分析:
# 查看进程树 pstree -p # 查找占用CPU高的进程 ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head优化经验:
- 使用
vmstat 1查看系统瓶颈(1表示1秒刷新) sar命令需要安装sysstat包,但提供历史数据- 高负载时先用
top定位问题,再用专业工具深入分析
7. 文本处理三剑客
7.1 grep进阶技巧
# 显示不匹配的行(反转匹配) grep -v "pattern" file # 只显示匹配的部分 grep -o "pattern" file # 使用Perl正则(更强大) grep -P "\d{3}-\d{4}" file7.2 sed流编辑器
# 替换文本(全局) sed 's/old/new/g' file # 删除空白行 sed '/^$/d' file # 原地编辑(备份原文件) sed -i.bak 's/old/new/' file7.3 awk数据处理
# 打印特定列 awk '{print $1,$3}' file # 条件过滤 awk '$3 > 100 {print $0}' file # 计算总和 awk '{sum+=$1} END {print sum}' file组合使用示例:
# 统计日志中各IP出现的次数 grep -oP '\d+\.\d+\.\d+\.\d+' access.log | sort | uniq -c | sort -nr8. 实用小技巧合集
8.1 终端增强
# 历史命令搜索 Ctrl+r # 清屏(保留回滚) clear # 快速跳转目录 pushd /path popd8.2 批量操作
# 并行执行(需要parallel包) ls *.jpg | parallel -j 4 convert {} -resize 800x {.}_resized.jpg # 批量重命名 rename 's/old/new/' *.txt8.3 时间管理
# 计算命令执行时间 time ls -R # 定时任务语法检查 crontab -e个人推荐:
- 使用
tmux或screen管理持久会话 zsh配合oh-my-zsh可以极大提升终端体验- 对于复杂任务,先写脚本再执行比直接输入长命令更可靠
9. 系统维护与故障排查
9.1 日志分析
# 查看系统日志 journalctl -xe # 跟踪最新日志 tail -f /var/log/syslog # 按时间过滤 journalctl --since "2023-01-01" --until "2023-01-02"9.2 系统救援
# 进入单用户模式(GRUB界面按e编辑) systemd.unit=rescue.target # 检查文件系统 fsck /dev/sda1 # 修复GRUB引导 grub-install /dev/sda救命技巧:
- 使用
live CD可以修复大多数系统问题 - 重要配置文件修改前先备份
strace可以跟踪进程的系统调用,定位卡死问题
10. 开发环境配置
10.1 编译工具链
# 安装开发基础包 sudo apt install build-essential # 查看gcc版本 gcc --version # 编译简单程序 gcc -o hello hello.c10.2 版本控制
# 初始化仓库 git init # 查看变更 git status # 回退到特定提交 git reset --hard commit_hash10.3 容器化工具
# 安装Docker sudo apt install docker.io # 管理容器 docker ps -a # 构建镜像 docker build -t myimage .开发建议:
- 使用
virtualenv管理Python环境 make工具可以简化编译流程- 学习基本的
gdb调试命令很有必要