这里写目录标题
查看端口被哪个进程占用
lsof -i:端口号
lsof -i:端口号,用于查看某一端口的占用情况,比如查看22号端口使用情况,lsof -i:22,如下图:
netstat -tunlp|grep 端口号
netstat -tunlp|grep 端口号,用于查看指定端口号的进程情况,如查看22端口的情况,netstat -tunlp|grep 22,如下图:
查看进程的状态
ps -A
# ps -A
PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 watchdog/0
6 ? 00:00:00 events/0
7 ? 00:00:00 cpuset
8 ? 00:00:00 khelper
9 ? 00:00:00 netns
10 ? 00:00:00 async/mgr
11 ? 00:00:00 pm
12 ? 00:00:00 sync_supers
13 ? 00:00:00 bdi-default
14 ? 00:00:00 kintegrityd/0
15 ? 00:00:02 kblockd/0
16 ? 00:00:00 kacpid
17 ? 00:00:00 kacpi_notify
18 ? 00:00:00 kacpi_hotplug
19 ? 00:00:27 ata/0
查找指定的进程
ps -ef | grep 进程关键字
ps -T 进程号(查看进程的所有线程)
$ ps -T -p 10043
PID SPID TTY TIME CMD
10043 10043 pts/9 00:00:06 /home/sokf/.jum
10043 10047 pts/9 00:00:00 python3
10043 10048 pts/9 00:00:00 python3
10043 10049 pts/9 00:00:00 python3
10043 10050 pts/9 00:00:00 python3
10043 10064 pts/9 00:00:00 /home/sokf/.jum
10043 10046 pts/9 00:00:00 /home/sokf/.jum
查看后台进程
jobs -l
jobs -l 选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。+ 号表示当前任务,- 号表示后一个任务。
jobs -l
[1] 2694 停止 (tty 输出) watch -n 10 sh test.sh
[3]- 2736 停止 (tty 输出) watch -n 20 sh test.sh
[4]+ 2738 停止 (tty 输出) watch -n 30 sh test.sh
查看CPU利用率
top
top命令可以看到总体的系统运行状态和cpu的使用率 ,退出 top 的命令为 q (在 top 运行中敲 q 键一次)。
第一行(top):
- 15:24:36 系统当前时刻
- 14 days 系统启动后到现在的运作时间
- 3 users 当前登录到系统的用户,更确切的说是登录到用户的终端数,同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目
- load average 当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程
第二行(Tasks):
- 288 total 当前系统进程总数
- 1 running 当前运行中的进程数
- 287 sleeping 当前处于等待状态中的进程数
- 0 stoped 被停止的系统进程数
- 0 zombie 僵尸进程数
第三行(Cpus):
- 7.3% us 用户空间占用CPU百分比
- 2.0% sy 内核空间占用CPU百分比
- 0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
- 90.4% id 空闲CPU百分比
- 0.3% wa 等待输入输出的CPU时间百分比
- 0.0% hi
- 0.0% si
- 0.0% st
第四行(Mem):
- 2042616 total 物理内存总量
- 1770116 used 使用的物理内存总量
- 272500 free 空闲内存总量
- 163912 buffers 用作内核缓存的内存量
第五行(Swap):
表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
- 2094076 total 交换区总量
- 45052 used 使用的交换区总量
- 2049024 free 空闲交换区总量
- 346624 cached 缓冲的交换区总量
查看文件内容
cat filename
1、cat filename,查看filename内容。
2、cat -n filename,查看文件的内容,并对所有输出行进行编号(包括空白行)。
3、cat -b filename ,用法和 -n 差不多,但是不对空白行编号。
4、cat -s filename,当遇到有连续两行或两行以上的空白行,就代换为一行的空白行。
5、cat -e filename,在输出内容的每一行后面加一个$符号(包括空白行)。
6、cat filename | tail -n 100,显示文件最后100行
7、cat filename | head -n 100,显示文件前面100行
8、cat filename | tail -n +100,从100行开始显示,显示100行以后的所有行
10、cat filename | head -n 500 | tail -n +100,显示100行到500行
统计日志里出现的最多的ip
awk sort
awk -F '|' '{print $1}' log.txt | sort | uniq -c | sort -nrk 1 -t ' '| head -5
说明:
1、awk fileName 将文件内容打印到屏幕
2、-F ‘|’ awk支持使用分隔符将一行分为多列,不使用的话 默认使用空格分割。注意,只支持单引号
3、‘{print $1}’ 打印指定列的内容。在上一步分隔后,会按顺序给每一列做标记
4、sort 对结果排序,默认按ASCII码排序
5、uniq -c 统计相邻行的重复数量,结果是 3 10.1.201.10 这样的结果,前面的数字代表个数。
6、sort -nrk 1 -t ’ ', -n是按照数值进行又小到大排序,-r是逆序,-t ’ ’ 是指定分隔符,分为列,-k 1 是执行的排序按照第几列,这里表示第一列。
查找日志中的关键字
grep
grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep 字符串 文件名
grep -n 字符串 文件名(-n表示输出行号)
对一个文件的内容进行统计
wc
wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。
语法:wc [选项] 文件…`
各选项含义如下:
- c 统计字节数
- l 统计行数
- w 统计字数
- L 文件里最长的那一行是多少个字
这些选项可以组合使用。
抓包命令
tcpdump
tcpdump命令用于倾倒网络传输数据,可列出经过指定网络界面的数据包文件头,执行该命令必须要有root权限。
tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
参数说明:
-a 尝试将网络和广播地址转换成名称。
-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
-e 在每列倾倒资料上显示连接层级的文件头。
-f 用数字显示网际网络地址。
-F<表达文件> 指定内含表达方式的文件。
-i<网络界面> 使用指定的网络截面送出数据包。
-l 使用标准输出列的缓冲区。
-n 不把主机的网络地址转换成名字。
-N 不列出域名。
-O 不将数据包编码最佳化。
-p 不让网络界面进入混杂模式。
-q 快速输出,仅列出少数的传输协议信息。
-r<数据包文件> 从指定的文件读取数据包数据。
-s<数据包大小> 设置每个数据包的大小。
-S 用绝对而非相对数值列出TCP关联数。
-t 在每列倾倒资料上不显示时间戳记。
-tt 在每列倾倒资料上显示未经格式化的时间戳记。
-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
-v 详细显示指令执行过程。
**-vv 更详细显示指令执行过程。**
-x 用十六进制字码列出数据包资料。
-w<数据包文件> 把数据包数据写入指定的文件。
实例1. 详细显示TCP包信息
jayce@jayce-virtual-machine:~$ sudo tcpdump -vv
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
20:08:00.699777 IP (tos 0x0, ttl 64, id 27331, offset 0, flags [DF], proto TCP (6), length 152)
jayce-virtual-machine.37252 > 7.177.220.60.adsl-pool.sx.cn.https: Flags [P.], cksum 0x599f (incorrect -> 0xcf9d), seq 3260573664:3260573776, ack 48952714, win 65535, length 112
20:08:00.700087 IP (tos 0x0, ttl 128, id 22016, offset 0, flags [none], proto TCP (6), length 40)
7.177.220.60.adsl-pool.sx.cn.https > jayce-virtual-machine.37252: Flags [.], cksum 0xa571 (correct), seq 1, ack 112, win 64240, length 0
20:08:00.700881 IP (tos 0x0, ttl 64, id 35260, offset 0, flags [DF], proto UDP (17), length 71)
jayce-virtual-machine.45924 > _gateway.domain: [bad udp cksum 0xd620 -> 0x4aa7!] 15135+ PTR? 7.177.220.60.in-addr.arpa. (43)
20:08:00.742961 IP (tos 0x0, ttl 128, id 22017, offset 0, flags [none], proto TCP (6), length 1400)
7.177.220.60.adsl-pool.sx.cn.https > jayce-virtual-machine.37252: Flags [P.], cksum 0xdb7a (correct), seq 1:1361, ack 112, win 64240, length 1360
20:08:00.742986 IP (tos 0x0, ttl 64, id 27332, offset 0, flags [DF], proto TCP (6), length 40)
jayce-virtual-machine.37252 > 7.177.220.60.adsl-pool.sx.cn.https: Flags [.], cksum 0x592f (incorrect -> 0x9b12), seq 112, ack 1361, win 65535, length 0
20:08:00.743110 IP (tos 0x0, ttl 128, id 22018, offset 0, flags [none], proto TCP (6), length 6840)
7.177.220.60.adsl-pool.sx.cn.https > jayce-virtual-machine.37252: Flags [P.], cksum 0x73bf (incorrect -> 0x1eea), seq 1361:8161, ack 112, win 64240, length 6800
20:08:00.743113 IP (tos 0x0, ttl 128, id 22023, offset 0, flags [none], proto TCP (6), length 1400)
7.177.220.60.adsl-pool.sx.cn.https > jayce-virtual-machine.37252: Flags [P.], cksum 0x0416 (correct), seq 8161:9521, ack 112, win 64240, length 1360
20:08:00.888547 IP (tos 0x0, ttl 64, id 35303, offset 0, flags [DF], proto UDP (17), length 72)
jayce-virtual-machine.60351 > _gateway.domain: [bad udp cksum 0xd621 -> 0xc768!] 45215+ PTR? 2.170.168.192.in-addr.arpa. (44)
20:08:00.923597 IP (tos 0x0, ttl 128, id 22088, offset 0, flags [none], proto UDP (17), length 106)
_gateway.domain > jayce-virtual-machine.60351: [udp sum ok] 45215 NXDomain q: PTR? 2.170.168.192.in-addr.arpa. 0/1/0 ns: 2.170.168.192.in-addr.arpa. SOA . . 2016360 1800 900 604800 86400 (78)
^[^A20:08:04.037762 IP (tos 0x0, ttl 64, id 26078, offset 0, flags [DF], proto TCP (6), length 79)
实例2. 详细显示TCP包信息
jayce@jayce-virtual-machine:~$ sudo tcpdump -c 20
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
20:08:59.409796 IP jayce-virtual-machine.35452 > _gateway.domain: 57160+ A? connectivity-check.ubuntu.com. (47)
20:08:59.410035 IP jayce-virtual-machine.48539 > _gateway.domain: 64022+ AAAA? connectivity-check.ubuntu.com. (47)
20:08:59.410910 IP jayce-virtual-machine.35691 > _gateway.domain: 41874+ PTR? 2.170.168.192.in-addr.arpa. (44)
20:08:59.431140 IP _gateway.domain > jayce-virtual-machine.48539: 64022 0/1/0 (134)
20:08:59.432420 IP _gateway.domain > jayce-virtual-machine.35691: 41874 NXDomain 0/1/0 (78)
20:08:59.432422 IP _gateway.domain > jayce-virtual-machine.35452: 57160 3/0/0 A 35.232.111.17, A 35.224.170.84, A 34.122.121.32 (182)
20:08:59.433064 IP jayce-virtual-machine.36013 > _gateway.domain: 36005+ PTR? 136.170.168.192.in-addr.arpa. (46)
20:09:00.410602 IP jayce-virtual-machine.42520 > 17.111.232.35.bc.googleusercontent.com.http: Flags [S], seq 592400706, win 64240, options [mss 1460,sackOK,TS val 3801566753 ecr 0,nop,wscale 7], length 0
20:09:00.411110 IP jayce-virtual-machine.41750 > _gateway.domain: 8768+ PTR? 17.111.232.35.in-addr.arpa. (44)
20:09:00.633281 IP 17.111.232.35.bc.googleusercontent.com.http > jayce-virtual-machine.42520: Flags [S.], seq 807148971, ack 592400707, win 64240, options [mss 1460], length 0
20:09:00.633332 IP jayce-virtual-machine.42520 > 17.111.232.35.bc.googleusercontent.com.http: Flags [.], ack 1, win 64240, length 0
20:09:00.633435 IP jayce-virtual-machine.42520 > 17.111.232.35.bc.googleusercontent.com.http: Flags [P.], seq 1:88, ack 1, win 64240, length 87: HTTP: GET / HTTP/1.1
20:09:00.633667 IP 17.111.232.35.bc.googleusercontent.com.http > jayce-virtual-machine.42520: Flags [.], ack 88, win 64240, length 0
20:09:00.855193 IP 17.111.232.35.bc.googleusercontent.com.http > jayce-virtual-machine.42520: Flags [FP.], seq 1:149, ack 88, win 64240, length 148: HTTP: HTTP/1.1 204 No Content
显示与网络相关的信息
netstat
netstat
参数说明:
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
实例1. 列出所有端口 (包括监听和未监听的)
# netstat -a | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:30037 *:* LISTEN
udp 0 0 *:bootpc *:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 6135 /tmp/.X11-unix/X0
unix 2 [ ACC ] STREAM LISTENING 5140 /var/run/acpid.socket
实例2. 在 netstat 输出中显示 PID 和进程名称
# netstat -pt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 1 0 ramesh-laptop.loc:47212 192.168.185.75:www CLOSE_WAIT 2109/firefox
tcp 0 0 ramesh-laptop.loc:52750 lax:www ESTABLISHED 2109/firefox
实例3. 在 netstat 输出中显示当前系统所有tcp连接
[root@iZ2zeinb1j2xz9m1rtf1eoZ ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 172.19.xx.xx:22 125.33.xx.xx:12396 ESTABLISHED
tcp 0 0 172.19.xx.xx:58228 100.100.xx.xx:443 TIME_WAIT
tcp 0 0 172.19.xx.xx:35546 100.100.xx.xx:80 ESTABLISHED
tcp 0 0 172.19.xx.xx:22 125.33.xx.xx:12402 ESTABLISHED
tcp6 0 0 :::3306 :::* LISTEN
tcp6 0 0 :::5355 :::* LISTEN
udp 0 0 127.0.0.53:53 0.0.0.0:*
udp 0 0 172.19.xx.xx:68 0.0.0.0:*
udp 0 0 0.0.0.0:5355 0.0.0.0:*
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp6 0 0 :::5355 :::*
udp6 0 0 ::1:323 :::*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 17410 /run/systemd/private
unix 2 [ ACC ] SEQPACKET LISTENING 17421 /run/udev/control
检测两个主机间网络的连通情况和速度
ping
几种常见的用法如下:
- ping -n:跟无参数ping一个样。在默认情况下无参数ping一般都是只发送四个32字节数据包,-n的话可以指定发送多少数据包,通过这个命令从数据包返回的最短时间、最长时间、平均时间可以衡量网络速度、延迟,从丢失率可以衡量网络的稳定性。
- ping -t :不间断地Ping指定计算机,直到管理员中断
- ping -l:发送size指定大小的到目标主机的数据包。
- ping -r:在“记录路由”字段中记录传出和返回数据包的路由,探测经过的路由个数,但最多只能跟踪到9个路由。
- ping -s:计数跃点的时间戳(仅适用于 IPv4),有效范围从 1 到 4。
创建目录
mkdir
mkdir [-mp] 目录名
选项“-m”用于手动配置所创建目录的权限,“-p”用于递归创建所有目录。