本篇将深入Linux命令行世界,系统梳理文件操作、进程管理、网络调试等高频命令,并提供真实工作场景下的组合应用技巧。
目录
- 一、Linux命令行的核心价值
- 二、文件操作命令:从基础到进阶
- [2.1 目录导航与查看](#2.1 目录导航与查看)
- [2.2 文件创建与删除](#2.2 文件创建与删除)
- [2.3 文件复制与移动](#2.3 文件复制与移动)
- [2.4 文件查找与搜索](#2.4 文件查找与搜索)
- [2.5 文件权限管理](#2.5 文件权限管理)
- 三、进程管理命令:监控与控制
- [3.1 进程查看与监控](#3.1 进程查看与监控)
- [3.2 进程控制与终止](#3.2 进程控制与终止)
- [3.3 后台任务管理](#3.3 后台任务管理)
- 四、网络调试命令:连通性与数据传输
- [4.1 网络连通性测试](#4.1 网络连通性测试)
- [4.2 数据下载与传输](#4.2 数据下载与传输)
- [4.3 网络连接分析](#4.3 网络连接分析)
- [4.4 远程连接管理](#4.4 远程连接管理)
- 五、系统信息查询命令:状态监控
- [5.1 磁盘空间分析](#5.1 磁盘空间分析)
- [5.2 内存使用监控](#5.2 内存使用监控)
- [5.3 系统信息查询](#5.3 系统信息查询)
- 六、命令组合与高级用法
- [6.1 管道(Pipeline)](#6.1 管道(Pipeline))
- [6.2 重定向(Redirection)](#6.2 重定向(Redirection))
- [6.3 命令替换(Command Substitution)](#6.3 命令替换(Command Substitution))
- [6.4 实战场景案例](#6.4 实战场景案例)
- 七、常见问题与解决技巧
- 八、总结与进阶建议
- 附录:常用命令速查表
一、Linux命令行的核心价值
Linux命令行是系统管理员、开发者和DevOps工程师的必备技能。与图形界面相比,命令行具备以下核心优势:
- 效率:通过键盘快捷键和命令组合,操作速度远超鼠标点击
- 可脚本化:所有命令均可写入脚本,实现自动化运维
- 远程操作:通过SSH即可远程管理服务器,无需图形界面
- 资源占用低:命令行工具通常在资源受限的环境中仍能稳定运行
- 功能强大:大量专业工具仅提供命令行接口,涵盖系统管理、网络调试、文本处理等全方位需求
二、文件操作命令:从基础到进阶
2.1 目录导航与查看
pwd - 显示当前目录
bash
pwd
# 输出:/home/user/projects
cd - 切换目录
bash
cd /var/log # 切换到绝对路径
cd .. # 返回上级目录
cd ~ # 返回用户主目录
cd - # 返回上一个目录
ls - 列出目录内容
ls是最常用的文件查看命令,其参数组合极为丰富:
bash
ls # 简单列出
ls -l # 长格式显示(权限、所有者、大小、时间)
ls -a # 显示隐藏文件(以.开头)
ls -lh # 人类可读的文件大小(K/M/G)
ls -lt # 按时间排序(最新在前)
ls -ltr # 按时间反向排序(最旧在前)
ls -R # 递归列出子目录
典型输出示例:
drwxr-xr-x 5 user user 4.0K Mar 18 03:00 logs
-rw-r--r-- 1 user user 1.2M Mar 18 02:45 app.log
-rwxr-xr-x 1 user user 256 Mar 18 01:30 backup.sh
2.2 文件创建与删除
touch - 创建空文件或更新文件时间戳
bash
touch file.txt # 创建新文件
touch -t 202403181200.00 file.txt # 设置特定时间戳
mkdir - 创建目录
bash
mkdir newdir # 创建单个目录
mkdir -p dir1/dir2/dir3 # 递归创建多级目录
rm - 删除文件或目录
⚠️ 警告 :rm命令删除的文件通常无法恢复!
bash
rm file.txt # 删除文件
rm -f file.txt # 强制删除,不提示
rm -r directory/ # 递归删除目录及其内容
rm -rf directory/ # 强制递归删除(谨慎使用!)
安全建议:使用rm -i交互模式,或设置别名:
bash
alias rm='rm -i' # 在~/.bashrc中设置
2.3 文件复制与移动
cp - 复制文件
bash
cp source.txt dest.txt # 复制文件
cp -r sourcedir/ destdir/ # 递归复制目录
cp -p source.txt dest.txt # 保留原始属性(权限、时间戳)
cp -u source.txt dest.txt # 仅当源文件较新时复制
cp -v source.txt dest.txt # 显示详细信息
mv - 移动或重命名文件
bash
mv oldname.txt newname.txt # 重命名
mv file.txt directory/ # 移动到目录
mv -i file.txt directory/ # 交互模式(覆盖前询问)
mv -f file.txt directory/ # 强制移动
2.4 文件查找与搜索
find - 强大的文件查找工具
find命令支持按名称、类型、大小、时间等条件搜索:
bash
# 按名称查找
find /home -name "*.log"
find /var -iname "error*" # 忽略大小写
# 按类型查找
find /tmp -type f # 普通文件
find / -type d -name "config" # 目录
# 按大小查找
find / -size +100M # 大于100MB的文件
find / -size -10k # 小于10KB的文件
# 按时间查找
find /var/log -mtime -7 # 7天内修改过的文件
find / -mmin +30 -mmin -60 # 30-60分钟前修改的文件
# 组合条件与执行操作
find /home/user -name "*.tmp" -delete # 找到并删除
find . -type f -exec grep -l "error" {} \; # 查找包含"error"的文件

grep - 文本搜索工具
grep是文本处理的瑞士军刀,用于在文件中搜索模式:
bash
grep "error" app.log # 搜索包含"error"的行
grep -i "error" app.log # 忽略大小写
grep -v "debug" app.log # 排除包含"debug"的行
grep -n "warning" app.log # 显示行号
grep -c "error" app.log # 统计匹配行数
grep -r "TODO" src/ # 递归搜索目录
grep -E "[0-9]+\.[0-9]+" data.txt # 使用正则表达式
2.5 文件权限管理
chmod - 修改文件权限
Linux文件权限分为三组:所有者(u)、所属组(g)、其他用户(o),每组有读(r=4)、写(w=2)、执行(x=1)权限。
数字表示法:
bash
chmod 755 script.sh # rwxr-xr-x:所有者rwx,组和其他r-x
chmod 644 file.txt # rw-r--r--:所有者rw-,组和其他r--
符号表示法:
bash
chmod u+x script.sh # 给所有者添加执行权限
chmod g-w file.txt # 移除组的写权限
chmod a+r file.txt # 给所有用户添加读权限
chown - 修改文件所有者
bash
chown user:group file.txt # 修改所有者和组
chown -R user:group directory/ # 递归修改目录
三、进程管理命令:监控与控制
3.1 进程查看与监控
ps - 查看进程状态
ps命令有多种风格,常用选项组合:
bash
ps aux # 查看所有用户的所有进程(BSD风格)
ps -ef # 查看所有进程(标准风格)
ps aux --sort=-%cpu # 按CPU使用率降序排序
ps aux --sort=-%mem # 按内存使用率降序排序
ps -u username # 查看特定用户的进程
关键字段说明:
USER:进程所有者PID:进程ID%CPU:CPU使用率%MEM:内存使用率VSZ:虚拟内存大小RSS:实际内存大小TTY:终端类型STAT:进程状态(R运行、S睡眠、Z僵尸等)START:启动时间COMMAND:命令名称
top / htop - 实时进程监控
top提供动态更新的进程列表:
bash
top # 启动实时监控
top -u username # 监控特定用户的进程
top -p 1234,5678 # 监控特定PID的进程
在top界面中的实用操作:
P:按CPU使用率排序M:按内存使用率排序k:终止进程(输入PID)1:显示所有CPU核心的详细信息q:退出
htop是top的增强版,提供彩色界面和鼠标支持(可能需要安装):
bash
htop # 更友好的进程监控

3.2 进程控制与终止
kill - 向进程发送信号
bash
kill 1234 # 发送TERM信号(默认,优雅终止)
kill -9 1234 # 发送KILL信号(强制终止)
kill -15 1234 # 发送TERM信号(同默认)
kill -STOP 1234 # 暂停进程
kill -CONT 1234 # 恢复暂停的进程
pkill / killall - 按名称终止进程
bash
pkill firefox # 终止所有firefox进程
killall nginx # 终止所有nginx进程
pkill -u username # 终止特定用户的所有进程
3.3 后台任务管理
& - 后台运行命令
bash
./long_task.sh & # 在后台运行脚本
jobs - 查看后台任务
bash
jobs # 列出后台任务
jobs -l # 列出任务及PID
fg / bg - 前台/后台切换
bash
fg %1 # 将任务1切换到前台
bg %2 # 将任务2切换到后台运行
nohup - 忽略挂起信号
bash
nohup ./server.sh & # 在后台运行,即使终端关闭也不停止
四、网络调试命令:连通性与数据传输
4.1 网络连通性测试
ping - 测试网络连通性
bash
ping google.com # 测试与Google的连通性
ping -c 5 8.8.8.8 # 发送5个数据包后停止
ping -i 2 baidu.com # 每2秒发送一个数据包
traceroute / tracepath - 跟踪数据包路径
bash
traceroute github.com # 显示数据包经过的路由节点
tracepath example.com # 类似功能,无需root权限
4.2 数据下载与传输
curl - 强大的网络传输工具
curl支持HTTP、HTTPS、FTP等多种协议:
bash
# 基础下载
curl -O https://example.com/file.zip
# 保存为指定文件名
curl -o custom_name.zip https://example.com/file.zip
# 跟随重定向
curl -L https://short.url
# 添加HTTP头
curl -H "Authorization: Bearer token" https://api.example.com/data
# 发送POST请求
curl -X POST -d '{"key":"value"}' https://api.example.com/endpoint
# 显示详细信息
curl -v https://example.com
# 下载进度条
curl --progress-bar -O https://example.com/largefile.iso
# 断点续传
curl -C - -O https://example.com/largefile.iso
wget - 可靠的下载工具
bash
wget https://example.com/file.zip # 基础下载
wget -c https://example.com/bigfile.iso # 断点续传
wget -r -l 2 https://example.com/ # 递归下载(深度2)
wget -O output.html https://example.com # 指定输出文件名
4.3 网络连接分析
netstat - 网络连接统计
bash
netstat -tulpn # 查看所有监听端口及相关进程
netstat -an # 查看所有网络连接
netstat -rn # 查看路由表
关键参数:
-t:TCP连接-u:UDP连接-l:监听中的连接-p:显示进程信息(需要sudo)-n:数字形式显示(不解析主机名)
ss - Socket Statistics(netstat的现代替代)
bash
ss -tulpn # 类似netstat,但更快
ss -s # 显示统计摘要
ss dst 192.168.1.1 # 查看特定目标IP的连接
4.4 远程连接管理
ssh - 安全远程登录
bash
ssh user@hostname # 基础连接
ssh -p 2222 user@hostname # 指定端口
ssh -i ~/.ssh/id_rsa user@hostname # 使用密钥认证
ssh -L 8080:localhost:80 user@hostname # 本地端口转发
ssh -R 9090:localhost:3000 user@hostname # 远程端口转发
scp - 安全文件传输
bash
# 复制本地文件到远程
scp file.txt user@hostname:/remote/path/
# 复制远程文件到本地
scp user@hostname:/remote/file.txt ./
# 递归复制目录
scp -r directory/ user@hostname:/remote/path/
# 保留文件属性
scp -p file.txt user@hostname:/remote/path/
五、系统信息查询命令:状态监控
5.1 磁盘空间分析
df - 显示文件系统磁盘空间使用情况
bash
df # 显示所有文件系统
df -h # 人类可读格式(G/M/K)
df -i # 显示inode使用情况
df -T # 显示文件系统类型
典型输出:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 100G 30G 65G 32% /
/dev/sdb1 2.0T 1.2T 768G 61% /data
du - 估算文件/目录磁盘使用量
bash
du -sh directory/ # 显示目录总大小
du -h --max-depth=1 /var/log # 显示一级子目录大小
du -a /home | sort -n -r | head -20 # 找出最大的20个文件
5.2 内存使用监控
free - 显示内存使用情况
bash
free # 基本内存信息
free -h # 人类可读格式
free -m # 以MB为单位
free -s 5 # 每5秒更新一次
关键指标:
total:总内存used:已使用内存(包括缓存和缓冲区)free:完全空闲的内存shared:共享内存buff/cache:缓存和缓冲区内存available:可用于启动新应用的内存估计值
5.3 系统信息查询
uname - 显示系统信息
bash
uname -a # 显示所有信息
uname -s # 内核名称
uname -r # 内核版本
uname -m # 机器硬件架构
uptime - 显示系统运行时间
bash
uptime # 显示运行时间、用户数、负载
输出示例:10:30:45 up 15 days, 3:20, 2 users, load average: 0.08, 0.03, 0.01
who / w - 显示登录用户
bash
who # 显示当前登录用户
w # 显示更详细的信息(包括用户活动)
六、命令组合与高级用法
6.1 管道(Pipeline)
管道(|)将一个命令的输出作为另一个命令的输入:
bash
# 查找包含error的日志行并计数
grep "error" app.log | wc -l
# 查看占用CPU最高的进程
ps aux --sort=-%cpu | head -10
# 分析日志中不同错误类型的出现频率
grep -o "ERROR:[A-Z_]\+" app.log | sort | uniq -c | sort -nr
# 监控文件变化并实时显示
tail -f access.log | grep "404"
6.2 重定向(Redirection)
>:覆盖输出到文件>>:追加输出到文件<:从文件读取输入2>:重定向错误输出
bash
# 保存命令输出到文件
ls -la > filelist.txt
# 追加输出到文件
echo "备份完成 $(date)" >> backup.log
# 同时保存标准输出和错误输出
./script.sh > output.log 2>&1
# 或使用更简洁的语法
./script.sh &> output.log
# 丢弃输出(发送到/dev/null)
./noisy_command > /dev/null 2>&1
6.3 命令替换(Command Substitution)
command:传统语法(反引号)$(command):现代语法(推荐)
bash
# 将日期嵌入文件名
cp data.csv backup/data_$(date +%Y%m%d).csv
# 使用命令输出作为参数
grep "$(head -1 patterns.txt)" file.txt
# 计算目录中文件数量
filecount=$(ls -1 | wc -l)
echo "当前目录有 $filecount 个文件"
6.4 实战场景案例
场景一:日志分析与错误监控
bash
# 统计最近24小时内各类错误的数量
find /var/log -name "*.log" -mtime -1 -exec grep -h "ERROR" {} \; | \
cut -d':' -f2 | sort | uniq -c | sort -nr
# 实时监控错误日志并发送警报(简化版)
tail -f /var/log/app/error.log | \
while read line; do
if echo "$line" | grep -q "CRITICAL"; then
echo "CRITICAL ERROR: $line" | mail -s "系统警报" admin@example.com
fi
done
场景二:批量文件处理
bash
# 批量重命名图片文件(添加日期前缀)
for file in *.jpg; do
mv "$file" "$(date +%Y%m%d)_$file"
done
# 批量压缩日志文件(超过7天的)
find /var/log -name "*.log" -mtime +7 -exec gzip {} \;
# 批量转换文本文件编码(GBK转UTF-8)
find . -name "*.txt" -exec iconv -f GBK -t UTF-8 {} -o {}.utf8 \;
场景三:系统性能监控与报告
bash
# 生成系统状态报告
echo "=== 系统状态报告 $(date) ===" > system_report.txt
echo "" >> system_report.txt
echo "1. 内存使用情况:" >> system_report.txt
free -h >> system_report.txt
echo "" >> system_report.txt
echo "2. 磁盘使用情况:" >> system_report.txt
df -h >> system_report.txt
echo "" >> system_report.txt
echo "3. 运行进程TOP 10(按CPU):" >> system_report.txt
ps aux --sort=-%cpu | head -11 >> system_report.txt
echo "" >> system_report.txt
echo "4. 网络连接统计:" >> system_report.txt
ss -s >> system_report.txt
# 发送报告(假设已配置邮件)
mail -s "每日系统报告" admin@example.com < system_report.txt
场景四:安全审计与入侵检测
安全审计是系统管理的重要环节,以下命令组合帮助您快速发现潜在安全问题:
bash
# 检查异常登录尝试(最近24小时)
grep "Failed password" /var/log/auth.log | grep "$(date +'%b %d')" | wc -l
# 查找SUID/SGID特殊权限文件(潜在后门)
find / -type f \( -perm -4000 -o -perm -2000 \) 2>/dev/null | xargs ls -lh
# 检查网络监听端口(非正常服务)
sudo netstat -tulpn | grep -E ":(22|80|443)" # 重点关注常见服务端口
# 分析系统日志中的可疑活动
sudo journalctl --since "24 hours ago" | grep -i "error\|fail\|attack\|intrusion"
场景五:备份与恢复自动化
自动化备份能有效防止数据丢失,以下脚本展示了增量备份策略:
bash
#!/bin/bash
# 增量备份脚本
BACKUP_DIR="/backup/$(date +%Y%m%d)"
SOURCE_DIR="/data"
LOG_FILE="/var/log/backup.log"
# 创建备份目录
mkdir -p "$BACKUP_DIR"
# 使用rsync进行增量备份(保留硬链接以节省空间)
rsync -avh --delete --link-dest="../$(date -d '1 day ago' +%Y%m%d)" \
"$SOURCE_DIR/" "$BACKUP_DIR/" >> "$LOG_FILE" 2>&1
# 清理30天前的备份
find /backup -type d -mtime +30 -exec rm -rf {} \; 2>/dev/null
echo "备份完成: $(date)" >> "$LOG_FILE"
场景六:服务部署与监控
结合多个命令实现服务全生命周期管理:
bash
# 部署应用服务
sudo systemctl stop myapp.service
sudo cp myapp /usr/local/bin/
sudo systemctl daemon-reload
sudo systemctl start myapp.service
# 监控服务状态与日志
sudo systemctl status myapp.service
sudo journalctl -u myapp.service -f # 实时跟踪日志
# 健康检查脚本
check_service() {
if ! systemctl is-active --quiet "$1"; then
echo "服务 $1 异常,尝试重启..."
sudo systemctl restart "$1"
# 发送警报
echo "服务 $1 重启于 $(date)" | mail -s "服务告警" admin@example.com
fi
}
# 定时检查关键服务
check_service nginx
check_service mysql
check_service myapp
掌握这些进阶场景,您将能够处理复杂的系统管理任务,实现真正的自动化运维。
八、总结与进阶建议
常见问题速查
1. 命令找不到(Command Not Found)
问题 :执行命令时提示 command not found
解决:
- 检查命令是否安装:
which <command>或type <command> - 安装缺失软件包:
sudo apt install <package>(Ubuntu)或sudo yum install <package>(CentOS) - 检查PATH环境变量:
echo $PATH,确保命令所在目录在PATH中 - 添加目录到PATH:
export PATH=$PATH:/new/path(临时),或在~/.bashrc中添加(永久)
2. 权限拒绝(Permission Denied)
问题 :操作文件时提示权限不足
解决:
- 查看文件权限:
ls -l file.txt - 添加执行权限:
chmod +x script.sh - 修改文件权限:
chmod 755 file.txt(所有者rwx,组和其他r-x) - 使用sudo提升权限:
sudo command - 修改文件所有权:
sudo chown user:group file.txt
3. 磁盘空间不足(No Space Left on Device)
问题 :写入文件时提示磁盘空间不足
解决:
- 查看磁盘使用情况:
df -h - 查找大文件:
sudo du -h --max-depth=1 / | sort -rh | head -20 - 清理日志文件:
sudo journalctl --vacuum-time=7d - 清理包缓存:
sudo apt clean(Ubuntu)或sudo yum clean all(CentOS) - 删除临时文件:
rm -rf /tmp/*(谨慎操作)
4. 进程占用资源过高
问题 :系统变慢,CPU或内存占用过高
解决:
- 查看资源占用:
top或htop - 查找占用最高的进程:
ps aux --sort=-%cpu | head -5 - 分析进程详细信息:
pmap <PID>或lsof -p <PID> - 终止问题进程:
kill -15 <PID>(优雅终止)或kill -9 <PID>(强制终止)
5. 网络连接失败
问题 :无法访问网络或远程服务
解决:
- 测试基础连通性:
ping -c 4 google.com - 检查DNS解析:
nslookup google.com或dig google.com - 查看网络配置:
ip addr show或ifconfig - 检查路由:
traceroute google.com - 测试端口连通性:
nc -zv hostname 22
掌握这些常见问题的解决方法,能帮助您快速排除大部分Linux系统故障,提升工作效率。
核心要点回顾
- 文件操作 :掌握
ls、find、grep等命令的组合使用,实现高效文件管理 - 进程管理 :熟练使用
ps、top、kill进行进程监控与控制 - 网络调试 :通过
ping、curl、netstat等工具诊断网络问题 - 系统监控 :利用
df、free、uptime快速获取系统状态 - 命令组合:通过管道、重定向、命令替换构建复杂工作流
学习路径建议
- 初级阶段:每天练习10-20个核心命令,理解常用参数
- 中级阶段:学习编写Shell脚本,自动化重复任务
- 高级阶段:深入研究系统调用、性能调优、安全加固
实用资源推荐
- 在线练习:OverTheWire、Bandit等CTF游戏
- 文档查询 :
man命令、TLDR项目(简化版man) - 社区交流:Stack Overflow、Linux中国等专业论坛
最后提醒
命令行工具的强大之处在于组合与创新。不要死记硬背所有参数,而是掌握核心命令的逻辑和组合方式。当遇到复杂需求时,学会分解问题,将多个简单命令组合成解决方案。
记住:最好的学习方式是在实际工作中应用这些命令,从解决真实问题中获得经验。
附录:常用命令速查表
| 类别 | 命令 | 主要功能 | 常用参数 |
|---|---|---|---|
| 文件操作 | ls |
列出目录内容 | -l、-a、-h、-t |
cd |
切换目录 | ..、~、- |
|
cp |
复制文件/目录 | -r、-p、-u |
|
mv |
移动/重命名 | -i、-f |
|
rm |
删除文件/目录 | -r、-f |
|
find |
查找文件 | -name、-type、-size、-exec |
|
grep |
文本搜索 | -i、-v、-n、-r、-E |
|
| 进程管理 | ps |
查看进程 | aux、-ef |
top/htop |
实时监控 | 交互式操作 | |
kill |
终止进程 | -9、-15 |
|
pkill |
按名终止 | -u |
|
| 网络调试 | ping |
连通性测试 | -c、-i |
curl |
网络传输 | -O、-L、-H、-X |
|
wget |
文件下载 | -c、-r |
|
netstat/ss |
连接分析 | -tulpn、-an |
|
| 系统信息 | df |
磁盘空间 | -h、-i |
du |
文件大小 | -sh、--max-depth |
|
free |
内存使用 | -h、-m |
|
uname |
系统信息 | -a、-r |
|
uptime |
运行时间 | 无参数 |