一、硬盘和内存方面的相关指令
1.df
df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计,可以用来查看磁盘已被使用了多少空间和剩余多少空间。
// 命令参数:
df -a:--all,显示所有的文件系统,包括虚拟文件系统。
df -B:--block-size,指定单位大小。比如1k,1m等。
df -h:--human-readable,以人们易读的GB、MB、KB等格式显示。
df -H:--si,和-h参数一样,但是不是以1024,而是1000,即1k=1000,而不是1k=1024。
df -i:--inodes,不用硬盘容量,而是以inode的数量来显示。
df -k:以KB的容量显示各文件系统,相当于--block-size=1k。
df -m:以KB的容量显示各文件系统,相当于--block-size=1m。
df -l:--local,只显示本地文件系统。
df --no-sync:在统计使用信息之前不调用sync命令(默认)。
df -sync:在统计使用信息之前调用sync命令。
df -P:--portability,使用POSIX格式显示。
df -t:--type=TYPE,只显示指定类型的文件系统。
df -T:--print-type,显示文件系统类型。
df -x:--exclude-type=TYPE,不显示指定类型的文件系统。
df --help:显示帮助信息。
df --version:显示版本信息。
例如输入df -h 直观的通俗易懂的显示文件系统中的磁盘使用情况
2.top
top命令提供正在运行的系统的实时动态视图,它检查每个进程的内存使用情况。ps:运行 top 时,按「1」打开 CPU 列表,按「shift+p」以 CPU 排序。
top最好用的地方就是 直观的发现可能已经失控服务的进程pid,可以通过调用kill,结束进程,或者进行错误的排查
// top状态说明:
PID:进程ID,进程的唯一标识符
USER:进程所有者的实际用户名。
PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。
NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:SHR是进程使用的共享内存。共享内存大小,单位kb
S:这个是进程的状态。它有以下不同的值:
D - 不可中断的睡眠态。
R – 运行态
S – 睡眠态
T – 被跟踪或已停止
Z – 僵尸态
%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM:进程使用的可用物理内存百分比。
TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)
// 常用命令说明:
shift +
L:擦除并且重写屏幕
K:终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
i:忽略闲置和僵死进程。这是一个开关式命令。
q:退出程序
r:重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
S:切换到累计模式。
s:改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f或者F:从当前显示中添加或者删除项目。
o或者O:改变显示项目的顺序
l:切换显示平均负载和启动时间信息。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据驻留内存大小进行排序。
P:根据CPU使用百分比大小进行排序。
T:根据时间/累计时间进行排序。
3.free
free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。
// 命令参数:
free -b:以Byte为单位显示内存使用情况。
free -k:以KB为单位显示内存使用情况。
free -m:以MB为单位显示内存使用情况。
free -g:以GB为单位显示内存使用情况。
free -o:不显示缓冲区调节列。
free -s:<间隔秒数>持续观察内存使用状况。
free -t:显示内存总和列。
free -V:显示版本信息。
/显示参数说明
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行是交换分区SWAP的,也就是我们通常所说的虚拟内存。
我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,提高文件读取的性能,以方便下次使用。但实际上这些内存,如果需要的话,也是可以立刻拿来使用的。
所以从应用程序的角度来说,可用内存 = 系统free + buffers + cached
二、进程和线程状态相关命令
1.ps
ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
// 命令参数:
ps -a:显示同一终端下的所有程序
ps -A:显示所有进程
ps -c:显示进程的真实名称
ps -N:反向选择
ps -e:显示环境变量
ps -f:显示程序间的关系
ps -H:显示树状结构
ps -r:显示当前终端的进程
ps -T:显示当前终端的所有程序
ps -u:指定用户的所有进程
ps -au:显示较详细的资讯
ps -aux:显示所有包含其他使用者的进程 (PID, CPU, MEM等等)
ps -ajx:显示所有包含其他使用者的进程 (PPID, PID, PGID等等)
2.kill
kill命令就是结束进程,直接kill+pid即可
3.ipcs
进程之间的通信方式无非就是 共享内存 消息队列 信号量 等 。我们就可以通过是用ipcs来查看上面三项的使用情况。从而利于定位多进程通信之间出现的问题。
// 命令参数:
ipcs -a:是默认的输出信息 打印出当前系统中所有的进程间通信方式的信息
ipcs -m:打印出使用共享内存进行进程间通信的信息
ipcs -q:打印出使用消息队列进行进程间通信的信息
ipcs -s:打印出使用信号进行进程间通信的信息
ipcs -p:输出ipc方式的进程ID
ipcs -c:输出ipc各种方式的在该系统下的限制条件信息
ipcs -u:输出当前系统下ipc各种方式的状态信息(共享内存,消息队列,信号)
4.ipcrm
这个命令通常用来移除一个消息对象、或者共享内存段、或者一个信号集,同时会将与ipc对象相关链的数据也一起移除。当然,只有超级管理员,或者ipc对象的创建者才有这项权利。
// 命令参数:
ipcrm -M shmkey:移除用shmkey创建的共享内存段
ipcrm -m shmid:移除用shmid标识的共享内存段
ipcrm -Q msgkey:移除用msqkey创建的消息队列
ipcrm -q msqid:移除用msqid标识的消息队列
ipcrm -S semkey:移除用semkey创建的信号
ipcrm -s semid:移除用semid标识的信号
三、网络相关的命令
1.netstat
用于显示各种网络相关信息,如网络连接,路由表,接口状态,masquerade 连接,多播成员 (Multicast Memberships) 等等。
// 命令参数:
netstat -a:(all)显示所有选项,默认不显示LISTEN相关
netstat -t:(tcp)仅显示tcp相关选项
netstat -u:(udp)仅显示udp相关选项
netstat -n:拒绝显示别名,能显示数字的全部转化成数字。
netstat -l:仅列出有在 Listen (监听) 的服務状态
netstat -p:显示建立相关链接的程序名
netstat -r:显示路由信息,路由表
netstat -e:显示扩展信息,例如uid等
netstat -s:按各个协议进行统计
netstat -c:每隔一个固定时间,执行该netstat命令。
// 提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
2.ifconfig
用来查看主机的ip地址,网关,子网掩码。
3.tcpdump
linux下的一个抓包工具
tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ]
[ -s snaplen ] [ -w file ] [ expression ]
抓包选项:
-c:指定要抓取的包数量。注意,是最终要获取这么多个包。例如,指定"-c 10"将获取10个包,但可能已经处理了100个包,只不过只有10个包是满足条件的包。
-i interface:指定tcpdump需要监听的接口。若未指定该选项,将从系统接口列表中搜寻编号最小的已配置好的接口(不包括loopback接口,要抓取loopback接口使用tcpdump -i lo),
:一旦找到第一个符合条件的接口,搜寻马上结束。可以使用'any'关键字表示所有网络接口。
-n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。
-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
-N:不打印出host的域名部分。例如tcpdump将会打印'nic'而不是'nic.ddn.mil'。
-P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"。
-s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,
:输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,
:从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。
输出选项:
-e:输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。
-q:快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。
-X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。
-XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
-v:当分析和打印的时候,产生详细的输出。
-vv:产生比-v更详细的输出。
-vvv:产生比-vv更详细的输出。
其他功能性选项:
-D:列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。
-F:从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。
-w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。
-r:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。
tcpdump中常见选项
// 抓取通过第一个网卡的数据包,并将信息打印在屏幕上实时显示出来
tcpdump
// 抓取通过eth0网卡的数据包,信息实时打印在屏幕上。-i表示指定哪个网卡接口,
// 后面跟网卡名字,比如eth0或者lo
tcpdump -i eth0
// 抓取该网卡和该IP地址会话的数据包,实时打印在屏幕上,host后面跟IP地址或者域名,
// 比如也可以写成host www.baidu.com
tcpdump -i eth0 host <addr>
// 抓取所有该网卡和该IP之间,收到的数据,src表示服务器收到的数据,
// 如果该参数缺省,默认抓取所有数据
tcpdump -i eth0 src host <addr>
// 抓取所有该网卡和该IP之间,收到的数据,dst表示服务器发出去的数据,如果该参数缺省,默认抓取所有数据
tcpdump -i eth0 dst host <addr>
// 查看8080端口号的会话数据包,port表示端口号,后面比如跟8080。-n表示不对具体ip地址做域名解析,直接显示会话两边的具体ip地址
tcpdump -n -i eth0 port 8080 and host <addr> tcp
// 将抓包结果保存下来,最后的路径,为绝对路径,如果只有文件名,
// 保存在当前文件夹下,pcap格式可被wireshark打开
tcpdump -c 10 -nn -i eth0 tcp dst port 8080 and host <addr> -w /home/eric/MyTest.pcap
参考地址:https://blog.csdn.net/daaikuaichuan/article/details/83549293