linux命令基础精选

netstat查看系统连接数及当前连接IP,并排序

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

1.查看当前连接IP地址:

[root@centos69 ~]# netstat -nat

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN

tcp 0 0 192.168.1.200:22 192.168.1.162:52265 ESTABLISHED

tcp 0 0 :::22 ::😗 LISTEN

tcp 0 0 ::1:25 ::😗 LISTEN

2.查看80端口连接数

netstat -nat|grep -i ‘80’|wc -l

3.查看当前连接状态数量如LISTEN /ESTABLISHED /tcp

netstat -na|grep LISTEN|wc -l

4.查看连接IP并排序

netstat -na|grep ESTABLISHED|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort -nr|uniq -c|head -n 10

ps -ef 和 ps aux 的区别

ps [选项]
-e 显示所有进程。
-f 全格式。

ps -ef 是System V 风格的,ps aux 是用BSD的格式来显示。
ps aux 可以显示%CPU (进程占用的CPU百分比)%MEM (占用内存的百分比)STAT:进程状态,

command列太长时,aux会截断command列,而-ef不会。
所以需要看完整的命令式可以用 ps -ef , 需要看内存,CPU占比时可以用 aux。

xargs命令

xargs

xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。

例如,ls命令是不可以支持|管道来传递参数:
在这里插入图片描述
可见如果不加xargs,执行的ls命令会在当前目录执行,是错误的。

参数
-a file 从文件中读入作为sdtin
在这里插入图片描述

-n num 后面加次数,表明一次使用的参数的个数。
在这里插入图片描述

-t 表示先打印将执行命令,然后再执行。
在这里插入图片描述
-i 使用-i指定一个替换字符串{ },这个字符串在xargs扩展时会被替换掉,当-i与xargs结合使用,每一个参数命令都会被执行一次:

[root@server1 mnt]# find /mnt/ -perm 644
/mnt/3.sh
/mnt/4.sh
/mnt/file
/mnt/users
[root@server1 mnt]# find /mnt/ -perm 644|xargs -i -t mv {} {}.xargs
mv /mnt/3.sh /mnt/3.sh.xargs 
mv /mnt/4.sh /mnt/4.sh.xargs 
mv /mnt/file /mnt/file.xargs 
mv /mnt/users /mnt/users.xargs 
[root@server1 mnt]# find /mnt/ -perm 644
/mnt/file.xargs
/mnt/users.xargs
/mnt/3.sh.xargs
/mnt/4.sh.xargs

-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。

root@server1 mnt]# echo hello0hello0hello0hello |xargs -d0
hello hello hello hello

last命令

last命令

last命令用于显示用户最近登录信息。单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。

语法:last(选项)(参数)
选项
-a:把从何处登入系统的主机名称或ip地址,显示在最后一行;
-d:将IP地址转换成主机名称;
-f <记录文件>:指定记录文件。
-n <显示列数>或-<显示列数>:设置列出名单的显示列数;
-R:不显示登入系统的主机名称或IP地址;
-x:显示系统关机,重新开机,以及执行等级的改变等信息。
参数
用户名:显示用户登录列表;
终端:显示从指定终端的登录列表。

[root@server1 mnt]# last thermal
thermal  pts/0        :0               Mon Aug 31 22:19 - crash (1+00:13)   
thermal  :0           :0               Mon Aug 31 22:19 - crash (1+00:13)   
thermal  pts/1        :0               Sat Jul 18 17:00 - 17:21  (00:20)    
thermal  pts/0        :0               Sat Jul 18 16:47 - 17:21  (00:33)    
thermal  :0           :0               Sat Jul 18 16:46 - crash  (08:34) 

[root@server1 mnt]# last -x -10
root     pts/0        :0               Sun Sep 13 09:38   still logged in   
root     :0           :0               Sun Sep 13 09:00   still logged in   
runlevel (to lvl 5)   3.10.0-957.el7.x Sun Sep 13 08:57 - 14:26  (05:28)    
reboot   system boot  3.10.0-957.el7.x Sun Sep 13 16:56 - 14:26  (-2:-30)   
root     pts/1        :0               Sat Sep 12 10:30 - crash (1+06:26)   
root     pts/0        :0               Sat Sep 12 08:20 - crash (1+08:36)   
root     :0           :0               Sat Sep 12 08:20 - crash (1+08:36)   
runlevel (to lvl 5)   3.10.0-957.el7.x Sat Sep 12 08:20 - 08:57 (1+00:37)   
reboot   system boot  3.10.0-957.el7.x Sat Sep 12 16:19 - 14:26  (22:07)    
root     pts/1        :0               Tue Sep  8 10:17 - crash (4+06:01)

lsof 命令

-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-u:列出用户进程详情;
-h:显示帮助信息;
-v:显示版本信息。

在这里插入图片描述
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

sar 命令

sar命令可以通过参数单独查看系统某个局部的使用情况
sar 命令行的常用格式:

sar [options] [-A] [-o file] t [n]

在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式存放在文件中,options 为命令行选项,sar命令的选项很多,下面只列出常用选项:

-A:所有报告的总和。
-u:CPU利用率
-v:进程、I节点、文件和锁表状态。
-d:硬盘使用报告(磁盘IO)。
-r:没有使用的内存页面和硬盘块(内存利用率)。
-g:串口I/O的情况。
-b:缓冲区使用情况。
-a:文件读写情况。
-c:系统调用情况。
-R:进程的活动情况。
-y:终端设备活动情况。
-w:系统交换活动。
-n: 记录网络使用情况

sar -n DEV 5 5    // 网路设备的状态信息
sar -n SOCK 5 5   // SOCK的使用情况

find命令

-type
-name
-ctime
-size
-perm
-user
-group
-empty
正则表达式

arp命令

并且用于确定对应Ip地址的网卡物理地址。
arp -an
-a 解析所有
-n 不解析名称

tcpdump命令

tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

tcpdump 可以使用 and / or来进行匹配

tcpdump -i eth0		/打印所有进入或离开sundown的数据包.
tcpdump host  <主机名>/<IP>
tcpdump ip host ace and not helios		/ip获取数据包,not是除过helios
tcpdump -i eth0 src host hostname	/截获主机hostname发送的所有数据
tcpdump -i eth0 sdst host hostname	/截获所有到主机hostname的数据包
tcpdump tcp port 23 and host 210.27.48.1	/见识23端口和48.1主机
tcpdump udp port 123 	/监视本机的udp 123端口 123 为ntp的服务端口
tcpdump net ucb-ether	/监控通过ucb网络的
tcpdump gateway snup	/监控通过snup网关的

curl命令

curl url		/可以获取该url的文本信息
curl -i url		/可以获取文本以及协议头部信息,-I值获取头部信息
curl -x proxy url	/使用代理获取网页文本信息)
curl -X POST 		/指定请求的方式为POST
自定义用户代理,下面伪装成火狐浏览器进行请求:
curl -A “Mozilla/5.0 (Android; Mobile; rv:35.0) Gecko/35.0 Firefox/35.0” http://www.baidu.com
curl -c “cookie-example” http://www.example.com  /-c后为要保存cookie的文件名
curl -c “cookie-example” http://www.example.com  /-b读取cookie
自定义HEADER头部:
curl -H “Referer: www.example.com”  http://www.baidu.com
curl -H “User-Agent: Custom-User-Agent” http://www.baidu.com
curl -H “Cookie: JSESSIONID=D0112A5063D938586B659EF8F939BE24” http://www.example.com

ping 和 traceroute

ping 程序是用来探测主机到主机之间是否可通信。

二者都是基于ICMP协议实现的。
ping原理: ping通过封装icmp数据包(包括目标主机的MAC地址),然后按照物理网络的传输方式进行发送,目标主机进行拆解,如果mac地址是自己的,就响应一个ICMP包。

尽管ping工具也可以进行侦测,但是,因为ip头的限制,ping不能完全的记录下所经过的路由器。所以Traceroute正好就填补了这个缺憾。

(TTL:time to live 指定了数据包最多能经过几次路由器)
traceroute原理: 向目标主机发送 TTL=1 的 ICMP 数据包,经过第一个路由后 TTL减一等于0,就丢弃数据包。然后在发送TTL=2的udp数据包,反复直到到达目的主机,此时就获取了所有的路由器IP。

ss命令

ss 是 socket statistics 的缩写。顾名思义,ss 命令可以用来获取socket 统计信息和netstat 类似的内容。但 ss 的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效

当服务器的连接特别大的时候,使用ss命令才是王道。
ss利用了TCP协议栈中 tcp_diag. tcp_diag 是一个用于分析统计的模块,可以获得内核中第一手的信息。

-n  --numeric不解析服务名称
-r --resolve解析主机名
-l  --listening显示监听状态的套接字(sockets)
-a  --all显示所有套接字
-o  --options显示计时器信息
-e  --extended显示详细的套接字(socket)的内存使用情况
-p  --processed显示使用套接字的进程
-i  --info显示 tcp 内部信息
-s  --summary显示套接字(socket)使用概况
-4  --IPv4仅显示 IPv4的套接字
-6
-0(零)–packet  显示 PACKET 套接字
-t  --tcp仅显示 TCP 套接字
-u  --udp仅显示 UDP套接字
-d  --dccp仅显示 DCCP 套接字
-w  --raw仅显示 RAW 套接字
-x  --Unix仅显示 Unix 套接字
-f  --family=FAMILY显示 FAMILY 类型的套接字,FAMILY可选 Unix, inet, inet6, link , netlink
-D  --diag=FILE将原始TCP 套接字信息转储到文件
-F  --filter=FILE从文件中都去过滤信息 FLITER  := [ state TCP-STATE ] [ EXPRESSION ]

du,df,free

du : 显示每个文件和目录的磁盘使用空间~~~文件的大小。

df:显示磁盘分区上可以使用的磁盘空间

free: 可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。

du和df显示的值不一样?
显示大小不一样,一般而言,df显示的使用空间要大于du,这是因为:

当一个文件被删除的时候,在文件系统的目录中已经不可见了,所以du就不会再统计它了。然而如果此时还有运行的进程持有这个已经被删除了的文件的句柄,那么这个文件就不会真正在磁盘中被删除,分区超级块中的信息也就不会更改。这样df仍旧会统计这个被删除了的文件。

查看方法:lsof |grep delete
列出来的这些文件,表示已经删除,但实际上进程还在使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值