【实用工具教程】Linux常用命令速查与实战场景:文件操作、进程管理与网络调试高频命令解析

本篇将深入Linux命令行世界,系统梳理文件操作、进程管理、网络调试等高频命令,并提供真实工作场景下的组合应用技巧。

目录

一、Linux命令行的核心价值

Linux命令行是系统管理员、开发者和DevOps工程师的必备技能。与图形界面相比,命令行具备以下核心优势:

  1. 效率:通过键盘快捷键和命令组合,操作速度远超鼠标点击
  2. 可脚本化:所有命令均可写入脚本,实现自动化运维
  3. 远程操作:通过SSH即可远程管理服务器,无需图形界面
  4. 资源占用低:命令行工具通常在资源受限的环境中仍能稳定运行
  5. 功能强大:大量专业工具仅提供命令行接口,涵盖系统管理、网络调试、文本处理等全方位需求

二、文件操作命令:从基础到进阶

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:退出

htoptop的增强版,提供彩色界面和鼠标支持(可能需要安装):

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或内存占用过高
解决

  • 查看资源占用:tophtop
  • 查找占用最高的进程: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.comdig google.com
  • 查看网络配置:ip addr showifconfig
  • 检查路由:traceroute google.com
  • 测试端口连通性:nc -zv hostname 22

掌握这些常见问题的解决方法,能帮助您快速排除大部分Linux系统故障,提升工作效率。

核心要点回顾

  1. 文件操作 :掌握lsfindgrep等命令的组合使用,实现高效文件管理
  2. 进程管理 :熟练使用pstopkill进行进程监控与控制
  3. 网络调试 :通过pingcurlnetstat等工具诊断网络问题
  4. 系统监控 :利用dffreeuptime快速获取系统状态
  5. 命令组合:通过管道、重定向、命令替换构建复杂工作流

学习路径建议

  1. 初级阶段:每天练习10-20个核心命令,理解常用参数
  2. 中级阶段:学习编写Shell脚本,自动化重复任务
  3. 高级阶段:深入研究系统调用、性能调优、安全加固

实用资源推荐

  1. 在线练习:OverTheWire、Bandit等CTF游戏
  2. 文档查询man命令、TLDR项目(简化版man)
  3. 社区交流: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 运行时间 无参数

相关推荐
HLC++18 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室19 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
groundhappy1 天前
idalib安装和codex ida-mcp配置
linux·开发语言·python
TlSfoward1 天前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
通信小小昕1 天前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫1 天前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生1 天前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.111 天前
linux基础IO
linux·运维·服务器
—Miss. Z—1 天前
计算机二级MySQL——简单应用题(存储过程&存储函数)
数据库·oracle·php
故乡de云1 天前
AWS 添加付款方式失败排查清单:卡片、银行风控与账号状态逐项定位
开发语言·php