总结一下Linux下常用的命令
nc
nc命令,这是Linux一般都带有的,被誉为“瑞士军刀”。windows和Linux都有,可以下载安装对应的平台工具。使用UDP和TCP协议的网络连接去读写数据,是一个稳定的后门工具。同时它也是一个功能强大的网络调试和嗅探工具。
使用格式:
nc [-options] hostname port[s] [ports] ... 连接到某个地方
nc -l -p port [options] [hostname] [port] 绑定端口等待连接
参数有下:
-e prog 程序重定向,一旦连接就执行。同时这样也有安全隐患
-i secs 延时间隔
-l 监听模式,用于入站连接
-n 制定数字的IP地址,不能用主机名
-p port 端口
-o file 记录16进制的传输
-r 任意指定本地及远程段口
-s addr 本地源地址
-u UDP模式
-v 详细输出 用两个 -v可得到更详细的内容
-w secs 超时
-z 将输入输出关掉,用于扫描
端口号可以指定单个,后者一个范围
当然nc 可以和watch命令配置动态实时监测
netstat
netstat命令用于显示各种网络相关信息,如:网络连接,路由表,接口状态多播成员等等
netstat输出结果可分为两个部分:有源TCP连接和有源Unix域套接口
有源TCP主要是用于监测网络传输相关
有源Unix用于本机通信,性能可以提高一倍
常见参数:
-a all的意思 显示所用选项,默认不显示LISTEN相关
-t tcp意思,仅显示tcp相关选项
-u udp的意思,仅显示udp相关
-n 拒绝显示的别名,能显示数字的全部转化成数字
-l 仅 列出有在listen的服务状态
-p 显示简历相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息
-s 按各个协议进行统计
-c 执行netstat的时间间隔
另外LISTEN和LISTENING状态只用-a 或 -l才能看到
netstat -a 列出所有端口,包括监听和未监听的
netstat -at 列出tcp端口
netstat -pt 先死PID和进程名字 (-p)
netstat -i 显示网络接口列表
可以利用watch 和 awk提取相关需要字段,用于监听
lsof
全称list open files,列出当前系统打开文件
应用程序打开文件的描述符提供了大量应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统检测以及排错有很大帮助
lsof常见参数:
lsof filename 显示打开指定文件的所有进程
lsof -a 表示两个参数都必须满足时才显示结果
lsof -c string 显示COMMAND列中包含指定字符串的进程打开的描述符
lsof -u username 显示所属user进程打开的文件
lsof -g gid 显示所属gid进程情况
lsof +d /DIR/ 显示目录下被进程打开的文件
lsof +D /DIR/ 同上,但是会递归
lsof -n 不将IP转化为hostname
lsof -i 用于显示符合条件的进程情况
ls -i[46] [protocol] [@hostname|hostaddr][:service|port]
ipv4|ipv6 TCP|UDP
lsof -i:22 查看22端口运行情况
uptime
显示结果包括服务器已经运行的时间,有多少用户登录,和对服务器性能的总体评估
load average记录了上个1,5,15分钟间隔的负载情况,表示在队列中等待执行的进程的数量,如果CPU阻塞,该值就变大
load average最佳值为1,说明每个进程都可以立刻被CU处理,多个CPU的系统中,这个值应 除以 物理CPU的个数
top
top命令显示了实际CPU的使用情况,默认5s刷新一次
PID: 进程标识
USER: 进程所有者的用户名
PRI:进程的优先级
NI: nice级别
SIZE:进程占用的内存数量,包括代码,数据,和堆栈
RSS:进程使用的物理内存数量
SHARE:该进程和其他进程共享内存的数量
STAT:进程的状态
S 休眠状态
R 运行状态
T 停止状态
D 中断休眠状态
Z 僵尸状态
%CPU:共享的CPU使用
%MEM 共享的物理内存
TIME:进程占用的CPU时间
COMMAND:启动任务的命令行,参数
iostat
iostat是sysstat包的一部分,显示系统启动后平均CPU时间与uptime类似
可以显示磁盘子系统的使用情况,iostat可以用来检测CPU利用率和磁盘利用率
%user: user level(应用)的CPU占用率情况
%nice: 加入nice优先级的user level的CPU占用率情况
%sys:system level(内核) 的CPU占用情况
%idle:空闲的CPU资源情况
Device :块设备名
Tps:设备每秒进行传输的数量(每秒的I/O请求)。多个单独的I/O请求可以被组成一个传输操作,因为一个传输操作可以是不同的容量
Blk_read/s,Blk——wrtn/s:该设备每秒读写的块数量,块可能为不同容量
Blk_read,Blk_wrtn:自系统启动以来读写的块设备总量
vmstat
vmstat命令提供了对进程、内存、页面I/O块和CPU等信息的监控,vmstat可以显示检测结果的平均值或者取样值
.process(procs)
r:等待运行时间的进程数量
b:处在不可中断睡眠状态的进程
w:被交换出去但是仍然可以运行的进程,这个值是计算出来的
.memoryswpd:虚拟内存数量
free: 空闲内存数量
buff: 用作缓冲区的内存数量
.swap
si:从硬盘交换来的数量
so:交换到硬盘去得数量
.IO
bi:向一个块设备输出的快数量
bo:从一个块设备接受的块数量
.system
in:每秒发生的中断数量,包括时钟
cs:每秒发生的context switches的数量
.cpu 整个CPU运行时间百分比
us:非内核代码运行时间(用户时间,nice时间)
sy:内核代码运行时间(系统时间)
id:空闲时间
wa:等待I/O操作时间
vmstat附加参数:
.m: 显示内核的内存利用率
.a: 显示内存页面信息,包括活跃和不活跃的内存页面
.n: 显示报头行,这个参数在使用采样模式并命令结果输出到一个文件时用
-p 分区,vmstat提供对I/O结果的统计
ps/pstree
系统分析最常用的命令,ps提供正在运行进程列表
pstree命令可以以树状结构显示所有进程信息,并且可以整合子进程信息
sar
sar程序也是sysstat安装包一部分,用于手机、报告和保存系统的信息。
sar命令三个应用组成
sar: 用于显示数据
sa1/sa2:用于搜集和存储数据
sar命令生成的数据默认保存在/var/log/sa/目录下
也可以使用sar在命令行下得到一个实时的执行结果,搜集的数据可以包括CPU利用率、内存页面、网络I/O等等呢过
sar 3 5 每个3s执行一次,执行5次sar
free
free命令显示系统的所用内存使用情况,包括空闲、被使用的和被交换的空间。
free命令显示也包括一些内核使用的缓存和缓冲区信息
参数:
-b,-k,-m,-g分别是以bytes,kilobytes,megabytes,gigabytes显示结果
-l 区别显示low和high内存
-c {count} 显示free输出的次数
pmap
pmap命令显示一个或者多个进程使用内存数量,可以使用这个工具来确定服务器上哪个进程占用了过多的内存而导致内存瓶颈
strace
strace截取和记录进程的系统调用信息,还包括进程接受的命令信号。这是一个很好的诊断和调试工具,但是需要系统管理员权限
strace -p <pid>
ulimit
可以通过ulimit来控制系统资源的使用
mpstat
mpstat命令也是sysstat的一部分。主要用于监测一个多CPU系统中每个可用CPU的情况。mpstat命令可以显示每个CPU或者所有CPU的运行情况,同时也可以像vmstat命令那样使用参数进行一定频率的采样结果监测
valgrind
内存和性能检测工具,主要用于内存泄露检测,性能检测