Ubuntu命令行操作指南:从基础到高级技巧 1. Ubuntu命令操作基础认知作为Linux发行版中最受欢迎的桌面系统之一Ubuntu的命令行操作是每位用户必须掌握的技能。与Windows系统不同Ubuntu中大约85%的系统管理任务都是通过命令行完成的。这主要因为命令行操作更高效一个简单的命令可以替代多次图形界面点击远程管理服务器时命令行是唯一的选择许多高级系统功能没有图形界面只能通过命令实现初次接触Ubuntu命令时建议先了解几个基本概念命令通常由命令名 选项 参数组成例如ls -l /home选项通常以-或--开头用于修改命令行为参数是命令操作的对象如文件名、目录名等重要提示Ubuntu中命令区分大小写LS和ls是完全不同的命令。大多数基础命令都是小写的。2. 文件与目录管理命令精要2.1 基础导航与查看命令ls命令是使用频率最高的命令之一但它的选项组合能发挥更大威力ls -alh --colorauto /path-a显示所有文件(包括隐藏文件)-l长格式显示详细信息-h人类可读的文件大小单位--colorauto启用颜色区分文件类型cd命令的进阶用法cd - # 返回上一个工作目录 cd ~user # 切换到指定用户的家目录2.2 文件操作深度技巧cp命令的保留属性选项cp -a source dest # 等同于-dpr选项组合保留所有属性-d保留符号链接-p保留文件属性-r递归复制目录rm命令的安全用法rm -I *.log # 删除多个文件前提示确认-i每个文件删除前都询问-I删除超过3个文件或递归删除时提示一次2.3 查找命令的实战应用find命令的高级搜索示例find /var/log -name *.log -mtime 30 -size 10M -exec ls -lh {} \;这个命令组合可以找出/var/log目录下文件名以.log结尾修改时间超过30天大小超过10MB 的所有文件并显示详细信息3. 系统管理与监控命令详解3.1 进程管理核心命令ps命令的常用组合ps aux --sort-%mem | head -10 # 显示内存占用最高的10个进程关键字段说明USER进程所有者%CPUCPU占用率%MEM内存占用率VSZ虚拟内存用量RSS实际内存用量top命令的交互操作按M按内存使用排序按P按CPU使用排序按1显示所有CPU核心的负载按k终止指定PID的进程3.2 硬件信息获取方法综合硬件信息查看lshw -short # 显示硬件设备简明列表 lshw -html report.html # 生成HTML格式的硬件报告磁盘I/O监控iostat -x 2 # 每2秒显示一次扩展磁盘I/O统计关键指标%util设备利用率await平均I/O响应时间svctm平均服务时间3.3 网络配置与诊断永久修改IP地址sudo nmcli con mod eth0 ipv4.addresses 192.168.1.100/24 sudo nmcli con mod eth0 ipv4.gateway 192.168.1.1 sudo nmcli con mod eth0 ipv4.dns 8.8.8.8 8.8.4.4 sudo nmcli con up eth0网络连通性测试组合ping -c 4 example.com # 基本连通性测试 traceroute example.com # 路径追踪 mtr -rw example.com # 实时网络质量监测4. 软件包管理高级技巧4.1 APT的进阶用法解决依赖问题的完整流程sudo apt --fix-broken install # 尝试修复损坏的包 sudo dpkg --configure -a # 配置所有未完成的安装 sudo apt clean # 清理下载的包文件 sudo apt update # 更新源信息查找软件包的实用命令apt-cache search ^python3 # 搜索以python3开头的包 apt-cache show package_name # 显示包的详细信息 apt-cache depends package_name # 查看包的依赖关系4.2 源码编译安装的规范流程以安装最新版Nginx为例# 安装编译依赖 sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev # 下载源码 wget http://nginx.org/download/nginx-1.21.6.tar.gz tar zxvf nginx-1.21.6.tar.gz cd nginx-1.21.6 # 配置编译选项 ./configure --prefix/usr/local/nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module # 编译安装 make -j$(nproc) # 使用所有CPU核心编译 sudo make install5. 系统维护与故障排查5.1 日志分析实用命令查看系统日志的几种方式journalctl -xe # 查看最近的系统日志 tail -f /var/log/syslog # 实时监控系统日志 grep -i error /var/log/*.log # 在所有日志中搜索错误信息日志轮转配置示例/etc/logrotate.d/custom/var/log/myapp/*.log { daily missingok rotate 30 compress delaycompress notifempty create 640 root adm sharedscripts postrotate /usr/bin/systemctl reload myapp /dev/null endscript }5.2 性能瓶颈诊断内存瓶颈检查free -h # 查看内存总量和使用情况 vmstat 1 5 # 查看内存交换情况CPU瓶颈检查mpstat -P ALL 1 # 查看每个CPU核心的使用率 pidstat 1 5 # 查看进程的CPU使用情况6. 实用命令组合与脚本6.1 常用命令组合示例批量重命名文件# 将所有.jpg文件改为前缀数字的形式 count1 for file in *.jpg; do mv $file vacation_$(printf %03d $count).jpg ((count)) done查找并处理大文件# 查找大于100MB的文件并显示详细信息 find / -type f -size 100M -exec ls -lh {} \ | sort -k5 -rh6.2 实用Shell脚本片段系统备份脚本框架#!/bin/bash BACKUP_DIR/backups DATE$(date %Y%m%d) TARGET_DIRS(/etc /home /var/www) mkdir -p $BACKUP_DIR/$DATE for dir in ${TARGET_DIRS[]}; do tar -czf $BACKUP_DIR/$DATE/$(basename $dir).tar.gz $dir done # 保留最近7天的备份 find $BACKUP_DIR -type d -mtime 7 -exec rm -rf {} \;7. 安全相关命令7.1 用户权限管理sudo权限精细控制示例/etc/sudoers# 允许develop组用户无需密码执行特定命令 %develop ALL(ALL) NOPASSWD: /usr/bin/apt update, /usr/bin/systemctl restart apache2 # 允许用户john管理用户账户 john ALL(root) /usr/sbin/adduser, /usr/sbin/deluser, /usr/sbin/usermod7.2 SSH安全加固SSH服务端安全配置/etc/ssh/sshd_configPort 2222 # 修改默认端口 PermitRootLogin no # 禁止root直接登录 MaxAuthTries 3 # 最大认证尝试次数 ClientAliveInterval 300 # 客户端活动检查间隔 ClientAliveCountMax 2 # 保持活动的最大数量 AllowUsers user1 user2 # 只允许特定用户登录8. 开发相关命令8.1 版本控制操作Git常用工作流示例# 克隆仓库 git clone https://github.com/user/repo.git cd repo # 创建新分支 git checkout -b feature-branch # 常规开发流程 git add . git commit -m 描述性提交信息 git push origin feature-branch # 合并到主分支 git checkout main git pull origin main git merge feature-branch git push origin main8.2 调试工具使用gdb基础调试流程gcc -g -o test test.c # 编译时加入调试信息 gdb ./test # 启动调试 # gdb常用命令 break main # 在main函数设置断点 run # 运行程序 next # 单步执行(不进入函数) step # 单步执行(进入函数) print var # 打印变量值 backtrace # 查看调用栈 quit # 退出gdb