Linux不常用但重要的命令
# 一、磁盘相关
# 1,df
- df: display free disk space;
- 主要用于展示剩余磁盘空间,以及inode信息;
- 示例:
点击查看
df -h # 查看磁盘剩余空间信息,以“Human-readable”的方式输出
1
2
# 2,du
- du: display disk usage statistics
- 主要用于展示磁盘使用信息统计;
- 示例:
点击查看
du -hs */ | sort -hr # 当某个磁盘快满时,可以用 `df -h`查看将满目录,再对该目录使用该命令; # -h 选项将大小以易读的方式显示,-s 选项将目录总大小摘要显示,*/ 表示对当前目录下的所有一级子目录执行 du 命令; # sort 命令用于对输入进行排序,-h 选项将根据人类可读的数字进行排序(例如:1K、1M、1G),-r 选项表示按照逆序(从大到小)排序;
1
2
3
4
# 3,iostat
iostat: Report Central Processing Unit (CPU) statistics and input/output statistics for devices and partitions
主要展示CPU和磁盘的IO信息;
示例:
iostat # -c 仅显示CPU信息; # -d 仅显示磁盘信息;
1
2
3点击查看
Linux 3.10.0-514.el7.x86_64 (nvm-8k7ryr28yp0) 07/15/2023 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 16.41 0.10 6.45 0.33 0.02 76.69 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn vda 10.43 632.41 66.70 31104268877 3280613157 vdb 53.25 577.45 1774.53 28401248851 87277938011 scd0 0.00 0.00 0.00 374 0
1
2
3
4
5
6
7
8
9
# 二、内存相关
# 1,free
- free: Display amount of free and used memory in the system;
- 显示当前系统未使用的和已使用的内存信息,以及被内核使用的内存缓冲区信息;
- 存储其信息的文件为 /proc/meminfo ;
-h:以易读的方式展示; -l:显示详细的低内存和高内存的统计信息; -t:显示内存和交换区的和; -s N:间隔 N 秒显示一次; -c N:连续显示 N 次然后停止; -w:以宽列模式显示;
1
2
3
4
5
6 - 示例:
free -hltw # 输出信息如下;
1点击查看
total used free shared buffers cache available Mem: 62G 36G 17G 3.2G 38M 8.5G 22G Low: 62G 45G 17G High: 0B 0B 0B Swap: 0B 0B 0B Total: 62G 36G 17G
1
2
3
4
5
6
# 2,vmstat
- vmstat: Report virtual memory statistics
- 报告虚拟内存统计信息,还可以报告关于进程、内存、I/O等系统整体运行状态;
- 存储其信息的文件为:/proc/meminfo、/proc/stat、/proc/*/stat;
- 相比于 free 能够显示更详细的信息;
- 常用参数如下:
-a:显示活动内页; -f:显示启动后创建的进程总数; -m:显示slab信息; -n:头信息仅显示一次; -s:以表格方式显示事件计数器和内存状态; -d:报告磁盘状态; -p:显示指定的硬盘分区状态; -S:输出信息的单位;
1
2
3
4
5
6
7
8 - 示例:
vmstat -s # 输出信息如下;
1点击查看
65809540 K total memory 38647692 K used memory 42190488 K active memory 1828372 K inactive memory 18432028 K free memory 38744 K buffer memory 8691076 K swap cache 0 K total swap 0 K used swap 0 K free swap 5901560943 non-nice user cpu ticks 37396419 nice user cpu ticks 2223961253 system cpu ticks 27581089290 idle cpu ticks 119053758 IO-wait cpu ticks 0 IRQ cpu ticks 96387358 softirq cpu ticks 6650201 stolen cpu ticks 59498785798 pages paged in 90483007168 pages paged out 0 pages swapped in 0 pages swapped out 366214001 interrupts 656409515 CPU context switches 1640228379 boot time 1414047112 forks
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 三、网络相关
# 1,netstat
- netstat: Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
- 查看系统的网络的状态信息;
- 常用参数:
重要且常用:-n, -l, -t, -u; -a, --all 显示所有连线中的Socket; -A<net-type>, --<net-type> 列出该网络类型连线中的相关地址; -c, --continuous 持续列出网络状态; -C, --cache: 显示路由器配置的快取信息; -i, --interfaces: 显示网络界面信息表单; -l, --listening: 显示监控中的服务器的Socket; -n, --numeric: 直接使用ip地址,而不通过域名服务器; -s, --statistice: 显示网络工作信息统计表; -t, --tcp: 显示TCP传输协议的连线状况; -u, --udp: 显示UDP传输协议的连线状况; -v, --verbose: 显示指令执行过程; -V, --version: 显示版本信息; -w, --raw: 显示RAW传输协议的连线状况; -x, --unix: 此参数的效果和指定"-A unix"参数相同; --ip, --inet: 此参数的效果和指定"-A inet"参数相同。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 2,ss
- 用来显示处于活动状态的套接字信息;
- 常用参数:
重要且常用:-n, -l, -t, -u, -4; -n, --numeric 不解析服务名称 -r, --resolve 解析主机名 -a, --all 显示所有套接字(sockets) -l, --listening 显示监听状态的套接字(sockets) -e, --extended 显示详细的套接字(sockets)信息 -m, --memory 显示套接字(socket)的内存使用情况 -p, --processes 显示使用套接字(socket)的进程 -i, --info 显示 TCP内部信息 -s, --summary 显示套接字(socket)使用概况 -4, --ipv4 仅显示IPv4的套接字(sockets) -6, --ipv6 仅显示IPv6的套接字(sockets) -t, --tcp 仅显示 TCP套接字(sockets) -u, --udp 仅显示 UCP套接字(sockets) -d, --dccp 仅显示 DCCP套接字(sockets) -w, --raw 仅显示 RAW套接字(sockets) -x, --unix 仅显示 Unix套接字(sockets) -f, --family=FAMILY 显示 FAMILY类型的套接字(sockets),FAMILY可选,支持 unix, inet, inet6, link, netlink -A, --query=QUERY, --socket=QUERY,QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY] -D, --diag=FILE 将原始TCP套接字(sockets)信息转储到文件 -F, --filter=FILE 从文件中都去过滤器信息,FILTER := [ state TCP-STATE ] [ EXPRESSION ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 3,tcpdump
- tcpdump命令是一款抓包嗅探器工具,可以打印所有经过网络接口的数据包头信息;
# a) 常用选项
选项 | 含义 |
---|---|
-a | 尝试将网络和广播地址转换成名称; |
-c nu | 收到指定的数据包数目后,就停止进行倾倒操作; |
-d | 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出; |
-dd | 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出; |
-ddd | 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出; |
-e | 在每列倾倒资料上显示连接层级的文件头; |
-f | 用数字显示网际网络地址; |
-F file | 指定内含表达方式的文件; |
-i iterface | 使用指定的网络截面送出数据包; |
-l | 使用标准输出列的缓冲区; |
-n | 不把主机的网络地址转换成名字; |
-N | 不列出域名; |
-r file | 从指定的文件读取数据包数据; |
-s size | 设置每个数据包的大小; |
-t | 在每列倾倒资料上不显示时间戳记; |
-tt | 在每列倾倒资料上显示未经格式化的时间戳记; |
-v | 详细显示指令执行过程; |
-vv | 更详细显示指令执行过程; |
-x | 用十六进制字码列出数据包资料; |
-w file | 把数据包数据写入指定的文件,可以后续用 wireshark 分析 |
# b) 使用示例
点击查看
# 直接启动tcpdump将监视第一个网络接口上所有流过的数据包
tcpdump
# 监视指定网络接口的数据包,如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0
tcpdump -i eth1
# 监视指定主机的数据包,打印所有进入或离开sundown的数据包。
tcpdump host sundown
# 也可以指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包
tcpdump host 210.27.48.1
# 打印helios 与 hot 或者与 ace 之间通信的数据包
tcpdump host helios and \( hot or ace \)
# 截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信
tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
# 打印ace与任何其他主机之间通信的IP 数据包, 但不包括与helios之间的数据包.
tcpdump ip host ace and not helios
# 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
# 截获主机hostname发送的所有数据
tcpdump -i eth0 src host hostname
# 监视所有送到主机hostname的数据包
tcpdump -i eth0 dst host hostname
# 监视指定主机和端口的数据包
# 如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令
tcpdump tcp port 23 host 210.27.48.1
# 对本机的udp 123 端口进行监视 123 为ntp的服务端口
tcpdump udp port 123
# 监视指定网络的数据包
# 打印本地主机与Berkeley网络上的主机之间的所有通信数据包
tcpdump net ucb-ether
# 打印所有通过网关snup的ftp数据包
# 注意:表达式被单引号括起来了,这可以防止shell对其中的括号进行错误解析
tcpdump 'gateway snup and (port ftp or ftp-data)'
# 打印所有源地址或目标地址是本地主机的IP数据包
tcpdump ip and not net localnet
# 抓取80端口的HTTP报文,以文本形式展示:
tcpdump -i any port 80 -A
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 4,route
- route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由;
- 要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现;
- 一个局域网中能够让机器访问Internet,那么就需要将这台机器的ip地址设置为Linux机器的默认路由;
- 在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;
- 可以在
/etc/rc.local
中添加route命令来保证该路由设置永久有效; route(选项)(参数)
;
# a)选项
选项 | 含义 |
---|---|
-C | 打印将Linux核心的路由缓存; |
-v | 详细信息模式; |
-n | 直接显示数字形式的IP地址; |
-e | 显示拓展信息; |
-net | 到一个网络的路由表; |
-host | 到一个主机的路由表。 |
# b)参数
add | 增加指定的路由记录; sel | 删除指定的路由记录; target | 目的网络或目的主机; gw | 设置默认网关; mss | 设置TCP的最大区块长度(MSS),单位MB; window | 指定通过路由表的TCP连接的TCP窗口大小; dev | 路由记录所表示的网络接口。
# c)示例
点击查看
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
112.124.12.0 0.0.0.0 255.255.252.0 U 0 0 0 eth1
10.160.0.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
192.168.0.0 10.160.15.247 255.255.0.0 UG 0 0 0 eth0
172.16.0.0 10.160.15.247 255.240.0.0 UG 0 0 0 eth0
10.0.0.0 10.160.15.247 255.0.0.0 UG 0 0 0 eth0
0.0.0.0 112.124.15.247 0.0.0.0 UG 0 0 0 eth1
# 其中Flags为路由标志,标记当前网络节点的状态,Flags标志说明:
# U Up表示此路由当前为启动状态。
# H Host,表示此网关为一主机。
# G Gateway,表示此网关为一路由器。
# R Reinstate Route,使用动态路由重新初始化的路由。
# D Dynamically,此路由是动态性地写入。
# M Modified,此路由是由路由守护程序或导向器动态修改。
# ! 表示此路由当前为关闭状态。
# 添加网关/设置网关:
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 #增加一条到达244.0.0.0的路由。
# 屏蔽一条路由:
route add -net 224.0.0.0 netmask 240.0.0.0 reject #增加一条屏蔽的路由,目的地址为224.x.x.x将被拒绝。
# 删除路由记录:
route del -net 224.0.0.0 netmask 240.0.0.0
route del -net 224.0.0.0 netmask 240.0.0.0 reject
# 删除和添加设置默认网关:
route del default gw 192.168.120.240
route add default gw 192.168.120.240
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 5,获取真实ip
- 通过访问外部域名的方式获取本机真实ip;
curl ifconfig.me
curl ipinfo.io/ip
1
2
2
# 四、CPU相关
# 1,top
- 实时动态地查看系统的整体运行情况;
- 并且可以通过交互命令在交互界面进行操作;
- 选项命令如下:
点击查看
重要且常用:-p, -c; -b:以批处理模式操作; -c:显示完整的命令; -d:屏幕刷新间隔时间; -I:忽略失效过程; -s:保密模式; -S:累积模式; -i<时间>:设置间隔时间; -u<用户名>:指定用户名; -p<进程号>:指定进程; -n<次数>:循环显示的次数。
1
2
3
4
5
6
7
8
9
10
11
12 - 交互命令如下:
点击查看
重要且常用:M, P, s, m, t, c, f; h:显示帮助画面,给出一些简短的命令总结说明; k:终止一个进程; i:忽略闲置和僵死进程,这是一个开关式命令; q:退出程序; r:重新安排一个进程的优先级别; S:切换到累计模式; s/d:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s; f/F:进入显示列的选择页面,d 命令选择或删除显示制定列; l:切换显示模式,平均负载和启动时间信息; m:切换显示模式,内存信息; t:切换显示模式,进程和CPU状态信息; c:切换显示模式,命令名称和完整命令行; M:根据驻留内存大小进行排序; P:根据CPU使用百分比大小进行排序; T:根据时间/累计时间进行排序; w:将当前设置写入~/.toprc文件中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 2,lscpu
- 显示有关CPU架构的信息;
- 示例信息:
点击查看
Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 2 Core(s) per socket: 4 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 85 Model name: Intel(R) Xeon(R) Gold 6240R CPU @ 2.40GHz Stepping: 7 CPU MHz: 2399.998 BogoMIPS: 4799.99 Virtualization: VT-x Hypervisor vendor: KVM Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 1024K L3 cache: 36608K NUMA node0 CPU(s): 0-7 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq monitor vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch arat tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 3,mpcpu
- 多CPU环境下,显示各个可用CPU的状态信息
- 存储其信息的文件为:/proc/stat;
# 五、进程相关
# 1,pstack
- pstack 显示每个进程的栈跟踪了,eg:pstack {pid}
编辑 (opens new window)
上次更新: 2024/09/24, 14:39:25