Ubuntu常用指令大全:系统管理与开发必备

1. Ubuntu 常用指令概述

作为一名Linux系统管理员,我整理了这份Ubuntu常用指令大全。这些指令都是我日常工作中高频使用的,涵盖了系统管理、文件操作、网络配置等核心场景。不同于网上那些零散的指令列表,我会结合实际操作经验,告诉你每个指令背后的使用逻辑和常见坑点。

Ubuntu作为最流行的Linux发行版之一,无论是服务器运维还是开发环境搭建都离不开命令行操作。掌握这些基础指令,能让你在终端里游刃有余。下面这些指令适用于Ubuntu 18.04及以上版本,部分指令在WSL环境下也同样适用。

2. 文件与目录操作指令

2.1 基础文件操作

# 列出目录内容(我最常用的参数组合) ls -alh
  • -a显示隐藏文件
  • -l长格式显示
  • -h人类可读的文件大小

注意:在含有大量文件的目录下,使用ls -l会比ls慢很多,这时建议直接用ls快速查看。

# 复制文件(保留原文件属性) cp -p source_file target_file

2.2 目录操作进阶技巧

# 创建多级目录(避免逐个创建) mkdir -p project/{src,test,doc}

这个指令会一次性创建project目录及其下的src、test、doc子目录。大括号扩展是bash的一个实用特性,可以节省大量重复输入。

# 查找文件(我最常用的三种方式) find /path -name "*.log" -mtime +7 # 查找7天前的日志文件 locate filename # 快速查找(需要先updatedb) whereis python # 查找二进制文件位置

3. 系统管理与监控指令

3.1 进程管理实战

# 查看进程(带完整命令行) ps -ef

我习惯用这个组合而不是简单的ps aux,因为-ef显示的COMMAND列更完整,可以看到带参数启动的进程。

# 动态监控系统资源 top -d 1 -u username
  • -d 1设置刷新间隔为1秒
  • -u username只查看指定用户的进程

实用技巧:在top界面按M按内存排序,按P按CPU排序,按c显示完整命令。

3.2 系统服务管理

# 查看服务状态(systemd系统) systemctl list-units --type=service

对于服务管理,我强烈建议使用systemctl而不是老旧的service命令。它能提供更详细的状态信息和控制选项。

# 设置开机自启 sudo systemctl enable nginx # 立即启动服务 sudo systemctl start nginx

4. 网络配置与调试

4.1 基础网络诊断

# 查看IP地址(推荐方式) ip addr show

比起老旧的ifconfig,ip命令提供了更强大的功能。特别是在配置多个IP或VLAN时更灵活。

# 持续ping测试(带时间戳) ping -O -D 8.8.8.8
  • -O显示超时信息
  • -D显示时间戳

4.2 高级网络工具

# 查看路由表 ip route show # 追踪路由路径 traceroute -n google.com # 查看端口监听情况 ss -tulnp

我更喜欢用ss而不是netstat,因为它速度更快,特别是在服务器有大量连接时。

5. 软件包管理技巧

5.1 apt使用进阶

# 更新软件源(先更新再升级是好习惯) sudo apt update && sudo apt upgrade

重要提示:生产环境升级前一定要先测试!我曾经因为盲目升级导致关键服务不可用。

# 查找软件包 apt search ^nginx # 查看软件包详情 apt show nginx

5.2 源码编译安装

# 典型编译安装流程 ./configure --prefix=/usr/local make -j$(nproc) sudo make install

-j$(nproc)参数会根据CPU核心数自动设置编译线程数,大幅提高编译速度。

6. 用户与权限管理

6.1 用户账户操作

# 添加用户并创建家目录 sudo useradd -m -s /bin/bash newuser # 设置密码 sudo passwd newuser

6.2 权限控制实战

# 递归修改目录权限 chmod -R 750 /path/to/dir # 修改文件属主 chown user:group file

安全提示:永远不要随意使用chmod 777,这是安全隐患的温床。应该精确设置所需的最小权限。

7. 文本处理三剑客

7.1 grep高效搜索

# 递归搜索内容(忽略大小写) grep -rni "keyword" /path
  • -r递归搜索
  • -n显示行号
  • -i忽略大小写

7.2 sed流编辑器

# 替换文件内容(直接修改文件) sed -i 's/old/new/g' file.txt

7.3 awk数据处理

# 提取特定列并计算 awk '{sum+=$3} END {print sum}' data.txt

8. 磁盘与存储管理

8.1 磁盘空间分析

# 查看磁盘使用情况(人类可读格式) df -h # 查找大文件 du -sh * | sort -h

8.2 挂载操作要点

# 查看挂载信息 mount | column -t # 永久挂载(编辑/etc/fstab) UUID=xxxx /mountpoint ext4 defaults 0 2

经验之谈:在fstab中使用UUID而不是设备名(如/dev/sda1),因为设备名可能会变。

9. 系统日志分析

9.1 常用日志文件

# 查看系统日志 journalctl -xe # 查看认证日志 tail -f /var/log/auth.log

9.2 日志分析技巧

# 统计错误日志出现次数 grep "ERROR" /var/log/syslog | awk '{print $5}' | sort | uniq -c | sort -nr

10. 实用快捷键与小技巧

10.1 终端快捷键

  • Ctrl + R反向搜索命令历史
  • Ctrl + A/E移动到行首/行尾
  • Alt + .插入上一个命令的最后一个参数

10.2 命令行效率工具

# 记录终端会话 script -a session.log # 批量重命名文件 rename 's/\.jpeg$/\.jpg/' *.jpeg

这些指令只是Ubuntu强大命令行功能的冰山一角。在实际使用中,我建议多用man命令查看指令手册,比如man grep会显示grep的所有选项和用法。记住,掌握命令行不是要背下所有指令,而是理解其逻辑,知道在什么场景下用什么工具。