linux后端开发常用的指令

本文介绍了一系列用于监控系统状态和性能的实用工具,包括netstat、ipcs、uptime等,覆盖了网络连接、进程状态、内存使用等多个方面,帮助读者全面掌握系统监控的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.netstat
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。

-a或--all:显示所有连线中的Socket;
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的快取信息;
-e或--extend:显示网络其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单;
-h或--help:在线帮助;
-i或--interfaces:显示网络界面信息表单;
-l或--listening:显示监控中的服务器的Socket;
-M或--masquerade:显示伪装的网络连线;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-r或--route:显示Routing Table;
-s或--statistice:显示网络工作信息统计表;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定"-A unix"参数相同;
--ip或--inet:此参数的效果和指定"-A inet"参数相同。

2.ipcs

显示所有的IPC设施

ipcs -a

显示所有的消息队列Message Queue

ipcs -q

显示所有的信号量

ipcs -s

显示所有的共享内存

ipcs -m

显示IPC设施的详细信息

ipcs -q -i id

id 对应shmid、semid、msgid等。-q对应设施的类型(队列),查看信号量详细情况使用-s,查看共享内存使用-m。

显示IPC设施的限制大小

ipcs -m -l

-m对应设施类型,可选参数包括-q、-m、-s。

显示IPC设施的权限关系

ipcs -c
ipcs -m -c
ipcs -q -c
ipcs -s -c

显示最近访问过IPC设施的进程ID。

ipcs -p
ipcs -m -p
ipcs -q -p

显示IPC设施的最后操作时间

ipcs -t
ipcs -q -t
ipcs -m -t
ipcs -s -t

ipcs -u 显示IPC设施的当前状态

3.ipcrm

删除消息队列、共享内存、信号灯.
-M   以shmkey删除共享内存
-m   以shmid删除共享内存
-Q   以msgkey删除消息队列
-q    以msgid删除消息队列
-S    以semkey删除信号灯
-s    以semid删除信号灯

4.tcpdump

详解:https://www.cnblogs.com/gaoyuechen/p/7911050.html

5.uptime

使用uptime指令后的例子
例子:10:19:04 up 257 days, 18:56,  12 users,  load average: 2.10, 2.10,2.09

10:19:04 //系统当前时间
up 257 days, 18:56 //主机已运行时间,时间越大,说明你的机器越稳定。
12 user  //用户连接数,是总连接数而不是用户数
load average   // 系统平均负载,统计最近1,5,15分钟的系统平均负载那么什么是系统平均负载呢? 系统平均负载是指在特定时间间隔内运行队列中的平均进程数。

6.dmesg|tail

该命令会输出系统日志的最后10行。

7.vmstat

vmstat命令,每行会输出一些系统核心指标,这些指标可以让我们更详细的了解系统状态.
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数.
例子:vmstat 2 1.
也可以持续监控 vimstat 2.

procs 
r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。 
b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

memory 
swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常 
free 当前的空闲页面列表中内存数量(k表示) 
buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。 
cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。

swap 
si 由内存进入内存交换区数量。 
so由内存交换区进入内存数量。

IO 
bi 从块设备读入数据的总量(读磁盘)(每秒kb)。 
bo 块设备写入数据的总量(写磁盘)(每秒kb) 
这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。

system 显示采集间隔内发生的中断数 
in 列表示在某一时间间隔中观测到的每秒设备中断数。 
cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。

cpu 表示cpu的使用状态 
us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。 
sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。 
wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。 
id 列显示了cpu处在空闲状态的时间百分比.

8.mpstat

该命令可以显示每个CPU的占用情况.
用法大致:mpstat -P ALL 1
每秒查看每个cpu的详细使用情况.

字段含义如下:
%user      在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程  (usr/total)*100
%nice      在internal时间段里,nice值为负进程的CPU时间(%)   (nice/total)*100
%sys       在internal时间段里,内核时间(%)       (system/total)*100
%iowait    在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
%irq       在internal时间段里,硬中断时间(%)     (irq/total)*100
%soft      在internal时间段里,软中断时间(%)     (softirq/total)*100
%idle      在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100

9.pidstat

 pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

-u:监控cpu
-r:监控内存
-d:监控硬盘

-u
pid - 被监控的任务的进程号
%usr - 当在用户层执行(应用程序)时这个任务的cpu使用率,和 nice 优先级无关。注意这个字段计算的cpu时间不包括在虚拟处理器中花去的时间。
%system - 这个任务在系统层使用时的cpu使用率。
%guest - 任务花费在虚拟机上的cpu使用率(运行在虚拟处理器)。
%CPU - 任务总的cpu使用率。在SMP环境(多处理器)中,如果在命令行中输入-I参数的话,cpu使用率会除以你的cpu数量。
CPU - 正在运行这个任务的处理器编号。
Command - 这个任务的命令名称。

-d
kB_rd/s - 任务从硬盘上的读取速度(kb)
kB_wr/s - 任务向硬盘中的写入速度(kb)
kB_ccwr/s - 任务写入磁盘被取消的速率(kb)

-r
minflt/s - 从内存中加载数据时每秒出现的小的错误的数目,这些不要求从磁盘载入内存页面。
majflt/s - 从内存中加载数据时每秒出现的较大错误的数目,这些要求从磁盘载入内存页面。
VSZ - 虚拟容量:整个进程的虚拟内存使用(kb)
RSS - 长期内存使用:任务的不可交换物理内存的使用量(kb)

10.iostat

输入iostat -x 1 10命令,表示开始监控输入输出状态,-x表示显示所有参数信息,1表示每隔1秒监控一次,10表示共监控10次。
r/s, w/s, rkB/s, wkB/s:分别表示每秒读写次数和每秒读写数据量(千字节)。读写量过大,可能会引起性能问题。
await:IO操作的平均等待时间,单位是毫秒。这是应用程序在和磁盘交互时,需要消耗的时间,包括IO等待和实际操作的耗时。如果这个数值过大,可能是硬件设备遇到了瓶颈或者出现故障。
avgqu-sz:向设备发出的请求平均数量。如果这个数值大于1,可能是硬件设备已经饱和(部分前端硬件设备支持并行写入)。
%util:设备利用率。这个数值表示设备的繁忙程度,经验值是如果超过60,可能会影响IO性能(可以参照IO操作平均等待时间)。如果到达100%,说明硬件设备已经饱和。

11.free

-b:以Byte为单位显示内存使用情况;
-k:以KB为单位显示内存使用情况;
-m:以MB为单位显示内存使用情况;
-o:不显示缓冲区调节列;
-s<间隔秒数>:持续观察内存使用状况;
-t:显示内存总和列;
-V:显示版本信息。

total:内存总数;
used:已经使用的内存数;
free:空闲的内存数;
shared:当前已经废弃不用;
buffers Buffer:缓存内存数;
cached Page:缓存内存数。

12.iotop
iotop命令类似于top命令,但是显示的是各个进程的I/O情况,对于定位I/O操作较重的进程有比较大的作用。
直接iotop就可以查看.

13.top

详解:https://www.cnblogs.com/cherishry/p/5886041.html.

14.dstat
直接dstat
个别信息解释:
1. cpu:hiq,siq分别为硬中断和软中断次数。

2. system:int,csw分别为系统的中断次数(interrupt)和上下文切换(context switch)
可以查看的状态如下:
CPU状态:CPU的使用率。这项报告更有趣的部分是显示了用户,系统和空闲部分,这更好地分析了CPU当前的使用状况。如果你看到"wait"一栏中,CPU的状态是一个高使用率值,那说明系统存在一些其它问题。当CPU的状态处在"waits"时,那是因为它正在等待I/O设备(例如内存,磁盘或者网络)的响应而且还没有收到。
磁盘统计:磁盘的读写操作,这一栏显示磁盘的读、写总数。

网络统计:网络设备发送和接受的数据,这一栏显示的网络收、发数据总数。

分页统计:系统的分页活动。分页指的是一种内存管理技术用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间,或者说内存非常分散,大多数情况下你都希望看到page in(换入)和page out(换出)的值是0 0。
 

系统统计:这一项显示的是中断(int)和上下文切换(csw)。这项统计仅在有比较基线时才有意义。这一栏中较高的统计值通常表示大量的进程造成拥塞,需要对CPU进行关注。你的服务器一般情况下都会运行运行一些程序,所以这项总是显示一些数值。

 

15.mtrace

主要用于定位内存泄露,详解:https://blog.youkuaiyun.com/yf210yf/article/details/8022192

 

16.lsof

用于列出被进程打开的文件,也能查看进程占用的端口,详解:https://www.cnblogs.com/bonelee/p/7735479.html

### 常见的 Linux 指令及其应用场景 对于后端开发人员来说,掌握一系列常用Linux 操作系统命令至关重要。这些命令不仅有助于日常服务器管理和维护工作,也是面试过程中经常考察的知识点。 #### 文件和目录操作 - **ls**: 列出当前目录下的文件列表[^1]。 ```bash ls -l /path/to/directory/ ``` - **cd**: 改变当前的工作目录到指定路径下。 ```bash cd /home/user/documents ``` - **pwd**: 显示当前所在的绝对路径。 ```bash pwd ``` - **mkdir/rmdir**: 创建或删除空目录。 ```bash mkdir new_folder rmdir empty_folder ``` - **rm**: 删除文件或非空目录(需谨慎使用)。 ```bash rm file.txt rm -rf non_empty_directory/ ``` #### 查看与编辑文本文件 - **cat/vi/nano**: 输出整个文件内容或将文件打开以便查看/修改。 ```bash cat filename.txt vi config_file.conf nano script.sh ``` - **grep**: 在文件内查找特定字符串并显示匹配行。 ```bash grep "search_term" log_files/* ``` #### 用户权限管理 - **chmod/chown**: 更改文件或目录访问模式以及所属者身份。 ```bash chmod u+x executable_script.sh chown user:user group document.pdf ``` #### 进程控制 - **ps/top/pgrep**: 展示正在运行中的进程状态信息;top提供动态更新视图;pgrep通过名字筛选进程ID[^2]。 ```bash ps aux | grep java top pgrep nginx ``` - **kill/pkill**: 向指定PID发送信号终止相应程序实例;pkill基于名称来定位目标。 ```bash kill -9 12345 pkill apache2 ``` #### 网络配置与诊断工具 - **ifconfig/ip addr/netstat/ss**: 获取网络接口详情、路由表项等基本信息;netstat用于统计连接状况;ss则是更现代的选择。 ```bash ip addr show eth0 netstat -tuln ss -tnlp ``` - **ping/curl/wget/traceroute/nslookup/host**: 测试主机可达性、下载资源、追踪数据包传输路线及域名解析服务查询等功能。 ```bash ping google.com curl http://example.org/index.html wget https://www.example.com/file.zip traceroute example.net nslookup www.github.io host domain.name ``` #### 日志分析 - **tail/head/journalctl**: tail可实时跟踪日志结尾部分新增的内容;head则相反只读取开头若干行;journalctl专门用来查阅systemd记录下来的事件消息。 ```bash tail -f /var/log/syslog head -n 10 access.log journalctl -u service_name.service ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值