1. Ubuntu常用命令概述
作为一名Linux系统管理员,我每天的工作都离不开Ubuntu命令行操作。经过多年实践,我整理出一套最常用、最高效的命令组合,这些命令覆盖了系统管理、文件操作、网络配置等日常工作的90%场景。不同于教科书式的命令大全,这里分享的都是经过实战检验的"生存必备"命令。
新手常犯的错误是试图记忆所有命令参数,实际上掌握核心命令的常用选项就足够了。比如ls -lha这样的黄金组合,比记住ls全部30多个参数实用得多。我将按照实际工作流来组织这些命令,让你能够快速上手解决实际问题。
2. 文件与目录操作
2.1 基础导航与查看
pwd命令应该成为你的条件反射,特别是在使用sudo操作前,确认当前工作目录可以避免灾难性错误。我见过太多人误删系统文件就是因为没注意当前路径。
bash复制# 查看当前路径(绝对路径)
pwd
# 列出目录内容(我最常用的组合)
ls -lha
ls -lha这个组合值得详细解释:
-l长格式显示,包含权限、所有者等信息-h人类可读的文件大小(自动用K/M/G显示)-a显示隐藏文件(以点开头的文件)
经验:在服务器上创建目录时,养成使用
mkdir -p的习惯,它可以自动创建多级目录,避免"目录不存在"的错误。
2.2 文件操作进阶
复制文件时,cp -i的交互模式可以防止覆盖重要文件。对于大文件,我更喜欢用rsync,它支持断点续传和进度显示:
bash复制# 安全复制(覆盖前询问)
cp -i source.txt destination/
# 高级文件同步(带进度显示)
rsync -ah --progress largefile.mp4 /backup/
删除操作要格外小心。rm -rf是著名的"删库跑路"命令,我的习惯是:
- 先用
ls确认要删除的文件 - 使用
rm -i交互删除 - 对重要目录先
mv到临时位置,确认无影响后再删除
3. 系统信息与监控
3.1 硬件信息查询
当服务器出现性能问题时,我首先会运行这几个命令:
bash复制# 查看内存使用(最直观)
free -h
# 磁盘空间检查(人类可读格式)
df -h
# 详细硬件信息
lshw -short
htop比传统的top更强大,支持鼠标操作和彩色显示。安装也很简单:
bash复制sudo apt install htop
htop
3.2 进程管理
查找和终止进程是日常高频操作。我常用的组合是:
bash复制# 查找进程(比如nginx)
ps aux | grep nginx
# 优雅终止进程(先尝试SIGTERM)
kill -15 PID
# 强制终止(当进程无响应时)
kill -9 PID
对于复杂的进程树,pstree -p可以直观显示父子进程关系,这在排查僵尸进程时特别有用。
4. 网络配置与调试
4.1 基础网络诊断
网络问题是服务器最常见的故障之一。我的诊断流程通常是:
bash复制# 检查IP地址(新版推荐)
ip addr show
# 测试连通性(带时间戳)
ping -O baidu.com
# 查看路由表
ip route show
# 端口监听检查
ss -tulnp
curl命令的强大之处不仅在于下载文件,我常用它来:
bash复制# 测试API接口
curl -X GET http://api.example.com/users
# 下载文件并显示进度条
curl -# -O http://example.com/largefile.zip
# 检查HTTP头信息
curl -I https://www.example.com
4.2 防火墙管理
Ubuntu默认使用UFW防火墙,这些命令应该掌握:
bash复制# 查看状态
sudo ufw status verbose
# 允许SSH连接
sudo ufw allow 22/tcp
# 拒绝特定IP
sudo ufw deny from 192.168.1.100
重要提示:在远程服务器上配置防火墙时,一定要先在本地终端保持一个活动的SSH会话,避免被锁在外面。
5. 软件包管理
5.1 APT基础操作
APT是Ubuntu的包管理系统,这些命令使用频率最高:
bash复制# 更新软件源(不是升级系统)
sudo apt update
# 升级已安装的包
sudo apt upgrade
# 搜索软件包
apt search nginx
# 安装软件
sudo apt install nginx
# 彻底卸载(包括配置文件)
sudo apt purge nginx
5.2 高级包管理技巧
当遇到依赖问题时,我的解决步骤是:
bash复制# 修复损坏的依赖
sudo apt --fix-broken install
# 清理无用的包
sudo apt autoremove
# 下载deb包但不安装(用于离线环境)
apt download nginx
对于第三方软件源,add-apt-repository命令非常方便:
bash复制# 添加PPA源
sudo add-apt-repository ppa:ondrej/php
sudo apt update
6. 用户与权限管理
6.1 用户账户操作
管理多用户系统时,这些命令必不可少:
bash复制# 创建新用户(带家目录)
sudo useradd -m newuser
# 设置密码
sudo passwd newuser
# 添加到sudo组
sudo usermod -aG sudo newuser
查看用户登录情况:
bash复制# 查看当前登录用户
who
# 查看登录历史
last
6.2 文件权限控制
Linux的权限系统很强大但也容易出错。我常用的权限相关命令:
bash复制# 更改所有者
sudo chown user:group file
# 递归更改目录权限
sudo chmod -R 755 /var/www
# 设置特殊权限(如SUID)
chmod u+s /usr/bin/some_program
安全提示:给目录设置777权限是极不安全的做法。正确的做法是创建专用用户组,然后设置770权限。
7. 文本处理三剑客
7.1 grep文本搜索
grep是我每天使用最多的命令之一,几个实用技巧:
bash复制# 递归搜索目录(忽略大小写)
grep -ri "search_term" /path/
# 显示前后3行内容
grep -A 3 -B 3 "error" logfile
# 只显示匹配的文件名
grep -l "pattern" *.txt
7.2 sed流编辑器
sed适合批量文本替换,我的常用模式:
bash复制# 替换文件内容(直接修改)
sed -i 's/old/new/g' file.txt
# 删除空白行
sed '/^$/d' input.txt
# 显示特定行范围
sed -n '10,20p' access.log
7.3 awk数据处理
awk特别适合处理结构化文本,比如日志分析:
bash复制# 显示CSV的特定列
awk -F',' '{print $1,$3}' data.csv
# 统计Nginx日志的IP访问量
awk '{print $1}' access.log | sort | uniq -c | sort -nr
8. 压缩与归档
8.1 常用压缩命令
不同场景下我会选择不同的压缩工具:
bash复制# 快速压缩(tar + gzip)
tar -czvf archive.tar.gz /path/
# 高压缩率(xz算法)
tar -cJvf archive.tar.xz /path/
# 解压(自动识别格式)
tar -xvf archive.tar.gz
8.2 大文件分割
传输大文件时,分割是个好办法:
bash复制# 分割为100MB的文件块
split -b 100M largefile.zip largefile_part_
# 合并文件块
cat largefile_part_* > largefile.zip
9. 计划任务管理
9.1 Crontab定时任务
系统级的定时任务应该放在/etc/cron.d/,用户级的用:
bash复制# 编辑当前用户的cron
crontab -e
# 查看已有的任务
crontab -l
我常用的cron时间格式:
0 3 * * *每天凌晨3点*/15 * * * *每15分钟0 18 * * 1-5工作日晚上6点
9.2 Systemd定时器
对于新系统,systemd timer更强大:
bash复制# 列出所有timer
systemctl list-timers
# 查看timer详情
systemctl status mytimer.timer
10. 日志查看与分析
10.1 实时日志监控
journalctl是systemd系统的日志工具:
bash复制# 查看内核日志
journalctl -k
# 跟踪服务日志
journalctl -u nginx -f
# 按时间过滤
journalctl --since "2023-01-01" --until "2023-01-02"
10.2 经典日志文件
这些日志文件经常需要检查:
/var/log/syslog- 系统主日志/var/log/auth.log- 认证相关/var/log/nginx/error.log- Nginx错误日志
查看日志的黄金组合:
bash复制# 显示最后100行并实时刷新
tail -100f /var/log/nginx/access.log
# 查找错误(带行号)
grep -n "error" /var/log/syslog | less
掌握这些命令后,你的Ubuntu系统管理效率会大幅提升。记住,命令行的强大之处不在于死记硬背,而在于理解其工作逻辑和组合使用。我建议创建一个cheatsheet文件,记录你常用的命令组合,随着经验积累不断优化它。