前言:本文整理了Linux系统在实际工作中最常用的命令,涵盖日志查看、系统监控、网络测试、进程管理等高频场景,适合运维工程师、后端开发人员日常查阅使用。


一、日志查看与分析命令

1. tail - 实时监控日志(最常用)

# 查看文件最后10行(默认)
tail /var/log/nginx/access.log

# 查看最后50行
tail -n 50 /var/log/nginx/error.log

# 实时监控日志新增内容(调试必备)
tail -f /var/log/nginx/access.log

# 实时监控并过滤关键词
tail -f /var/log/app.log | grep "ERROR"

# 从第100行开始显示到文件末尾
tail -n +100 application.log

# 实时监控多个日志文件
tail -f /var/log/nginx/*.log

# -F 参数比 -f 更稳定,日志轮转后仍能继续监控
tail -F /var/log/syslog

2. head - 查看文件开头

# 查看前10行(默认)
head /var/log/nginx/access.log

# 查看前20行
head -n 20 /var/log/messages

# 显示前100个字符
head -c 100 file.txt

3. grep - 文本搜索神器(核心中的核心)

# 基础搜索
grep "error" app.log

# 忽略大小写搜索
grep -i "ERROR" app.log

# 递归搜索目录下所有文件
grep -r "timeout" /var/log/

# 显示匹配行的行号
grep -n "404" access.log

# 反向匹配(排除包含关键词的行)
grep -v "INFO" debug.log

# 显示匹配行及前后各N行上下文
grep -C 3 "Exception" trace.log       # 前后各3行
grep -A 5 "failed" auth.log           # 后5行
grep -B 2 "warning" syslog            # 前2行

# 多关键词搜索(或关系)
grep -E "error|warning|fatal" app.log

# 精确匹配(全词匹配)
grep -w "Timeout" access.log

# 统计匹配次数
grep -c "500" nginx_error.log

# 只显示文件名
grep -l "database" /var/log/*.log

# 多个文件搜索
grep "pattern" file1 file2 file3

# 组合使用示例
# 搜索错误并显示上下文
grep -A 3 -B 3 "NullPointerException" app.log

4. less - 交互式查看大文件

# 分页查看文件
less /var/log/large_file.log

# 查看时直接高亮搜索关键词
less -p "error" /var/log/syslog

# less 内部快捷键:
# /关键词      向下搜索关键词
# ?关键词      向上搜索关键词
# n            查找下一个
# N            查找上一个
# 空格键       向下翻页
# b键          向上翻页
# G            跳转到文件末尾
# g            跳转到文件开头
# q            退出

5. journalctl - systemd日志管理

# 查看所有系统日志
journalctl

# 查看特定服务的日志
journalctl -u nginx.service
journalctl -u mysql
journalctl -u docker

# 实时跟踪日志
journalctl -f

# 按时间范围查看
journalctl --since "2024-01-01 00:00:00"
journalctl --since "today"
journalctl --since "yesterday"
journalctl --until "2024-01-02 12:00:00"

# 按日志级别过滤
journalctl -p err        # 只看错误
journalctl -p notice
journalctl -p emerg..alert

# 显示最后N条
journalctl -n 50

# 按PID过滤
journalctl _PID=1234

# 组合使用
journalctl -u nginx --since today | grep error

6. sed - 流编辑器

# 查看第10到20行
sed -n '10,20p' file.log

# 删除包含关键词的行
sed '/DEBUG/d' app.log

# 批量替换文件内容
sed 's/old/new/g' file.txt

# 直接修改文件(小心使用)
sed -i 's/localhost/192.168.1.100/g' config.ini

# 修改前备份
sed -i.bak 's/old/new/g' file.txt

# 删除空行
sed '/^$/d' file.txt

# 删除注释行
sed '/^#/d' file.conf

7. 日志分析实用组合

# 统计访问IP数量
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10

# 统计HTTP状态码
awk '{print $9}' access.log | sort | uniq -c | sort -rn

# 查找最耗时的请求
awk '{print $NF,$7}' access.log | sort -rn | head -10

# 实时监控404错误
tail -f access.log | awk '$9==404 {print $1,$7}'

# 统计特定时间段的日志
sed -n '/2024-01-01 10:00:00/,/2024-01-01 11:00:00/p' app.log

# 提取日志中的IP地址
grep -oP '(\d{1,3}\.){3}\d{1,3}' access.log

二、系统监控命令

1. top - 实时系统监控

top

# 交互命令:
# P     按CPU使用率排序
# M     按内存使用排序
# k     终止进程(输入PID)
# q     退出
# 1     显示每个CPU核心的详细信息

top输出解读:

字段 说明
load average 1分钟、5分钟、15分钟平均负载,小于CPU核心数是健康的
%CPU 进程CPU使用率
%MEM 进程内存使用率
RES 进程占用的物理内存

2. htop - 增强版top(需安装)

# 安装
yum install htop  # CentOS/RHEL
apt install htop  # Ubuntu/Debian

htop

# htop优势:
# - 彩色界面更直观
# - 支持鼠标操作
# - 支持树状显示进程关系
# - F3/F4 搜索进程
# - F9 杀进程

3. free - 内存使用查看

# 人类可读格式显示
free -h

# 以MB为单位显示
free -m

# 以GB为单位显示
free -g

# 每秒刷新一次
watch -n 1 free -h

# 显示宽格式(分离buffers/cache)
free -w

free输出解读:

字段 说明
total 总内存
used 已使用内存(包含缓存)
free 空闲内存
available 真正可用的内存(包含可回收缓存),重点关注此列
buff/cache 缓冲区和缓存

4. vmstat - 虚拟内存统计

# 显示系统整体状态
vmstat

# 每2秒刷新一次,共显示5次
vmstat 2 5

# 显示内存详细信息
vmstat -s

# 显示磁盘统计
vmstat -d

# 显示 slab 统计
vmstat -m

vmstat输出解读:

字段 说明
r 运行队列进程数
b 阻塞进程数
swpd 虚拟内存使用量
si/so swap换入/换出,持续>0说明内存不足
bi/bo 块设备读/写
us/sy/id/wa CPU用户态/内核态/空闲/等待IO

5. uptime - 系统负载

uptime

# 输出示例:
# load average: 0.50, 0.60, 0.70
# 分别表示1分钟、5分钟、15分钟平均负载

# 美化输出
uptime -p

6. mpstat - CPU统计

# 查看所有CPU核心状态
mpstat -P ALL 1 5

# 查看CPU使用率详情
mpstat 1 5

# 输出含义:
# %usr  用户空间CPU占用
# %sys  内核空间CPU占用
# %iowait 等待IO的CPU时间
# %idle 空闲CPU时间

7. iostat - 磁盘IO统计

# 查看磁盘IO统计
iostat 1 5

# 显示扩展信息
iostat -x 1 5

# 只查看特定设备
iostat -x -p sda 1 5

iostat输出重点:

字段 说明 阈值
%util 磁盘IO利用率 >70%需关注
await IO平均等待时间(ms) >10ms说明IO慢
r/s w/s 每秒读/写次数 -
rkB/s wkB/s 每秒读/写KB数 -

8. sar - 系统活动报告器

# 查看CPU使用历史
sar -u

# 查看内存使用历史
sar -r

# 查看网络统计
sar -n DEV

# 查看历史数据(6号的数据)
sar -f /var/log/sa/sa06

# 查看昨天的数据
sar -f /var/log/sa/sa$(date -d "yesterday" +%d)

# 实时监控
sar 1 5

三、进程管理命令

1. ps - 进程快照

# 查看所有进程
ps aux

# 查看进程树
ps -ef --forest

# 查看特定进程
ps aux | grep nginx
ps -ef | grep java

# 按CPU使用率排序,显示前10
ps aux --sort=-%cpu | head -10

# 按内存使用率排序,显示前10
ps aux --sort=-%mem | head -10

# 查看特定用户的进程
ps -u nginx
ps -u www-data

# 查看特定PID的详细信息
ps -fp 1234

# 查看线程
ps -eLf
ps -T -p 1234

2. pstree - 进程树

pstree

# 显示PID
pstree -p

# 显示特定用户进程
pstree -u nginx

# 显示完整命令行
pstree -a

3. kill/killall/pkill - 进程终止

# 终止进程(SIGTERM,优雅终止)
kill 1234

# 强制终止进程(SIGKILL)
kill -9 1234

# 查看所有信号
kill -l

# 常用信号:
# SIGTERM (15) - 优雅终止
# SIGKILL (9)  - 强制终止
# SIGHUP (1)   - 重新加载配置

# 按名称杀进程
killall nginx
killall java

# 按模式杀进程
pkill -f "python.*script"

# 杀特定用户的进程
pkill -u www-data

# 优雅重启nginx
kill -HUP $(cat /var/run/nginx.pid)

4. pgrep - 查找进程PID

# 查找nginx进程PID
pgrep nginx

# 查找java进程并显示命令
pgrep -a java

# 查找特定用户的进程
pgrep -u nginx

# 查找并杀进程
pgrep nginx | xargs kill -9

5. nice/renice - 进程优先级调整

# 以优先级10启动进程
nice -n 10 command

# 调整进程优先级
renice -n 5 -p 1234

# 降低特定进程优先级
renice +10 -p 1234

6. nohup - 后台运行

# 后台运行,忽略挂起信号
nohup command &

# 输出到指定文件
nohup command > output.log 2>&1 &

# 后台运行python脚本
nohup python script.py > app.log 2>&1 &

7. screen/tmux - 会话管理

# screen
screen -S session_name      # 创建会话
screen -r session_name      # 恢复会话
screen -ls                  # 列出所有会话
Ctrl+a d                    # 分离会话

# tmux(更推荐)
tmux new -s session_name    # 创建会话
tmux attach -t session_name # 恢复会话
tmux ls                     # 列出会话
Ctrl+b d                    # 分离会话

8. jobs/bg/fg - 后台任务管理

# 查看后台任务
jobs

# 将任务放到后台
bg %1

# 将任务调到前台
fg %1

# 启动时放后台
command &

四、网络测试与诊断命令

1. ping - 网络连通性测试

# 测试网络连通性
ping google.com

# 指定ping次数
ping -c 4 8.8.8.8

# 指定包大小
ping -s 1024 192.168.1.1

# 持续ping并显示时间戳
ping -D google.com

2. curl - HTTP请求工具

# 查看网页内容
curl https://www.google.com

# 仅显示响应头
curl -I https://www.google.com

# 下载文件
curl -O https://example.com/file.zip
curl -o filename.zip https://example.com/file.zip

# POST请求
curl -X POST -d "param1=value1&param2=value2" https://api.example.com

# 发送JSON数据
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com

# 添加请求头
curl -H "Authorization: Bearer token" https://api.example.com

# 显示详细信息
curl -v https://www.google.com

# 测试响应时间
curl -o /dev/null -s -w "%{time_total}\n" https://www.google.com

# 测试网站状态码
curl -s -o /dev/null -w "%{http_code}\n" https://www.google.com

# 模拟表单提交
curl -F "file=@test.txt" https://upload.example.com

3. wget - 文件下载工具

# 下载文件
wget https://example.com/file.zip

# 指定输出文件名
wget -O custom_name.zip https://example.com/file.zip

# 后台下载
wget -b https://example.com/largefile.zip

# 断点续传
wget -c https://example.com/file.zip

# 递归下载网站
wget -r -np -k https://www.example.com/

# 限速下载
wget --limit-rate=200k https://example.com/file.zip

4. netstat - 网络状态查看(传统工具)

# 查看所有TCP/UDP连接
netstat -tunap

# 查看监听端口
netstat -tlnp

# 查看路由表
netstat -rn

# 查看网络接口统计
netstat -i

# 统计TCP状态数量
netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'

# 查看端口占用
netstat -tlnp | grep :8080

5. ss - 网络状态查看(推荐,更快)

# 查看所有TCP连接
ss -tan

# 查看所有监听端口
ss -tlnp

# 查看进程打开的socket
ss -ltnp

# 显示进程信息
ss -tulpn

# 显示连接摘要
ss -s

# 查看特定端口
ss -tlnp | grep :80

# 过滤状态
ss state established
ss state time-wait

6. tcpdump - 网络抓包

# 抓取所有包
tcpdump

# 抓取特定网卡
tcpdump -i eth0

# 抓取特定端口
tcpdump -i eth0 port 80

# 抓取特定主机
tcpdump host 192.168.1.100

# 抓取特定IP的端口
tcpdump host 192.168.1.1 and port 22

# 抓取并保存到文件
tcpdump -i eth0 -w capture.pcap

# 读取抓包文件
tcpdump -r capture.pcap

# 只抓100个包
tcpdump -c 100

# 显示包内容(不解析域名和端口)
tcpdump -nn

# 抓取HTTP请求
tcpdump -i eth0 -s 0 -A 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

# 抓取POST请求
tcpdump -i eth0 -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'

7. nslookup/dig - DNS查询

# nslookup
nslookup google.com
nslookup google.com 8.8.8.8

# dig(更强大)
dig google.com

# 查询特定DNS服务器
dig @8.8.8.8 google.com

# 反向查询
dig -x 8.8.8.8

# 查询MX记录
dig mx gmail.com

# 只显示答案
dig +short google.com

# 追踪DNS查询路径
dig +trace google.com

8. traceroute - 路由追踪

# 追踪到目标的路由
traceroute google.com

# 指定接口
traceroute -i eth0 google.com

# 使用ICMP
traceroute -I google.com

# 不解析主机名
traceroute -n google.com

9. ip - 网络配置

# 查看IP地址(替代ifconfig)
ip addr show
ip a

# 查看路由表
ip route show

# 查看邻居表
ip neigh show

# 添加路由
ip route add 192.168.2.0/24 via 192.168.1.1

# 删除路由
ip route del 192.168.2.0/24

10. ifconfig - 网络接口配置(传统)

# 查看网络接口
ifconfig

# 查看特定接口
ifconfig eth0

# 启用/禁用接口
ifconfig eth0 up
ifconfig eth0 down

# 配置IP地址
ifconfig eth0 192.168.1.100 netmask 255.255.255.0

11. nmap - 网络扫描

# 扫描开放端口
nmap 192.168.1.100

# 扫描指定端口
nmap -p 80,443 192.168.1.100

# 扫描端口范围
nmap -p 1-1000 192.168.1.100

# 扫描服务版本
nmap -sV 192.168.1.100

# 操作系统识别
nmap -O 192.168.1.100

12. nc - Netcat(网络瑞士军刀)

# 端口扫描
nc -zv 192.168.1.100 80

# 监听端口
nc -l 1234

# 文件传输
# 接收端
nc -l 1234 > received_file
# 发送端
nc 192.168.1.100 1234 < file_to_send

# 端口测试
nc -z -v -w 5 google.com 80

# 聊天
# 终端1
nc -l 1234
# 终端2
nc 192.168.1.100 1234

五、磁盘与文件系统管理

1. df - 磁盘空间查看

# 人类可读格式
df -h

# 显示文件系统类型
df -T

# 显示inode使用情况
df -i

# 查看特定文件系统
df -h /home

# 显示所有文件系统(包括伪文件系统)
df -a

df输出解读:

字段 说明
Filesystem 文件系统
Size 总大小
Used 已用
Avail 可用
Use% 使用率
Mounted on 挂载点

2. du - 目录大小查看

# 查看当前目录各子目录大小
du -sh *

# 查看指定目录大小
du -sh /var/log

# 查看当前目录总大小
du -sh .

# 显示目录下所有文件/目录大小
du -h /home

# 找出最大的10个目录
du -h / 2>/dev/null | sort -rh | head -10

# 只统计第一层目录
du -h --max-depth=1 /var/log

# 排除某些目录
du -h --exclude="*.log" /var/log

# 按时间排序文件
du -ah /var | sort -rh | head -10

3. lsblk - 列出块设备

# 列出所有块设备
lsblk

# 显示更多信息
lsblk -f

# 显示设备大小
lsblk -m

# 显示UUID
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,UUID

4. mount/umount - 挂载/卸载

# 查看挂载情况
mount

# 挂载设备
mount /dev/sdb1 /mnt/data

# 指定文件系统类型
mount -t ext4 /dev/sdb1 /mnt/data

# 挂载ISO文件
mount -o loop centos.iso /mnt/iso

# 卸载
umount /mnt/data

# 强制卸载
umount -f /mnt/data

# 懒卸载(忙碌时使用)
umount -l /mnt/data

5. fdisk - 磁盘分区

# 列出分区
fdisk -l

# 对磁盘进行分区
fdisk /dev/sdb

# 常用命令:
# m     显示帮助
# n     新建分区
# p     打印分区表
# d     删除分区
# w     保存并退出
# q     不保存退出

6. mkfs - 创建文件系统

# 创建ext4文件系统
mkfs.ext4 /dev/sdb1

# 创建xfs文件系统
mkfs.xfs /dev/sdb1

# 格式化时指定标签
mkfs.ext4 -L "data" /dev/sdb1

7. iotop - IO监控

# 安装
yum install iotop  # CentOS/RHEL
apt install iotop  # Ubuntu/Debian

# 查看进程IO
iotop

# 只显示有IO的进程
iotop -o

# 指定刷新间隔
iotop -d 1

# 显示进程PID
iotop -P

六、文件操作命令

1. ls - 列出文件

# 详细列表
ls -l

# 显示隐藏文件
ls -a

# 人类可读大小
ls -lh

# 按时间排序
ls -lt

# 按大小排序
ls -lS

# 递归列出
ls -R

# 显示文件inode
ls -i

# 彩色显示
ls --color=auto

# 组合使用
ls -lah

2. cd - 切换目录

cd /home/user          # 绝对路径
cd ..                  # 上级目录
cd ~                   # 用户主目录
cd -                   # 上次所在目录

3. pwd - 显示当前目录

pwd

4. cp - 复制文件/目录

# 复制文件
cp file1 file2

# 复制目录(递归)
cp -r dir1 dir2

# 保留属性
cp -p file1 file2

# 交互式(覆盖前确认)
cp -i file1 file2

# 显示进度
cp -v file1 file2

# 复制多个文件到目录
cp file1 file2 file3 dir/

5. mv - 移动/重命名

# 重命名文件
mv old_name new_name

# 移动文件
mv file /path/to/dir/

# 移动目录
mv dir1 /path/to/

# 交互式
mv -i file1 file2

# 强制覆盖
mv -f file1 file2

6. rm - 删除文件/目录

# 删除文件
rm file

# 删除目录(递归)
rm -r dir

# 强制删除
rm -f file

# 强制递归删除(小心使用!)
rm -rf dir

# 交互式删除
rm -i file

# 删除前确认
rm -I file*

7. mkdir - 创建目录

# 创建目录
mkdir dir

# 递归创建目录
mkdir -p dir1/dir2/dir3

# 创建多级目录
mkdir -p /data/{logs,tmp,cache}

# 创建目录并设置权限
mkdir -m 755 dir

8. rmdir - 删除空目录

rmdir dir

# 递归删除空目录
rmdir -p dir1/dir2/dir3

9. touch - 创建空文件/更新时间戳

# 创建空文件
touch file.txt

# 创建多个文件
touch file1.txt file2.txt file3.txt

# 更新文件时间戳
touch existing_file

# 指定时间
touch -t 202401011200 file.txt

10. find - 文件查找

# 按名称查找
find /path -name "*.log"

# 按类型查找(f=文件,d=目录)
find /path -type f
find /path -type d

# 按大小查找
find /path -size +100M      # 大于100M
find /path -size -10M       # 小于10M

# 按修改时间查找
find /path -mtime -7        # 7天内修改的
find /path -mtime +30        # 30天前修改的

# 按权限查找
find /path -perm 777

# 按用户查找
find /path -user nginx

# 按组查找
find /path -group nginx

# 查找后执行命令
find /path -name "*.log" -exec rm {} \;
find /path -name "*.tmp" -delete

# 查找空文件
find /path -empty

# 查找并压缩
find /var/log -name "*.log" -exec gzip {} \;

11. ln - 创建链接

# 硬链接
ln file linkfile

# 符号链接(软链接)
ln -s /path/to/file linkfile

# 创建目录软链接
ln -s /var/www/html /home/user/html

# 查看链接
ls -l linkfile

七、文本处理三剑客

1. awk - 文本分析处理工具

# 打印指定列
awk '{print $1}' file.txt          # 第1列
awk '{print $1, $3}' file.txt       # 第1和3列

# 指定分隔符
awk -F: '{print $1}' /etc/passwd   # 按冒号分隔
awk -F, '{print $2}' file.csv      # 按逗号分隔

# 条件过滤
awk '$3 > 100 {print $0}' file.txt

# 统计
awk '{sum+=$1} END {print sum}' file.txt
awk '{count++} END {print count}' file.txt

# 计算平均值
awk '{sum+=$1; count++} END {print sum/count}' file.txt

# 处理Nginx日志
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10

# 查找特定字符串
awk '/error/ {print $0}' file.txt

# BEGIN和END
awk 'BEGIN {print "Start"} {print} END {print "End"}' file.txt

# 统计每个状态码数量
awk '{count[$9]++} END {for (code in count) print code, count[code]}' access.log

# 计算每列总和
awk '{for(i=1;i<=NF;i++) sum[i]+=$i} END {for(i in sum) print i, sum[i]}' file.txt

2. sed - 流编辑器

# 替换文本
sed 's/old/new/' file.txt         # 替换第一个匹配
sed 's/old/new/g' file.txt        # 替换所有匹配

# 删除行
sed '3d' file.txt                 # 删除第3行
sed '/pattern/d' file.txt         # 删除匹配的行

# 显示指定行
sed -n '10,20p' file.txt          # 显示10-20行

# 直接修改文件
sed -i 's/old/new/g' file.txt

# 修改前备份
sed -i.bak 's/old/new/g' file.txt

# 多个替换
sed -e 's/a/A/' -e 's/b/B/' file.txt

# 使用正则表达式
sed -r 's/[0-9]+/number/g' file.txt

# 删除空行
sed '/^$/d' file.txt

# 删除注释行
sed '/^#/d' file.txt

# 在行前插入
sed '/pattern/i\insert before' file.txt

# 在行后追加
sed '/pattern/a\insert after' file.txt

3. sort - 排序

# 默认排序(按字母)
sort file.txt

# 数字排序
sort -n file.txt

# 倒序
sort -r file.txt

# 按指定列排序
sort -k2 file.txt

# 按第3列数字排序
sort -k3 -n file.txt

# 去重排序
sort -u file.txt

# 人类可读数字排序(如10K, 1M)
sort -h file.txt

# 随机排序
sort -R file.txt

# 组合使用
sort -k2 -n -r file.txt

4. uniq - 去重

# 去重相邻行
uniq file.txt

# 显示重复次数
uniq -c file.txt

# 只显示重复行
uniq -d file.txt

# 只显示不重复行
uniq -u file.txt

# 忽略指定字符数
uniq -w 5 file.txt

# 不区分大小写
uniq -i file.txt

# 组合使用(先排序再去重)
sort file.txt | uniq
sort file.txt | uniq -c | sort -rn

八、系统信息查询

1. uname - 系统信息

# 显示所有信息
uname -a

# 显示内核版本
uname -r

# 显示主机名
uname -n

# 显示处理器类型
uname -m

# 显示操作系统
uname -s

2. hostname - 主机名

hostname

# 显示IP地址
hostname -I

# 显示域名
hostname -d

3. lscpu - CPU信息

lscpu

# 查看CPU架构
lscpu | grep Architecture

# 查看CPU核心数
lscpu | grep "CPU(s)"

# 查看CPU型号
lscpu | grep "Model name"

4. lsblk - 块设备信息

lsblk

# 显示UUID
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,UUID

# 显示文件系统
lsblk -f

5. lspci - PCI设备

# 列出PCI设备
lspci

# 显示详细信息
lspci -v

# 查看网络卡
lspci | grep -i ethernet

6. lsusb - USB设备

lsusb

# 显示详细信息
lsusb -v

7. dmesg - 内核消息

# 查看内核启动信息
dmesg

# 实时监控
dmesg -w

# 查看错误信息
dmesg | grep -i error

# 显示人类可读时间
dmesg -T

# 只看最近的50条
dmesg | tail -50

8. cat /proc/* - 系统详细信息

# CPU信息
cat /proc/cpuinfo

# 内存信息
cat /proc/meminfo

# 版本信息
cat /proc/version

# 文件系统信息
cat /proc/filesystems

# 中断信息
cat /proc/interrupts

# 加载的模块
cat /proc/modules

九、定时任务与后台管理

1. crontab - 定时任务

# 编辑当前用户的定时任务
crontab -e

# 查看定时任务
crontab -l

# 删除定时任务
crontab -r

# 编辑指定用户的定时任务
crontab -e -u username

# 时间格式:分 时 日 月 周
# * * * * * command
# 0 2 * * * /path/to/script.sh  # 每天2点执行
# */5 * * * * /path/to/command  # 每5分钟执行
# 0 9-18 * * 1-5 /path/to/command  # 工作日9-18点每小时执行

# 示例:
# 每天凌晨2点备份
0 2 * * * /usr/bin/rsync -avz /data/ /backup/

# 每小时执行
0 * * * * /path/to/hourly_job.sh

# 每30分钟执行
*/30 * * * * /path/to/check.sh

# 每周一凌晨3点
0 3 * * 1 /path/to/weekly_job.sh

2. systemctl - 服务管理

# 启动服务
systemctl start nginx

# 停止服务
systemctl stop nginx

# 重启服务
systemctl restart nginx

# 重新加载配置
systemctl reload nginx

# 查看服务状态
systemctl status nginx

# 开机自启
systemctl enable nginx

# 关闭开机自启
systemctl disable nginx

# 查看所有服务
systemctl list-units --type=service

# 查看失败的服务
systemctl --failed

# 查看服务日志
journalctl -u nginx

3. service - 服务管理(传统)

service nginx start
service nginx stop
service nginx restart
service nginx status

4. chkconfig - 服务自启配置(传统)

# 查看所有服务
chkconfig --list

# 开机自启
chkconfig nginx on

# 关闭开机自启
chkconfig nginx off

# 查看指定服务
chkconfig --list nginx

十、压缩与解压

1. tar - 打包/解包

# 打包压缩(tar.gz)
tar -czvf archive.tar.gz /path/to/dir

# 解压tar.gz
tar -xzvf archive.tar.gz

# 只查看不解压
tar -tzvf archive.tar.gz

# 解压到指定目录
tar -xzvf archive.tar.gz -C /path/to/dest

# 打包排除某些文件
tar -czvf archive.tar.gz /path/to/dir --exclude="*.log" --exclude="*.tmp"

# 打包为tar.bz2
tar -cjvf archive.tar.bz2 /path/to/dir

# 解压tar.bz2
tar -xjvf archive.tar.bz2

# 参数说明:
# c - 创建
# x - 解压
# z - gzip压缩
# j - bzip2压缩
# v - 显示过程
# f - 指定文件名

2. gzip/gunzip - gzip压缩

# 压缩文件
gzip file.txt
# 生成 file.txt.gz

# 解压文件
gunzip file.txt.gz

# 压缩时保留原文件
gzip -k file.txt

# 显示压缩信息
gzip -l file.txt.gz

3. zip/unzip - zip压缩

# 压缩文件
zip archive.zip file1 file2 file3

# 压缩目录(递归)
zip -r archive.zip /path/to/dir

# 从压缩包中删除文件
zip -d archive.zip file1

# 解压
unzip archive.zip

# 解压到指定目录
unzip archive.zip -d /path/to/dir

# 不覆盖已存在文件
unzip -n archive.zip

# 覆盖已存在文件
unzip -o archive.zip

# 查看压缩包内容
unzip -l archive.zip

十一、权限管理

1. chmod - 修改权限

# 数字方式
chmod 755 script.sh          # rwxr-xr-x
chmod 644 file.txt           # rw-r--r--
chmod 777 dir/               # rwxrwxrwx

# 符号方式
chmod +x script.sh           # 添加执行权限
chmod -w file.txt            # 移除写权限
chmod u+x,g+w file.txt       # 用户添加执行,组添加写

# 递归修改目录权限
chmod -R 755 /var/www/html

# 权限数字含义:
# 4 - 读(r)
# 2 - 写(w)
# 1 - 执行(x)
# 组合:7=4+2+1(读写执行)

2. chown - 修改所有者

# 修改文件所有者
chown user file.txt

# 修改所有者和组
chown user:group file.txt

# 只修改组
chown :group file.txt

# 递归修改目录
chown -R user:group /var/www/html

# 参考参考文件
chown --reference=reference.txt target.txt

3. chgrp - 修改组

chgrp group file.txt

# 递归
chgrp -R group /path/to/dir

4. umask - 设置默认权限

# 查看当前umask
umask

# 设置umask
umask 022

# 常见值:
# 022 - 新文件权限644,目录755
# 077 - 新文件权限600,目录700

十二、用户与组管理

1. useradd/userdel - 用户管理

# 创建用户
useradd username

# 创建用户并指定家目录
useradd -d /home/username username

# 创建用户并指定shell
useradd -s /bin/bash username

# 创建用户并指定组
useradd -g groupname username

# 创建用户并添加到多个组
useradd -G group1,group2 username

# 删除用户
userdel username

# 删除用户及家目录
userdel -r username

# 修改用户密码
passwd username

2. usermod - 修改用户

# 修改用户名
usermod -l newname oldname

# 修改用户家目录
usermod -d /new/home username

# 修改用户shell
usermod -s /bin/zsh username

# 添加用户到组
usermod -aG groupname username

# 锁定用户
usermod -L username

# 解锁用户
usermod -U username

3. groupadd/groupdel - 组管理

# 创建组
groupadd groupname

# 删除组
groupdel groupname

# 修改组名
groupmod -n newname oldname

4. groups - 查看用户组

# 查看当前用户所属组
groups

# 查看指定用户所属组
groups username

5. id - 查看用户信息

id

id username

十三、实用组合命令

1. 系统监控组合

# 查看CPU占用最高的10个进程
ps aux --sort=-%cpu | head -10

# 查看内存占用最高的10个进程
ps aux --sort=-%mem | head -10

# 查看僵尸进程
ps aux | grep defunct

# 实时监控磁盘IO
watch -n 1 'iostat -x 1 2'

# 查看系统负载
watch -n 1 'uptime && free -h'

2. 日志分析组合

# 统计访问最多的IP
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10

# 统计404错误
awk '$9==404 {print $7}' access.log | sort | uniq -c | sort -rn | head -10

# 查找特定时间的日志
sed -n '/2024-01-01 10:00/,/2024-01-01 11:00/p' app.log

# 实时过滤错误日志
tail -f app.log | grep -E "ERROR|FATAL"

# 统计状态码
awk '{count[$9]++} END {for (code in count) print code, count[code]}' access.log

3. 网络诊断组合

# 查看占用端口最多的进程
ss -tlnp | awk '{print $7}' | sort | uniq -c | sort -rn

# 查看TCP连接状态统计
ss -tan | awk '{print $1}' | sort | uniq -c | sort -rn

# 查找连接数最多的IP
ss -tan | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10

# 实时监控网络流量
iftop -i eth0

4. 文件查找组合

# 查找大于100M的文件
find / -type f -size +100M -exec ls -lh {} \;

# 查找7天前修改的.log文件并删除
find /var/log -name "*.log" -mtime +7 -exec rm {} \;

# 查找空目录
find /path -type d -empty

# 查找特定用户拥有的文件
find /path -user username

# 查找特定权限的文件
find /path -perm 777

5. 磁盘清理组合

# 查找大文件
du -h / 2>/dev/null | sort -rh | head -20

# 查找已删除但仍被占用的文件
lsof | grep deleted

# 清空大文件(不删除文件)
> /var/log/large.log

# 查找重复文件
find /path -type f -print0 | xargs -0 md5sum | sort | uniq -D -w 33

常用快捷键与技巧

终端快捷键

快捷键 说明
Ctrl+C 中断当前命令
Ctrl+Z 挂起当前命令
Ctrl+D 退出当前shell
Ctrl+L 清屏
Ctrl+A 跳到命令行首
Ctrl+E 跳到命令行尾
Ctrl+U 删除光标前所有字符
Ctrl+K 删除光标后所有字符
Ctrl+W 删除光标前一个单词
Ctrl+Y 粘贴已删除的内容
Ctrl+R 搜索历史命令
!! 执行上一条命令
!n 执行历史命令中第n条
!string 执行最近一条以string开头的命令

历史命令

# 查看历史命令
history

# 执行第n条历史命令
!n

# 执行上一条命令
!!

# 清空历史
history -c

# 搜索历史(Ctrl+R)

附录:常见问题排查

1. CPU高负载排查

# 1. 查看CPU使用情况
top
htop

# 2. 查看占用CPU最高的进程
ps aux --sort=-%cpu | head -10

# 3. 查看线程级别的CPU占用
top -H

# 4. 查看CPU详情
mpstat -P ALL 1 5

2. 内存不足排查

# 1. 查看内存使用
free -h

# 2. 查看swap使用情况
vmstat 1 5
# 关注 si/so,持续>0说明内存不足

# 3. 查看占用内存最高的进程
ps aux --sort=-%mem | head -10

# 4. 查看系统内存详情
cat /proc/meminfo

3. 磁盘IO问题排查

# 1. 查看磁盘使用情况
df -h
du -sh /path

# 2. 查看磁盘IO
iostat -x 1 5

# 3. 查看IO占用高的进程
iotop -o

# 4. 查找大文件
find / -type f -size +100M

4. 网络问题排查

# 1. 测试网络连通性
ping

# 2. 查看端口占用
netstat -tlnp
ss -tlnp

# 3. 抓包分析
tcpdump

# 4. 测试DNS
nslookup
dig

5. 端口被占用

# 查看端口占用
lsof -i:8080
netstat -tlnp | grep :8080
ss -tlnp | grep :8080

# 找到进程PID后
kill -9 PID

6. 磁盘空间满但找不到大文件

# 查找已删除但仍被占用的文件
lsof | grep deleted

# 重启对应服务释放空间
# 或杀掉对应进程
kill -9 PID

总结

本文整理了Linux系统中最常用的命令,涵盖了日志查看、系统监控、进程管理、网络诊断、文件操作等多个方面。掌握这些命令,能够帮助你在日常工作中快速定位和解决问题。

推荐记忆顺序:

  1. 基础文件操作:ls, cd, pwd, cp, mv, rm
  2. 日志查看:tail, grep, less
  3. 系统监控:top, free, df, du
  4. 进程管理:ps, kill
  5. 网络诊断:ping, netstat, ss, curl

学习建议:

  • 不要死记硬背,多动手实践
  • 结合实际场景使用
  • 学会查看man手册
  • 多使用命令组合,提高效率

参考资源:

  • Linux命令手册:man command
  • 在线文档:https://linux.die.net/
  • 鸟哥的Linux私房菜
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐