ip或–inet:此参数的效果和指定”-A inet”参数相同。

列出所有端口 (包括监听和未监听的)

1
2
3
netstat -a     #列出所有端口
netstat -at #列出所有tcp端口
netstat -au #列出所有udp端口

列出所有处于监听状态的 Sockets

1
2
3
4
netstat -l        #只显示监听端口
netstat -lt #只列出所有监听 tcp 端口
netstat -lu #只列出所有监听 udp 端口
netstat -lx #只列出所有监听 UNIX 端口

显示每个协议的统计信息

1
2
3
netstat -s   显示所有端口的统计信息
netstat -st 显示TCP端口的统计信息
netstat -su 显示UDP端口的统计信息

在netstat输出中显示 PID 和进程名称

1
netstat -pt

netstat -p可以与其它开关一起使用,就可以添加“PID/进程名称”到netstat输出中,这样debugging的时候可以很方便的发现特定端口运行的程序。

显示系统不支持的地址族(Address Families)

1
netstat --verbose

显示核心路由信息

1
netstat -r

找出程序运行的端口

并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。

1
netstat -ap | grep ssh

找出运行在指定端口的进程:

1
netstat -an | grep ':80'

通过端口找进程ID

1
netstat -anp|grep 8081 | grep LISTEN|awk '{printf $7}'|cut -d/ -f1

显示网络接口列表

1
netstat -i

显示详细信息,像是ifconfig使用netstat -ie

IP和TCP分析

查看连接某服务端口最多的的IP地址:

1
netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr

TCP各种状态列表:

1
netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}'

echo

算术表达式展开

echo $((2 + 2))

echo $(($((5**2)) * 3))

花括号展开

echo Front-{A,B,C}-Back    # Front-A-Back Front-B-Back Front-C-Back

echo Number_{1..5}      # Number_1  Number_2  Number_3  Number_4  Number_5

echo {Z..A}          # Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

echo a{A{1,2},B{3,4}}b    # aA1b aA2b aB3b aB4b

mkdir {2007..2009}-0{1..9} {2007..2009}-{10..12}

              # 创建一系列以数值”年-月”形式命名的目录。通过这种方式,可以使目录名按照 年代顺序排列。

参数展开

echo $USER

命令替换

ls -l $(which cp)       # 命令替换允许我们把一个命令的输出作为一个展开模式来使用

file $(ls /usr/bin/* | grep zip) # 管道线的输出结果成为 file 命令的参数列表

                             

ls -l “two words.txt”     # 操作有空格的文件名

在双引号中,参数展开、算术表达式展开和命令替换仍然有效

echo “$USER $((2+2)) $(cal)”

dianerta 4     October 2019

Su Mo Tu We Th Fr Sa

      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

软件安装

系统自带一些软件包仓库,你也可以安装新的软件包仓库。有时候需要先下载软件仓库才可以安装

基础知识:
https://www.vpser.net/vps-howto
关于ufw
https://www.cnblogs.com/sweet521/p/5733466.html

搜索历史命令

**<font style="color:#F5222D;background-color:#FADB14;">history | less</font>**

**<font style="color:#F5222D;background-color:#FADB14;">history | grep /usr/bin</font>**

安装需要编译的软件

1
2
3
4
5
6
7
8
9
10
11
12
- 编译
GNU configure system默认会编译输出到根目录,没有权限,所以在家目录创建一个文件夹
进入包含源代码的文件夹
设置安装路径
$ ./configure --prefix=$HOME/units174
创建成功之后文件夹里面会有Makefile文件
- 生成
$ make && make install
若提示没有make,输入sudo apt install make
安装到指定目录
- 执行
进入对应文件夹的bin目录运行即可

查找文件

1
2
3
4
5
6
7
8
9
10
11
12
13
locate bin/zip| grep bin			# locate 命令将会搜索它的路径名数据库,输出任一个包含字符串“bin/zip”的路径名
# locate 程序只能依据文件名来查找文件

# find 程序能基于各种各样的属性 搜索一个给定目录(以及它的子目录),来查找文件
find ~ # 递归输出此文件夹的所有内容
find ~ | wc -l # wc 程序来计算出文件的数量
203978
find ~ -type d | wc -l # 添加测试条件-type d 限制了只搜索目录
23728
find ~ -type f | wc -l # 只搜索普通文件
find ~ -type l | wc -l # 搜索符号链接
find ~ -type f -name "*.JPG" -size +1M | wc -l # 把它用双引号引起来, 从而阻止 shell 展开路径名
find ~ \( -type f -not -perm 0600 \) -or \( -type d -not -perm 0700 \)

xargs

从标准输入接受输入,并把输入转换为一个特定命令的 参数列表

1
2
find ~ -type f -name 'foo*' -print | xargs ls -l
# find 命令的输出被管道到 xargs 命令,之后,xargs 会为 ls 命令构建 参数列表,然后执行 ls 命令