1. 命令概述与分类
1.1 为什么要掌握这些命令
系统命令是运维工程师与服务器交互的基础工具。虽然现代运维工作有大量的自动化工具和平台,但掌握核心系统命令仍然必要。命令行工具响应速度快、不依赖图形界面、可以组合使用应对复杂场景。在服务器故障的紧急情况下,命令行往往是最高效的诊断和处置手段。
运维工作中常见的问题场景包括:服务器SSH连接不上、业务响应超时、磁盘空间爆满、进程异常退出。这些问题的排查往往需要在命令行环境下进行快速诊断。掌握核心命令可以大幅缩短故障排查时间,提升运维效率。
系统命令的掌握程度直接影响运维工作的效率。一位熟练掌握系统命令的工程师,可以在几分钟内定位问题,而经验不足的工程师可能需要几小时。命令的组合使用可以应对各种复杂场景,这是图形化工具难以替代的。
1.2 命令分类
本文将10个核心命令分为五类:
系统监控类包括top、htop用于进程和资源监控;vmstat用于虚拟内存统计;iostat用于磁盘IO统计。这类命令帮助运维人员快速了解系统负载情况。
网络诊断类包括netstat、ss用于网络连接状态查看;tcpdump用于网络数据包抓取;lsof用于文件与端口关联查看。这类命令是网络故障排查的利器。
磁盘分析类包括df、du用于磁盘空间分析。这类命令帮助运维人员快速定位磁盘空间问题。
文本处理类包括find、awk、sed用于文本搜索和处理。这类命令在日志分析和配置处理场景中使用频繁。
服务管理类包括systemctl、service用于服务启停管理;rsync用于数据同步。这类命令是日常运维的基本操作。
2. 命令详解
2.1 top与htop
top是Linux下最常用的进程监控命令,实时显示系统的整体状态和各个进程的资源占用情况。top默认每3秒刷新一次数据,可以通过-d参数调整刷新间隔。
top输出的第一行是系统负载信息,包含当前时间、系统运行时间、当前登录用户数、1分钟/5分钟/15分钟平均负载。负载数值如果持续高于CPU核心数,说明系统存在性能瓶颈。
top - 1030 up 100 days, 3:22, 2 users, load average: 1.25, 0.98, 0.85
load average的三个数字分别代表1分钟、5分钟、15分钟的平均负载。判断负载是否过高需要结合CPU核心数:8核CPU的负载不超过8算正常,超过8说明负载过高。
第二行是进程统计信息,显示总进程数、运行中的进程数、睡眠中的进程数、停止的进程数、僵尸进程数。僵尸进程数如果大于0,需要检查对应的父进程。
Tasks: 245 total, 3 running, 242 sleeping, 0 stopped, 0 zombie
第三行和第四行是CPU和内存使用情况的汇总。CPU行的us表示用户空间占用比例,sy表示内核空间占用比例,id表示空闲比例。如果wa(等待IO)数值持续较高,说明系统存在IO瓶颈。
%Cpu(s): 25.3 us, 5.2 sy, 0.0 ni, 68.5 id, 0.0 wa, 0.8 hi, 0.2 si, 0.0 st KiB Mem : 32768032 total, 8192000 free, 16384000 used, 8192032 buff/cache
进程列表默认按CPU使用率排序,可以通过P(大写)切换到CPU排序,M切换到内存排序,T切换到运行时间排序。按q键退出top。
top交互命令汇总:
| 按键 | 功能 |
|---|---|
| q | 退出top |
| P | 按CPU使用率排序 |
| M | 按内存使用率排序 |
| T | 按运行时间排序 |
| 1 | 切换显示每个CPU核心 |
| c | 显示完整命令行 |
| k | 终止进程 |
| r | 调整进程优先级 |
| u | 按用户过滤 |
| n | 设置显示进程数量 |
| W | 保存配置到文件 |
htop是top的增强版本,提供了更友好的界面和更多功能。htop支持鼠标操作,颜色区分不同类型进程,可以水平滚动查看完整命令行参数。htop还可以直接向进程发送信号,支持进程树视图。
htop界面布局:
CPU [|||||||||||||||||||||||||||||||||||||||] 85% Mem [|||||||||||||||||||||||||||||||||||||] 72% Swp [|| ] 5% PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 1234 nginx 20 0 128M 64M 12M R 45.2 12.5 15:32.11 nginx: worker 5678 mysql 20 0 2.1G 1.8G 156M S 25.0 5.5 2:45.33 mysqld 9012 redis 20 0 45M 32M 8M S 10.5 3.2 0:23.11 redis-server
htop常用快捷键:
| 按键 | 功能 |
|---|---|
| F1 | 帮助 |
| F2 | 设置 |
| F3 | 搜索进程 |
| F4 | 过滤器 |
| F5 | 树形视图 |
| F6 | 排序 |
| F7/F8 | 调整nice值 |
| F9 | 发送信号 |
| F10 | 退出 |
使用场景举例:服务器响应缓慢时,使用top查看是哪个进程占用CPU或内存最高。如果发现某个Java进程CPU占用100%,需要进一步使用jstack分析线程堆栈。
# 查找CPU占用最高的进程 top -c # 查看特定用户的进程 top -u nginx # 实时监控,每秒刷新 top -d 1 # 查看所有CPU核心的使用情况 top - 1 # 保存top输出到文件 top -b -n 1 > top_output.txt
2.2 netstat与ss
netstat是查看网络连接状态的经典命令,可以显示网络协议统计信息和网络连接状态。netstat的常用参数组合是-anp,其中-a显示所有连接,-n不解析主机名和服务名,-p显示进程信息。
netstat -anp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd tcp 0 48 10.0.0.5:22 192.168.1.100:54321 ESTABLISHED 1234/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 4567/cupsd tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 7890/mysqld
netstat的输出包含协议类型、本地地址、外部地址、状态、进程ID和进程名称。状态列显示TCP连接的状态,常见状态包括LISTEN(监听中)、ESTABLISHED(已建立)、TIME_WAIT(等待关闭)、CLOSE_WAIT(等待关闭)。
TCP连接状态说明:
| 状态 | 说明 |
|---|---|
| LISTEN | 等待连接,服务器socket正在监听 |
| ESTABLISHED | 连接已建立,双方可以传输数据 |
| TIME_WAIT | 等待足够时间确保对方收到关闭请求 |
| CLOSE_WAIT | 等待本地应用程序关闭连接 |
| SYN_SENT | 正在发送连接请求 |
| SYN_RECV | 收到连接请求并发送确认 |
| FIN_WAIT1 | 主动关闭,发送FIN |
| FIN_WAIT2 | 收到确认,等待对方关闭 |
| CLOSING | 双方同时关闭 |
| LAST_ACK | 最后确认,等待接收 |
使用netstat可以统计当前各种状态的连接数量:
# 统计ESTABLISHED连接数量
netstat -an | grep ESTABLISHED | wc -l
# 统计TIME_WAIT连接数量
netstat -an | grep TIME_WAIT | wc -l
# 统计各状态的连接数量
netstat -an | awk'/^tcp/ {print $6}'| sort | uniq -c
# 查看监听中的端口
netstat -lntp
# 查看所有TCP连接
netstat -anp | grep tcp
# 查看特定端口的连接
netstat -anp | grep :80
# 查看网络统计信息
netstat -s
ss是netstat的现代替代工具,采用iproute2架构,性能更好且输出信息更详细。ss -tunap可以列出所有TCP和UDP连接,显示完整的五元组信息和进程信息。
ss -tunap
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
tcp ESTAB 0 0 10.0.0.5:22 192.168.1.100:54321 users:(("sshd",pid=5678,fd=4))
tcp LISTEN 0 80 0.0.0.0:3306 0.0.0.0:* users:(("mysqld",pid=7890,fd=10))
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:* users:(("dhclient",pid=1011,fd=5))
ss相比netstat的优势在于查询速度。在大量连接的场景下,netstat可能需要数秒才能返回结果,ss几乎是即时返回。ss还支持更多的过滤条件。
# 查看所有TCP连接 ss -t # 查看所有UDP连接 ss -u # 查看监听中的 sockets ss -l # 显示进程信息 ss -p # 显示概要统计 ss -s # 过滤特定状态 ss -t state established # 过滤特定端口 ss -t sport = :80 # 过滤特定地址 ss -t dst 10.0.0.1 # 组合过滤 ss -t state established'( sport = :http or dport = :http )' # 显示详细信息 ss -tunap
使用场景举例:服务端口连接数过多导致性能下降时,使用ss -s统计各类状态的连接数量,使用ss -tan dst :8080查看连接8080端口的所有连接,定位异常的客户端IP。
# 统计连接状态分布
ss -s
# 查看8080端口的所有连接
ss -tan dst :8080
# 查看来自特定IP的连接
ss -tan src 192.168.1.100
# 查看连接数最多的前10个IP
ss -tan | awk'{print $5}'| cut -d: -f1 | sort | uniq -c | sort -rn | head -10
# 查看socket缓冲区大小
ss -tm
# 查看TCP握手详细信息
ss -ti
2.3 lsof
lsof是list open files的缩写,用于查看进程打开的文件。在Linux系统中,一切皆文件,包括网络连接、管道、设备文件等。lsof通过分析内核的进程文件表获取信息。
lsof -p 1234 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 1234 nginx cwd DIR 253,1 4096 128 / nginx 1234 nginx rtd DIR 253,1 4096 128 / nginx 1234 nginx txt REG 253,1 123456 1024 /usr/sbin/nginx nginx 1234 nginx mem REG 253,1 789012 2048 /lib/x86_64/libcrypto.so nginx 1234 nginx 0r CHR 1,3 0t0 1024 /dev/null nginx 1234 nginx 1w REG 253,1 123456 4096 /var/log/nginx/access.log nginx 1234 nginx 2w REG 253,1 8192 4100 /var/log/nginx/error.log nginx 1234 nginx 3u IPv4 12345 0t0 TCP *:80 (LISTEN) nginx 1234 nginx 4u IPv4 12346 0t0 TCP *:443 (LISTEN)
lsof的常用参数包括:-i显示网络连接文件,-p指定进程ID,-u指定用户,-c指定命令名称。不带参数运行lsof会列出所有打开的文件,信息量很大,通常需要配合过滤条件使用。
# 查看占用80端口的进程 lsof -i:80 # 查看所有网络连接 lsof -i # 查看特定协议的网络连接 lsof -i TCP lsof -i UDP # 查看特定进程打开的文件 lsof -p 1234 # 查看特定用户打开的文件 lsof -u nginx # 查看特定命令打开的文件 lsof -c nginx # 查看目录下的文件被哪些进程使用 lsof +D /var/log # 递归查看目录下被使用的文件 lsof +D /var/log/nginx/ # 查看文件被哪些进程使用 lsof /var/log/nginx/access.log # 查看IPv6连接 lsof -i6 # 查看端口范围 lsof -i:80-443 # 查看X Window连接 lsof -i @localhost:6000
使用场景举例:磁盘空间显示已满,但找不到大文件时,使用lsof +D /path检查是否有进程打开了已删除的文件。文件删除后,磁盘空间不会立即释放,只有进程关闭文件句柄后才会释放。
# 检查打开已删除文件的进程 lsof +L1 # 检查打开大量文件的进程 lsof -p 1234 | wc -l # 查看某个用户的所有网络连接 lsof -a -u nginx -i # 查看所有Listening sockets lsof -i -sTCP:LISTEN # 查看网络文件系统 lsof -N # 查看字符设备 lsof -c ^nginx # 查看Unix Domain Socket lsof -U # 查看FD类型 lsof -d txt,mem # 检查特定UID用户 lsof -u 1000 # 组合条件 lsof -u nginx -i -a -p 1234
2.4 df与du
df(disk free)用于查看文件系统磁盘空间使用情况,是排查磁盘空间问题的第一个命令。df -h以人类可读格式显示,-T显示文件系统类型。
df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 100G 45G 55G 45% / /dev/sda2 200G 120G 80G 60% /var/lib/kubelet /dev/sdb1 500G 300G 200G 60% /var/lib/containerd tmpfs 64M 0 64M 0% /dev/shm tmpfs 7.8G 12M 7.8G 1% /run /dev/mapper/centos-home 50G 48G 2G 96% /home
df的输出包含文件系统名称、总大小、已用大小、可用大小、已用百分比、挂载点。已用百分比是判断磁盘空间是否紧张的关键指标,建议设置告警阈值。
inode使用情况也需要关注。df -i显示inode使用情况。inode用于存储文件的元数据,当inode耗尽时,即使磁盘还有空间也无法创建新文件。大量小文件场景容易出现inode耗尽问题。
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 6553600 234567 6319033 4% /
/dev/sda2 32768000 456789 32311211 2% /var
/dev/mapper/centos-home
3276800 123456 3153344 4% /home
du(disk usage)用于分析目录和文件的磁盘使用量。du -sh /path显示指定路径的总大小,-h以人类可读格式,-s汇总统计。du -sh *显示当前目录下各子目录的大小。
du -sh /var 45G /var du -sh /var/* 12G /var/log 8G /var/lib 5G /var/cache 20G /var/spool
du支持按时间排序。du --time -sh *按修改时间显示大小。du -ah --max-depth=1显示指定深度的文件分布情况。
# 查看当前目录各子目录大小
du -sh *
# 查看特定目录大小
du -sh /var/log
# 显示文件大小
du -ah /var/log
# 按大小排序显示
du -sh * | sort -h
# 显示目录和文件大小(限制深度)
du -ah --max-depth=1 /var
# 显示修改时间
du -sh --time=modification /var/*
# 排除特定目录
du -sh --exclude='*.log'/var
# 查看所有文件系统使用情况
df -ah
# 查看inode使用情况
df -i
# 统计某类型文件大小
find /var -name"*.log"-execdu -ch {} + | tail -1
# 查看磁盘IO
iostat -x 1
使用场景举例:磁盘空间不足时,使用du -sh /*从根目录开始逐级排查,找到占用空间最大的目录或文件。日志目录、临时文件目录、缓存目录通常是磁盘空间的主要消耗者。
# 从根目录开始逐级排查
du -h --max-depth=1 /
# 查看特定目录下最大的10个文件
find /var -typef -execdu -h {} + | sort -rh | head -10
# 查看日志文件大小分布
find /var/log-typef -name"*.log"-execdu -h {} + | sort -rh
# 查看临时目录
du -sh /tmp
# 查看用户目录
du -sh /home/*
# 统计特定用户使用的空间
du -sh /home/nginx
# 排除已删除但被进程打开的文件
du -h --exclude='proc'/proc
# 实时监控目录变化
watch -n 1'du -sh /var'
2.5 iostat与vmstat
iostat是iostatistics的缩写,用于监控系统磁盘IO和CPU使用情况。iostat -xz 1每秒刷新一次详细统计,-x显示扩展统计,-z忽略没有活动的设备。
iostat -xz 1
Linux 6.1.0-k8s (node-1) 03/20/2026 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
15.23 0.00 5.12 2.34 0.00 77.31
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await %util
sda 0.12 12.34 2.45 45.67 198.23 4567.89 98.45 1.23 5.67 2.34 6.12 5.67
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
iostat输出的关键指标包括:%util设备利用率,接近100%时说明设备达到IO瓶颈;r/s和w/s每秒读写次数;rkB/s和wkB/s每秒读写数据量;await平均IO等待时间;avgqu-sz平均队列长度。
await和%util是两个最关键的指标。await高但%util不高,说明IO延迟大但设备本身未饱和,可能是存储网络延迟问题。%util高但await正常,说明设备本身是瓶颈。
vmstat(virtual memory statistics)用于查看虚拟内存统计信息。vmstat 1每秒刷新一次,-s显示详细统计表。
vmstat 1 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 0 2048576 312456 4567890 0 0 5 12 1234 8567 25 5 68 2 0
vmstat输出的关键列包括:r运行队列长度,表示等待CPU的进程数;b阻塞队列长度,表示等待IO的进程数;swpd虚拟内存使用量;free空闲内存;si/so换入换出内存量;us/sy/id CPU用户/系统/空闲比例。
# 每秒显示一次 vmstat 1 # 显示5次后退出 vmstat 1 5 # 显示详细统计 vmstat -s # 显示内存统计(MB为单位) vmstat -S m 1 # 显示磁盘统计 vmstat -d # 显示每CPU核心统计 vmstat -p /dev/sda1 # 配合grep监控特定指标 vmstat 1 | grep -E'r|wa'
使用场景举例:系统负载高但CPU空闲时,使用vmstat查看是否有大量进程在等待IO。使用iostat查看是哪个设备存在IO瓶颈。如果%util接近100%,说明设备处理能力不足,需要考虑升级存储或优化IO模式。
# 综合使用 iostat -xz 1 & vmstat 1 & pidstat -d 1 # 查看CPU和IO关系 iostat -x 1 5 # 监控特定设备 iostat -p sda 1 # 查看CPU频率 vmstat -s | grep -i cpu # 监控上下文切换 vmstat 1 10 # 查看内存详情 vmstat -s -S m # 监控系统负载 uptime w
2.6 strace与ltrace
strace用于追踪进程的系统调用和信号,是排查程序行为和性能问题的有力工具。strace -f -p PID追踪指定进程及其子进程,-c统计各类系统调用次数和耗时。
strace -c -p 1234 strace: Process 1234 attached ^Cstrace: Process 1234 detached % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 45.23 0.123456 123 1000 read 25.67 0.070123 70 1000 write 15.34 0.041890 41 1000 select 10.12 0.027654 27 1000 fcntl 3.45 0.009432 10 1000 gettimeofday ------ ----------- ----------- --------- --------- ---------------- 100.00 0.272555 5000 total
strace的输出包含每行一个系统调用,显示调用号、函数名、参数和返回值。read(fd, buffer, count)显示读取操作,write(fd, buffer, count)显示写入操作,openat(pathname, flags)显示文件打开操作。
strace -T显示每个系统调用的耗时,-tt显示微秒级时间戳。耗时信息对于性能分析非常重要,长时间等待的系统调用往往是性能瓶颈。
# 追踪进程系统调用 strace -p 1234 # 追踪并显示返回值 strace -i -p 1234 # 统计系统调用次数 strace -c -p 1234 # 显示时间戳 strace -t -p 1234 # 显示微秒级时间 strace -tt -p 1234 # 显示每个调用耗时 strace -T -p 1234 # 追踪特定系统调用 strace -e trace=read,write,open,close -p 1234 # 追踪网络相关调用 strace -e trace=network -p 1234 # 追踪信号 strace -e trace=signal -p 1234 # 追踪子进程 strace -f -p 1234 # 输出到文件 strace -o /tmp/strace.log -p 1234 # 限制输出行数 strace -q -p 1234 # 显示系统调用号 strace -r -p 1234
ltrace用于追踪进程调用的库函数。使用ltrace -p PID追踪指定进程,-c统计库函数调用次数。ltrace主要追踪动态库函数调用,适合分析程序与库的交互。
# 追踪库函数调用 ltrace -p 1234 # 统计库函数调用次数 ltrace -c -p 1234 # 追踪特定库函数 ltrace -e malloc,free -p 1234 # 显示返回值 ltrace -i -p 1234 # 追踪子进程 ltrace -f -p 1234 # 输出到文件 ltrace -o /tmp/ltrace.log -p 1234
使用场景举例:程序卡住无响应时,使用strace -p PID查看进程正在执行的系统调用。如果显示connect或read阻塞,说明可能在等待网络通信或文件读取。如果某个系统调用反复返回-1,说明可能存在系统资源或权限问题。
# 分析nginx worker进程 strace -p $(pgrep -f"nginx: worker"| head -1) -c # 分析进程正在做什么 strace -p 1234 2>&1 | head -50 # 追踪失败的调用 strace -e trace=open,openat -p 1234 2>&1 | grep -E"ENOENT|Permission" # 追踪TCP连接 strace -e trace=socket,connect,accept -p 1234 # 分析文件操作 strace -e trace=open,read,write,close -p 1234 # 分析CPU密集型进程 strace -c -p 1234 # 追踪正在运行的命令 strace -f -o /tmp/trace.log# 分析动态库加载 ltrace -e dlopen -p 1234
2.7 tcpdump与Wireshark
tcpdump是命令行网络抓包工具,用于捕获和分析网络数据包。tcpdump -i eth0 -nn host 10.0.0.1捕获eth0网卡上与10.0.0.1通信的数据包,-nn不解析主机名和服务名。
tcpdump -i eth0 -nn host 10.0.0.1 tcpdump: verbose output suppressed, use -v or -vvforfull protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 1030.123456 IP 10.0.0.1.443 > 10.0.0.2.54321: Flags [P.], seq 12345:12356, ack 67890, win 502, length 11 1030.123789 IP 10.0.0.2.54321 > 10.0.0.1.443: Flags [.], ack 12356, win 502, length 0 1030.124012 IP 10.0.0.1.443 > 10.0.0.2.54321: Flags [P.], seq 12356:12367, ack 67890, win 502, length 11
tcpdump的输出格式是:时间戳 协议 源地址.端口 > 目标地址.端口 标志信息。TCP包的标志信息包括S(SYN)、F(FIN)、P(PUSH)、R(RST)。三次握手显示为S、S.、F。TCP连接终止显示为F.、.F。
tcpdump支持丰富的过滤表达式。tcpdump port 80 and tcp[13]&2!=0捕获所有TCP的SYN包(发起连接)。tcpdump tcp and greater 1000捕获大于1000字节的TCP包。
# 捕获特定接口 tcpdump -i eth0 # 捕获所有接口 tcpdump -i any # 捕获特定主机 tcpdump host 10.0.0.1 # 捕获特定端口 tcpdump port 80 # 捕获特定协议 tcpdump icmp # 捕获特定网络 tcpdump net 192.168.1.0/24 # 组合条件 tcpdump -i eth0 host 10.0.0.1 and port 80 # 不解析地址和端口 tcpdump -nn # 显示完整数据包内容 tcpdump -X # 显示ASCII内容 tcpdump -A # 保存到文件 tcpdump -w /tmp/capture.pcap # 读取抓包文件 tcpdump -r /tmp/capture.pcap # 显示详细输出 tcpdump -v # 显示更详细输出 tcpdump -vv # 限制抓包数量 tcpdump -c 100 # 限制抓包大小 tcpdump -s 100 # 打印链路层头 tcpdump -e
Wireshark是图形化的网络协议分析工具,提供更强大的分析功能。Wireshark支持更丰富的协议解析,可以自动重组TCP流,提供统计和图表功能。
Wireshark常用过滤器:
# 显示过滤器 ip.addr == 10.0.0.1 tcp.port == 80 tcp.flags.syn == 1 tcp.flags.reset == 1 http.request.method =="GET" dns.qry.name contains"example.com" # 捕获过滤器 host 10.0.0.1 port 80 tcp[tcpflags] & (tcp-syn|tcp-fin) != 0
使用场景举例:服务连接超时排查。使用tcpdump -i any host target_ip and port target_port -w capture.pcap在问题发生时捕获数据包,然后在Wireshark中分析TCP三次握手是否正常,是否存在丢包或重传。
# 捕获HTTP请求 tcpdump -i any -A'tcp port 80 andtcp[((tcp[12:1] & 0xf0) >> 2):2] = 0x474554' # 捕获DNS查询 tcpdump -i any -A'udp port 53' # 捕获TCP重传 tcpdump -i any'tcp[tcpflags] & (tcp-retrans) != 0' # 捕获TCP连接建立 tcpdump -i any'tcp[tcpflags] & (tcp-syn) != 0 andtcp[tcpflags] & (tcp-ack) == 0' # 捕获SSL/TLS握手 tcpdump -i any'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x160301' # 分析网络延迟 tcpdump -i any -tttt'tcp port 80' # 捕获ICMP tcpdump -i any'icmp' # 捕获ARP tcpdump -i any'arp' # 捕获VLAN标记 tcpdump -i any -vlan
2.8 find、awk与sed
find用于在目录树中查找文件,支持按文件名、类型、大小、时间等条件搜索。
# 基本查找
find /path -name"*.log"
find /path -typef
find /path -typed
# 按权限查找
find /path -perm 644
find /path -perm -u+x
# 按大小查找
find /path -size +100M
find /path -size -1G
# 按时间查找
find /path -mtime -7 # 7天内修改
find /path -atime +30 # 30天前访问
find /path -ctime 0 # 当天状态改变
# 按所有者查找
find /path -user nginx
find /path -group www-data
# 执行动作
find /path -name"*.tmp"-delete
find /path -name"*.log"-execrm {} ;
find /path -name"*.log"-execls -lh {} ;
# 排除目录
find /path -path"*/proc"-prune -o -typef -print
# 查找空文件
find /path -typef -empty
# 查找符号链接
find /path -typel
# 查找最近修改的文件
find /path -mmin -60 # 60分钟内修改
# 查找并移动
find /path -name"*.bak"-execmv {} /backup/ ;
# 查找并压缩
find /path -name"*.log"-execgzip {} ;
awk是一种文本处理语言,适合处理结构化文本数据。
# 基本用法
awk'{print $1, $3}'file # 打印第1和第3列
awk -F:'{print $1}'/etc/passwd # 指定分隔符
awk'{print NF}'file # 打印列数
awk'{print NR}'file # 打印行号
# 条件过滤
awk'/pattern/ {print $0}'file # 包含模式的行
awk'$3 > 100 {print $0}'file # 第3列大于100
awk'$1 == "value" {print $0}'file# 第1列等于value
# 计算统计
awk'{sum+=$1} END {print sum}'file
awk'{sum+=$1; count++} END {print sum/count}'file
awk'{if($1>max) max=$1} END {print max}'file
# 多字段处理
awk -F:'{print $1, $NF}'/etc/passwd
# 字符串函数
awk'{print toupper($1)}'file
awk'{print length($1)}'file
awk'{print substr($1, 1, 5)}'file
# 格式化输出
awk'{printf "%-10s %10.2f
", $1, $2}'file
日志分析awk示例:
# Nginx访问日志分析
# 格式: $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent
awk'{print $1}'access.log | sort | uniq -c | sort -rn | head -20 # TOP 20 IP
awk'{print $9}'access.log | sort | uniq -c | sort -rn | head -10 # TOP 10 状态码
awk'{sum+=$10} END {print sum/1024/1024 " MB"}'access.log # 总流量
awk'$9 >= 500 {count++} END {print count}'access.log # 5xx错误数
# Apache日志分析
awk'{print $7}'access.log | sort | uniq -c | sort -rn | head -10 # TOP URL
# SSH登录日志分析
awk'/Failed password/ {print $11}'/var/log/secure | sort | uniq -c | sort -rn | head -10
awk'/Accepted/ {print $9, $11}'/var/log/secure
sed是一种流编辑器,用于对文本进行替换、删除、插入等操作。
# 基本替换 sed's/old/new/'file # 替换每行第一个 sed's/old/new/g'file # 替换所有 sed's/old/new/2'file # 替换每行第二个 # 原地编辑 sed -i's/old/new/g'file # 直接修改文件 sed -i.bak's/old/new/g'file # 修改并备份 # 多重替换 sed -e's/a/b/'-e's/c/d/'file # 排除行 sed'/pattern/d'file # 删除匹配行 sed'/pattern/!d'file # 删除不匹配行 # 插入和追加 sed'1iheader'file # 在第1行前插入 sed'1aline'file # 在第1行后追加 sed'/pattern/aline'file # 在匹配行后追加 # 替换多行 sed'/start/,/end/s/old/new/g'file # 使用正则 sed -r's/regex/new/g'file sed's/.*prefix(.*)suffix.*/1/'file # 捕获组 # 打印行 sed -n'10,20p'file # 打印第10-20行 sed -n'/pattern/p'file # 打印匹配行 # 替换tab为空格 sed's/ / /g'file # 去除空格 sed's/^[ ]*//'file # 行首 sed's/[ ]*$//'file # 行尾 sed's/[ ]*//g'file # 所有空格
使用场景举例:分析nginx访问日志统计IP访问量。
# 统计IP访问量
awk'{print $1}'access.log | sort | uniq -c | sort -rn | head -20
# 统计状态码分布
awk'{print $9}'access.log | sort | uniq -c | sort -rn
# 统计带宽使用
awk'{sum+=$10} END {print sum/1024/1024 " MB"}'access.log
# 统计5xx错误
awk'$9 ~ /^5/ {count++} END {print count}'access.log
# 统计访问最频繁的URL
awk'{print $7}'access.log | sort | uniq -c | sort -rn | head -10
# 统计每秒请求数
awk'{print $4}'access.log | cut -d: -f2,3,4 | sort | uniq -c | sort -rn | head -10
# 统计HTTP方法分布
awk'{print $6}'access.log | tr -d'"'| sort | uniq -c | sort -rn
# 实时分析日志
tail -f access.log | awk'{print $1}'| sort | uniq -c | sort -rn
# 查找异常IP
awk'{print $1}'access.log | sort | uniq -c | sort -rn | awk'$1 > 1000 {print $2}'
# 替换日志中的敏感信息
sed -i's/password=[^&]*/password=REDACTED/g'app.log
sed -i's/token=[^&]*/token=REDACTED/g'app.log
2.9 rsync
rsync是远程数据同步工具,支持增量同步和本地同步。
# 本地同步 rsync -avzsource/ dest/ # 远程同步 rsync -avzsource/ user@host:/dest/ rsync -avz user@host:/source/ dest/ # SSH指定端口 rsync -avz -e"ssh -p 2222"source/ user@host:/dest/ # 显示差异 rsync -avzisource/ dest/ # 增量同步(只传输变化的部分) rsync -avz --deletesource/ dest/ # 排除文件 rsync -avz --exclude='*.log'source/ dest/ rsync -avz --exclude-from='exclude.txt'source/ dest/ # 包含文件 rsync -avz --include='*.php'--include='*/'--exclude='*'source/ dest/ # 压缩传输 rsync -avz --compresssource/ dest/ # 保留权限和时间戳 rsync -avzsource/ dest/ # 显示进度 rsync -avz --progresssource/ dest/ # 限制带宽 rsync -avz --bwlimit=1000source/ dest/ # dry-run(模拟执行) rsync -avznsource/ dest/ # 同步符号链接 rsync -avzLsource/ dest/ # 保留硬链接 rsync -avzHsource/ dest/
rsync的核心优势是增量同步。只传输源和目标之间差异的部分,通过快速检查文件大小和修改时间实现。
# 文件权限对应关系 # rsync参数 -p = --perms # rsync参数 -o = --owner # rsync参数 -g = --group # rsync参数 -t = --times # rsync参数 -D = --devices --specials # 完整参数示例 rsync -avz --delete --exclude='.git' --exclude='node_modules' --exclude='*.log' --progress --stats source/ user@host:/dest/
使用场景举例:网站文件同步。
# 保持两台Web服务器内容一致 rsync -avz --delete /var/www/html/ user@web-server:/var/www/html/ # 同步到多个目标 forhostinweb1 web2 web3;do rsync -avz /var/www/html/ user@$host:/var/www/html/ done # 定时同步脚本 0 */6 * * * rsync -avz --delete /data/ backup@backup-server:/backup/ # 同步时排除特定目录 rsync -avz --exclude='cache'--exclude='tmp'/var/www/html/ /dest/ # 使用rsync daemon方式 rsync -avz /source/ rsync://user@host/module/ # 限速传输避免影响业务 rsync -avz --bwlimit=5000 /source/ /dest/
2.10 systemctl与service
systemctl是systemd系统的管理工具,是现代Linux发行版的标准服务管理命令。
# 服务管理 systemctl start nginx # 启动服务 systemctl stop nginx # 停止服务 systemctl restart nginx # 重启服务 systemctl reload nginx # 重新加载配置 systemctl status nginx # 查看状态 systemctlenablenginx # 开机自启 systemctldisablenginx # 取消开机自启 systemctl daemon-reload # 重载systemd配置 # 查看服务 systemctl list-units --type=service # 列出所有服务 systemctl list-units --type=service --state=running systemctl list-dependencies nginx # 服务依赖关系 # 服务日志 journalctl -u nginx # 服务日志 journalctl -u nginx -n 50 # 最近50行 journalctl -u nginx -f # 实时跟踪 journalctl --since"1 hour ago"# 指定时间范围 # 服务配置 systemctl show nginx # 显示服务配置 systemctl cat nginx # 查看服务文件 systemctl edit nginx # 编辑服务配置
service是较老的服务管理命令,兼容SysVinit脚本。
# 基本用法 service nginx start service nginx stop service nginx restart service nginx status service --status-all # 列出所有服务 # 检查特定服务 service sshd status service httpd configtest # 检查配置语法
systemd服务文件示例:
[Unit] Description=nginx HTTP Server Documentation=https://nginx.org/en/docs/ After=network.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStart=/usr/sbin/nginx -g daemon on; master_process on; ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
使用场景举例:服务故障排查。
# 查看服务状态 systemctl status nginx # 查看详细日志 journalctl -u nginx -n 100 --no-pager # 检查配置文件语法 nginx -t # 测试服务启动 systemctl start nginx # 查看服务是否监听端口 ss -tlnp | grep nginx # 检查进程 ps aux | grep nginx # 强制重启 systemctl force-reload nginx # 屏蔽服务 systemctl mask nginx systemctl unmask nginx
3. 命令组合实战场景
3.1 服务器负载高排查
服务器负载高是常见的运维问题,排查思路是逐步定位是CPU、IO还是内存问题。
第一步,使用top或vmstat 1查看系统负载和CPU使用情况。如果CPU的us和sy很高,说明是CPU密集型任务占用大量CPU资源。如果CPU的wa很高,说明是IO等待导致。
# 查看系统状态 top vmstat 1 5 # 查看CPU使用情况 mpstat -P ALL 1 # 查看进程状态 ps aux --sort=-%cpu | head -10 ps aux --sort=-%mem | head -10
第二步,如果确定是CPU问题,使用top按CPU排序查看最消耗CPU的进程。如果Java进程CPU占用高,使用jstack获取线程堆栈,分析哪个线程占用CPU高。
# 获取Java进程PID jps -l ps aux | grep java # 获取线程堆栈 jstack PID > threaddump.txt # 获取CPU使用最高的线程 top -Hp PID # 获取进程的CPU使用情况 pidstat -p PID 1 5
第三步,如果确定是IO问题,使用vmstat查看b列是否有进程在等待IO。使用iostat查看哪个设备的%util高。
# 查看IO等待 vmstat 1 # 查看各设备IO情况 iostat -xz 1 # 查看哪个进程在进行IO iotop # 查看具体IO操作 lsof +D /
第四步,确定问题进程后,分析问题原因。CPU高可能是死循环、大量计算、夜间批处理任务触发。IO高可能是大量日志写入、数据库写入、文件扫描。
3.2 网络连接问题排查
网络连接问题的表现可能是SSH连接不上、服务访问超时、连接数异常等。
第一步,使用ping测试网络连通性。ping不通可能的原因包括:网络配置错误、防火墙拦截、链路故障。
# 测试基本连通性 ping -c 4 8.8.8.8 ping -c 4 gateway # 路由追踪 traceroute 8.8.8.8 mtr 8.8.8.8 # DNS测试 nslookup google.com dig google.com
第二步,如果ping通但服务访问异常,使用netstat或ss查看连接状态。
# 查看连接统计
netstat -an | awk'/^tcp/ {print $6}'| sort | uniq -c
ss -s
# 查看监听端口
netstat -tlnp
ss -tlnp
# 查看特定连接状态
netstat -an | grep ESTABLISHED
ss -tan state established
第三步,使用tcpdump抓包分析。
# 抓取特定端口的包 tcpdump -i any port 80 -nn # 抓取特定主机的包 tcpdump -i any host 10.0.0.1 -nn # 保存到文件 tcpdump -i any port 80 -w capture.pcap # 分析三次握手 tcpdump -i any host target_ip and port target_port -nn
第四步,检查防火墙规则。
# 查看iptables规则 iptables -L -n -v iptables -L -n -v --line-numbers # 查看端口监听 netstat -tlnp ss -tlnp # 检查防火墙状态 systemctl status firewalld systemctl status iptables
3.3 磁盘空间问题排查
磁盘空间不足会导致服务异常、写入失败等问题。
第一步,使用df -h查看各文件系统的空间使用情况。
df -h df -i
第二步,使用du -sh /*从根目录逐级排查,找出占用空间大的目录。
du -h --max-depth=1 / du -sh /var/* du -sh /home/*
第三步,定位到具体目录后,使用du -ah --max-depth=1排序,找出占用空间最大的文件或子目录。
du -ah /var | sort -rh | head -20
find /var -typef -execdu -h {} + | sort -rh | head -20
第四步,清理时注意区分日志文件和普通文件。日志文件可以使用日志轮转工具处理后删除旧日志。
# 查看大文件
find / -typef -size +100M -execls -lh {} ;
# 查看被删除但未释放的文件
lsof +L1
# 清理旧日志
find /var/log-name"*.gz"-mtime +30 -delete
# 清理缓存
yum clean all
apt-get clean
4. 命令选择决策树
4.1 按场景选择命令
遇到系统卡顿或响应慢时,首先使用top或vmstat 1查看系统整体状态。
# 系统整体状态 vmstat 1 5 # 查看CPU、内存、IO综合情况 top # 查看进程占用 htop # 更友好的界面 # 如果CPU使用率高 ps aux --sort=-%cpu | head # 查找CPU占用高的进程 pidstat -p PID # 分析特定进程 # 如果内存使用率高 ps aux --sort=-%mem | head # 查找内存占用高的进程 free -h # 查看内存详情 # 如果IO等待高 iostat -xz 1 # 查看IO情况 iotop # 查找IO占用高的进程
遇到网络连接异常时,使用netstat或ss查看连接状态。
# 连接统计
ss -s # 概要统计
netstat -an | awk'/^tcp/ {print $6}'| sort | uniq -c
# 监听端口
ss -tlnp # TCP监听
ss -ulnp # UDP监听
# 连接状态
ss -tan state established
ss -tan state time-wait
# 抓包分析
tcpdump -i any port XXXX -nn
遇到磁盘空间问题时,使用df和du配合排查。
# 快速定位
df -h # 文件系统使用率
df -i # inode使用率
# 逐级排查
du -h --max-depth=1 / # 根目录一级目录
du -sh /var/* # 特定目录
# 大文件查找
find / -typef -size +1G
find / -name"*.log"-execdu -h {} + | sort -rh | head
遇到进程异常时,使用ps和lsof分析。
# 进程列表 ps aux # 完整信息 ps -ef # 进程树 pstree # 进程树状图 # 进程详情 lsof -p PID # 打开的文件 lsof -i # 网络连接 cat /proc/PID/status # 进程状态
4.2 命令参数记忆技巧
top系列记住几个关键按键:P按CPU排序,M按内存排序,T按时间排序,1查看各CPU核心,k杀进程,q退出。
netstat记住常用组合:-anp显示所有连接(-a全部,-n数字形式,-p进程)。
find记住三个核心选项:-name按文件名,-type按类型,-exec执行命令。
awk记住两个核心概念:1第一列,NF列数。
5. 进阶命令与工具
5.1 性能监控工具链
除了基础命令,运维人员还应掌握一些进阶工具组成完整的监控工具链。
htop - 增强版的top,支持鼠标操作和进程树视图。
# 安装 apt-get install htop # Debian/Ubuntu yum install htop # RHEL/CentOS # 常用参数 htop # 启动 htop -u nginx # 过滤用户 htop -d 5 # 刷新延迟 htop -p PID1,PID2 # 监控特定进程
iotop - 按进程显示磁盘IO使用情况。
# 安装 apt-get install iotop # 常用参数 iotop # 实时IO iotop -o # 只显示有IO的进程 iotop -b # 批量模式 iotop -n 3 # 刷新3次后退出
iftop - 按连接显示网络带宽使用情况。
# 安装 apt-get install iftop # 常用参数 iftop -i eth0 # 指定接口 iftop -n # 不解析主机名 iftop -N # 不解析端口号 iftop -B # 以字节显示
nethogs - 按进程显示网络带宽使用情况。
# 安装 apt-get install nethogs # 常用参数 nethogs # 实时 nethogs eth0 # 指定接口 nethogs -d 2 # 刷新间隔
5.2 日志分析工具
goaccess - 实时Web日志分析器。
goaccess access.log -c # 交互式配置 goaccess access.log -o report.html --log-format=COMBINED
lnav - 高级日志文件查看器。
lnav /var/log/syslog lnav /var/log/nginx/*.log lnav -i access.log
5.3 系统信息收集
dmidecode - 查看硬件信息。
dmidecode -t system # 系统信息 dmidecode -t memory # 内存信息 dmidecode -t processor # CPU信息
lscpu - 查看CPU信息。
lscpu lscpu -e # 扩展信息 lscpu -p # 格式化输出
lsblk - 查看块设备信息。
lsblk lsblk -f # 文件系统信息 lsblk -a # 所有设备
5.4 故障排查实战流程
系统故障排查的标准化流程可以提高排查效率。
Phase 1:信息收集
# 收集系统基本信息 uname -a # 系统信息 uptime # 运行时间和负载 hostname # 主机名 cat /etc/os-release # 操作系统版本 # 收集资源使用信息 df -h # 磁盘使用 free -h # 内存使用 top -bn1 | head -20 # CPU和进程
Phase 2:网络诊断
# 网络连通性 ping -c 4 8.8.8.8 # 外网连通性 traceroute 8.8.8.8 # 路由追踪 nslookup google.com # DNS解析 # 端口和服务 netstat -tlnp # 监听端口 netstat -an | grep ESTABLISHED # 已建立连接 ss -tunap # 详细连接信息
Phase 3:进程和服务
# 进程状态 ps aux | head -20 # 进程列表 ps -ef | grep nginx # 查找特定进程 pstree -p # 进程树 # 服务状态 systemctl status nginx # 服务状态 journalctl -u nginx -n 50 # 服务日志
Phase 4:日志分析
# 系统日志 tail -100 /var/log/syslog # 系统日志 tail -100 /var/log/messages # 消息日志 # 应用日志 tail -100 /var/log/nginx/error.log tail -100 /var/log/mysql/error.log
Phase 5:资源分析
# CPU分析 vmstat 1 5 # 虚拟内存统计 mpstat -P ALL 1 # CPU使用率 # IO分析 iostat -xz 1 # IO统计 iotop # 按进程IO # 内存分析 free -m # 内存使用 cat /proc/meminfo # 详细内存信息
5.5 常见故障快速处理手册
服务器无法连接
# 1. 检查网络连通性 ping -c 4# 2. 检查端口连通性 nc -zv 22 # 3. 检查服务状态 systemctl status sshd # 4. 检查防火墙 iptables -L -n firewall-cmd --list-all
磁盘空间不足
# 1. 找到大文件 du -sh /* | sort -rh | head -10 # 2. 查找大日志文件 find /var -name"*.log"-size +100M # 3. 清理旧日志 journalctl --vacuum-time=7d find /var/log-name"*.gz"-mtime +30 -delete # 4. 清理缓存 yum clean all apt-get clean
服务无法启动
# 1. 检查配置文件语法 nginx -t apache2ctl configtest java -jar app.jar --dry-run # 2. 检查端口占用 lsof -i :80 netstat -tlnp | grep :80 # 3. 检查权限 ls -la /var/log/app chown -R app:app /var/log/app # 4. 检查依赖 ldd /path/to/binary
CPU使用率过高
# 1. 找到高CPU进程 top -c # 按P排序查看CPU占用 # 2. 分析线程 ps -p PID -L -o pcpu,pid,tid,time jstack PID > threaddump.txt # 3. 如果是Java进程 jps -l jstack PID # 4. 限制CPU使用 cpulimit -p PID -l 50
内存使用率过高
# 1. 找到高内存进程 top -c # 按M排序查看内存占用 # 2. 分析内存使用 ps aux --sort=-%mem | head # 3. 检查OOM dmesg | grep -i oom journalctl -k | grep -i oom # 4. 调整策略 sysctl vm.swappiness=10
5.6 命令组合使用技巧
日志分析组合
# 统计错误类型
grep -i error app.log | awk'{print $5}'| sort | uniq -c | sort -rn
# 查找异常IP
awk'{print $1}'access.log | sort | uniq -c | sort -rn | head -20
# 分析响应时间
awk'{print $NF}'access.log | sort -n | tail -20
# 统计状态码分布
awk'{print $9}'access.log | sort | uniq -c | sort -rn
系统监控组合
# 综合监控脚本 #!/bin/bash echo"=== System Info ===" uptime echo"=== CPU ===" top -bn1 | head -5 echo"=== Memory ===" free -h echo"=== Disk ===" df -h echo"=== Network ===" ss -tunap | wc -l echo"=== Top Processes ===" ps aux --sort=-%cpu | head -6
进程监控组合
# 监控特定进程 watch -n 1'ps aux | grep process_name | grep -v grep' # 监控文件描述符 lsof -p PID | wc -l # 监控打开的文件 lsof -p PID -a -d txt,mem,fd # 监控网络连接 watch -n 1'netstat -an | grep :80 | wc -l'
5.7 自动化脚本示例
系统健康检查脚本
#!/bin/bash
# system_health_check.sh
LOG_FILE="/var/log/health_check.log"
EMAIL="admin@example.com"
log() {
echo"[$(date '+%Y-%m-%d %H:%M:%S')]$1"| tee -a"$LOG_FILE"
}
check_cpu() {
cpu_usage=$(top -bn1 | grep"Cpu(s)"| awk'{print $2}'| sed's/%us,//')
if(( $(echo"$cpu_usage> 80"| bc -l) ));then
log"WARNING: CPU usage is high:$cpu_usage%"
return1
fi
log"OK: CPU usage is normal:$cpu_usage%"
return0
}
check_memory() {
mem_usage=$(free | grep Mem | awk'{print ($3/$2) * 100}')
if(( $(echo"$mem_usage> 85"| bc -l) ));then
log"WARNING: Memory usage is high:$mem_usage%"
return1
fi
log"OK: Memory usage is normal:$mem_usage%"
return0
}
check_disk() {
disk_usage=$(df -h / | tail -1 | awk'{print $5}'| sed's/%//')
if["$disk_usage"-gt 80 ];then
log"WARNING: Disk usage is high:$disk_usage%"
return1
fi
log"OK: Disk usage is normal:$disk_usage%"
return0
}
check_services() {
forserviceinnginx mysql redis;do
ifsystemctl is-active --quiet$service;then
log"OK:$serviceis running"
else
log"ERROR:$serviceis not running"
return1
fi
done
return0
}
# Main
log"=== System Health Check Started ==="
check_cpu
check_memory
check_disk
check_services
log"=== System Health Check Completed ==="
日志备份清理脚本
#!/bin/bash
# log_backup_cleanup.sh
LOG_DIR="/var/log/myapp"
BACKUP_DIR="/backup/logs"
RETENTION_DAYS=30
# Create backup directory if not exists
mkdir -p"$BACKUP_DIR"
# Backup logs
timestamp=$(date +%Y%m%d_%H%M%S)
tar -czf"$BACKUP_DIR/logs_${timestamp}.tar.gz""$LOG_DIR"/*.log2>/dev/null
# Clean old backups
find"$BACKUP_DIR"-name"logs_*.tar.gz"-mtime +$RETENTION_DAYS-delete
# Compress old logs
find"$LOG_DIR"-name"*.log"-mtime +7 -execgzip {} ;
# Delete very old logs
find"$LOG_DIR"-name"*.log.gz"-mtime +90 -delete
echo"Log backup and cleanup completed at$(date)"
总结
系统命令是运维工程师的基本功。熟练掌握这10个核心命令,可以应对大部分日常运维场景和故障排查需求。
命令的学习需要注重实践。建议在测试环境中多练习,亲自运行命令查看输出,理解每个参数的含义。同时注意命令之间的组合使用,如find结合awk、grep结合netstat等。
除了本文介绍的10个命令,还有很多有用的命令值得学习。如htop、iotop、iftop等增强版工具,提供更直观的信息展示。掌握了基础命令后,可以逐步学习这些增强工具,进一步提升运维效率。
最后,命令只是工具,更重要的是理解系统原理和排查思路。同样的命令,在不同经验水平的工程师手中,发挥的作用可能完全不同。建议在掌握命令的同时,也要深入学习操作系统原理、网络协议等基础知识。
-
负载
+关注
关注
2文章
672浏览量
36713 -
服务器
+关注
关注
14文章
10343浏览量
91737 -
命令
+关注
关注
5文章
758浏览量
23914
原文标题:运维工程师必须掌握的10个系统命令
文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
运维工程师必须掌握的10个系统命令
评论