【实用工具教程】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 运行时间 无参数

相关推荐
落叶花开又一年1 小时前
检验检测机构资质认定远程评审工作程序
linux·运维·服务器
idolao1 小时前
CentOS 7 安装 jdk-7u25-linux-x64.tar.gz 详细步骤(解压配置环境变量)
linux
ccchen8882 小时前
适配帝国CMS 8.0:全新帝国CMS免登录采集发布插件
经验分享·爬虫·php·帝国cms自动采集发布插件·帝国cms8.0·帝国cms自动采集插件·帝国cms采集发布模块
旺仔.2912 小时前
僵死进程及Linux文件操作 详解
linux·运维·服务器
IMPYLH2 小时前
Linux 的 comm 命令
linux·运维·算法
薛定谔的悦2 小时前
嵌入式设备OTA升级实战:从MQTT命令到自动重启的全流程解析
linux·算法·ota·ems
2501_918126913 小时前
学习所有6502写游戏控制器的语句
java·linux·网络·汇编·嵌入式硬件
JuckenBoy3 小时前
Linux环境安装SGLang框架运行自选大模型(以Rocky9.7为例)
linux·运维·大模型·qwen·rocky·deepseek·sglang
十巷无终3 小时前
Kali Virtual Machines(虚拟机镜像)安装后问题及解决办法
linux·运维·服务器