基础命令
ls -la 路径
l表示详细列表展示,a显示所有文件含隐藏文件,h表示可读性较高的形式显示
pwd 打印当前工作目录
cd …
上一级目录
mkdir -p 路径
创建不存在的多层目录,不加-p报错
touch 文件名.后缀
创建文件,可多个
cp 原路径 新路径
复制文件,复制文件夹加-r
mv 原路径 新路径
这和rm命令一样,是一个具有破坏性的命令,使用不当后果很严重。移动文件或文件夹,重命名也是此命令,如果路径不是文件夹,则会自动修改文件名。
注意:若移动到某个文件夹,需要在文件夹名后面加上 / ,否则移动后文件名会变为文件夹名。
rm -f 路径
强制删除文件,删除文件夹用-rf,也可将路径换为通配符,如Linux*,则删除Linux开头的文件
vim 路径
打开文件编辑,:wq保存退出,:x智能判断是否保存并退出
“:x”在文件没有修改的情况下,表示直接退出,在文件修改的情况下表示保存并退出;
如果文件没有被修改,但是使用wq进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用x进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。
因此建议以后使用“:x”来进行对文件的保存退出。
ls -la >>文件
将命令执行结果保存至文件中,>用于覆盖重定向,>>用于追加重定向
cat 路径
直接打开一个文件,增加路径及>符号可合并文件
ls -l 文件名
查看文件权限
chmod 【who】operator【permission】 文件名
who:
u:文件属主权限 g:同组用户权限 o:其他用户权限 a:所有用户
operator:
- 增加权限 - 取消权限 = 设置权限
permission:
字母表示法:r 读,w 写,x 执行,l 加锁
数字表示法:r-4,w-2,x-1
权限位置上,每一个最大的值为7,最小为0,即没有任何权限
例:chmod u+x,g+w,o+x 1.txt(给文件的所属者增加x权限,所属组增加w权限,其他用户增加x权限)
chmod 711 1.txt(文件的权限设置为wrx-x-x)
chmod a+r 1.txt(将读权限赋给所有人)
chmod -R 755 /syy (将文件夹syy下的所有子目录及所有文件的权限都设置为755,不加-R就只是改变文件夹syy的属性)
chown luckin:syy 1.txt(将文件1.txt的拥有者设置为syy,用户组设置为luckin)
linux两台服务器之间文件/文件夹拷贝
scp -r 本地文件夹路径 目标服务器用户名@ip地址:路径,然后输入密码即可
scp -r /root/test/syy root@139.199.183.68:/root/test
拷贝文件夹
scp /root/test/syy.txt root@139.199.183.68:/root/test
拷贝文件
==df -h ==
查看磁盘空间,-h表示以可读性高的形式展示
du -sh 目录路径
例:du -sh 1.txt。查看文件或目录的真实大小,s表示只显示汇总的大小,h表示高可读性
head/tail -n 路径
查看文件的前后n行
less 路径
查看较少内容,有需要则用回车空格或上下键查看更多
ln -s 源文件或目录 目标文件或目录
linux软链接,相当于Windows中的快捷方式。此命令用于创建软链接。
例如:ln -s /root/test/syy/1.txt kuaijie (创建1.txt文件的软链接到当前目录下)
ln -snf /root/test/syy/2.txt kuaijie(修改软链接指向新的路径)
find 路径范围 选项 选项值
例:find ./ -name xx.txt
-name:按照文件名称进行搜索(支持模糊搜索)
例:find /root/test -name 1*(用于模糊搜索1开头的文件)
-size:按文件大小来查找(c:字节,w:双字节,k:kb,M:MB,G:GB)
例如:find / -size -100k(查找出小于100k的文件,大于的话用加号)
-amin:按文件访问时间进行搜索,单位是分钟,a的意思是access time
例如:find / -amin -10(查找在系统中最后10分钟访问的文件)
-atime:按文件访问时间进行搜索,单位是天
例如:find / -atime -2(查找在系统中最后48小时访问的文件)
-mmin:按文件修改时间进行查找,m的意思是modify time
例如:find / mmin -5(查找在系统中最后5分钟里修改过的文件)
-mtime:按文件修改时间进行查找
例如:find / mtime -1(查找在系统中最后24小时里修改过的文件)
-group:按文件所属组进行搜索
例如:find /test -group root(在test目录下查询所属组为root的文件)
-user:按文件所有者进行搜索
例如:find /home -user root(在test目录下查询所有者为root的文件)
-type:按文件类型进行搜索,f表示文件,d表示目录,l表示软链接
例如:find /test -type f(在test目录下查询所有文件)
混合方式查找
参数有:!,-and(-a),-or(-o)
find / -size -100k -a -mtime -2(在根目录下查找小于100k并在最后两天内修改的文件)
uname -a
获取操作系统类型,表示获取全部系统信息
head -n 1 /etc/issue
查看操作系统版本
cat /proc/cpuinfo
查看CPU信息的linux系统信息命令
hostname -f
输出当前主机名中的全限定域名(FQDN)
id 用户名
显示指定用户的基本信息
netstat -nl | grep 110
查看110端口是否可以使用,有结果的话就是可以使用
wc -lwc 路径
统计文件内容信息,l表示行,w表示单词数,c表示字节数
date +%F(等价于#date “+%Y-%m-%d” )
表示日期,必须是大写的F
date “+%F %T”
引号表示让“年月日与时分秒”成为一个不可分割的整体
clear或Ctrl+L
清屏,但实际上是把信息隐藏到最上面
ls / | grep y
针对上面这个命令说明:
①以管道作为分界线,前面的命令有个输出,后面需要先输入,然后再过滤,最后再输出,通俗的讲就是管道前面的输出就是后面指令的输入;
②grep指令:主要用于过滤,即查询根目录下包含y字母的文档名称
shutdown -h now 正常关机
reboot重启
shutdown -h 12:00
在12点关机
uptime
计算机持续在线时间,即开机到现在的运行时间
wget 下载链接
下载链接内容,下载到当前目录
crontab 选项
-l:列出指定用户的计划任务列表
-e:编辑指定用户的计划任务列表
-u:指定用户名,不指定默认当前用户
-r:删除指定用户的计划任务列表
crontab -e
类似vim编辑所有定时任务,可增删改查
crontab -l
查看所有定时任务
crontab -r
删除当前用户的所有定时任务
编辑计划任务(重点)
计划任务的规则语法格式,以行为单位,一行则为一个计划:
分 时 日 月 周 需要执行的命令
取值范围:
分:0~59
时:0~23
日:1~31
月:1~12
周:0~7,0和7表示星期天
四个符号:
:表示取值范围中的每一个数字
-:做连续区间表达式的,要想表示1到7,则可以写成:1-7
/:表示每多少个,例如:想每10分钟一次,则可以在分的位置写:/10
,:表示多个取值,比如想在1点,2点6点执行,则可以在时的位置写:1,2,6
每月1、10、22日的4:45重启network服务
45 4 1,10,22 * * service network restart
curl -# -O 下载链接
下载链接内容,带进度条
在linux中存在一个进程:init (initialize,初始化),进程id是1。
查看进程:#ps -ef|grep init
该进程存在一个对应的配置文件:inittab(系统运行级别配置文件,位置/etc/inittab)
0 — 表示关机级别(不要将默认的运行级别设置成这个值)
1 — 单用户模式
2 — 多用户模式,不带NFS(Network File Syetem)
3 — 多用户模式,完全的多用户模式(不带桌面的,纯命令行模式)
4 — 没有被使用的模式(被保留模式)
5 — X11,完整的图形化界面模式
6 — 表示重启级别(不要将默认的运行级别设置成这个值)
与该级别相关的几个命令:
#init 0 表示关机
#init 3 表示切换到不带桌面的模式
#init 5 切换到图形界面
#init 6 重启电脑
注意:init指令需要超级管理员的权限,普通用户无法执行。
这些命令其实都是调用的init进程,将数字(运行级别)传递给进程,进程去读配置文件执行对应的操作。
ssh(secure shell,安全外壳协议),该协议有2个常用的作用:远程连接协议、远程文件传输协议。SSH 为建立在应用层基础上的安全协议。
协议使用端口号:默认是22
可以是被修改的,如果需要修改,则需要修改ssh服务的配置文件:
#/etc/ssh/ssh_config
端口号可以修改,但是得注意2个事项:
a. 注意范围,端口范围是从0-65535;
b. 不能使用别的服务已经占用的端口;
#service sshd start/stop/restart
#/etc/init.d/sshd start/stop/restart
服务启动/停止/重启
终端工具主要帮助运维人员连接远程的服务器,常见终端工具有:Xshell、secureCRT、Putty等。
service 服务名 start/stop/restart
控制软件服务启动/停止/重启
例:
#service httpd start,查看是否启动:ps -ef|grep httpd
chkconfig
相当于开机启动项的管理服务
chkconfig --list network
开机启动服务查询,以network为例,3级别为关闭(off),则表示其在3启动形式下默认开机不启动
5对应的也是关闭,则表示其在桌面环境下也是开机不启动。
chkconfig --del 服务名
删除服务
chkconfig --add 服务名
添加服务
chkconfig --level 35 httpd on/off
设置httpd服务在3,5级别下默认开机启动
同步服务器时间
①一次性同步时间(简单)
#ntpdate 时间服务器的域名或ip地址
②设置时间同步服务
服务名:ntpd
启动ntpd服务
service ntpd start或者 /etc/init.d/ntpd start
设置ntpd服务开机启动:
#chkconfig --list|grep ntpd
#chkconfig --level 35 ntpd on
rpm
rpm相当于软件管家,对软件进行查询、卸载、安装
rpm -qa|grep 关键词
查询某个软件的安装情况,-q代表查询,-a代表全部
rpm -e 软件的名称
卸载某个软件
rpm -e 软件包名 --nodeps
卸载有依赖关系的软件
lsblk
查看块状设备的信息
rpm -ivh 软件包完整名称
安装软件。
-i:install,安装
-v:显示进度条
-h:表示以“#”形式显示进度条
网络命令
netstat -tunlp
查看所有端口的使用情况
-t:仅显示tcp相关的选项
-u:仅显示udp相关的选项
-n:拒绝显示别名,能显示数字的全部转化为数字
-l:仅列出在Listen(监听)的服务状态
-p:显示建立相关链接的程序名
netstat -tnlp | grep 80
netstat命令一般用于检验本机端口的占用情况,用于显示与IP、TCP、UDP和ICMP协议相关的统计数据。支持相近信息展示,如输入80,显示的结果包含8009、8080、8005。
查看网络连接状态
-t:表示只列出tcp协议的连接;
-n:表示将地址从字母组合转化成ip地址,将协议转化成端口号来显示;
-l:表示过滤出“state(状态)”列中其值为LISTEN(监听)的连接;
-p:表示显示发起连接的进程pid和进程名称;
lsof -i:端口号
查看端口的占用情况,如果被占用则显示占用信息,未被占用则不显示任何信息。
ping -c 10 主机名或ip地址
-c用来设置发包次数,否则会一直发送
mtr 链接
mtr命令把ping命令和tracepath命令合成了一个,更加直观
traceroute 主机地址
查找当前主机与目标主机之间所有的网关
netstat -n -p|grep SYN_REC | wc -l
上面命令可以查找出当前服务器有多少个活动的 SYNC_REC 连接。正常来说这个值很小,最好小于5。 当有Dos攻击或者邮件炸弹的时候,这个值相当的高。
ifconfig
获取网卡信息,英文全称是network interfaces configuring
第一行:eth1 Link encap:Ethernet HWaddr 00:0C:29:42:9F:CE
eth1是网卡名称;Link encap:Ethernet是连接类型,这里是Ethernet(以太网);HWaddr 00:0C:29:42:9F:CE是网卡物理地址(MAC地址)。
第二行:inet addr:192.168.78.133 Bcast:192.168.78.255 Mask:255.255.255.0
inet addr:192.168.78.133是网卡的IPv4地址;Bcast:192.168.78.255是广播地址;Mask:255.255.255.0是子网掩码。
第三行:inet6 addr: fe80::20c:29ff:fe42:9fce/64 Scope:Link
部分可能没有,这一行是IPv6地址。
第四行:UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
UP是网卡开启状态;(BROADCAST应该是支持广播;)RUNNING是网卡正在运行;MULTICAST说明支持组播;MTU:1500是最大传输单元1500字节。
第五、六、七行:RX packets:3084 errors:0 dropped:0 overruns:0 frame:0
TX packets:2716 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
这三行是接收和发送数据包的统计情况。
第八行:RX bytes:357836 (349.4 KiB) TX bytes:264093 (257.9 KiB)
这一行是接收和发送数据字节数统计信息。
注意:lo是表示主机的回环地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 httpd服务器的指定到回环地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。
ifconfig 网卡名 ip值 netmask 掩码
设置ip和掩码,重启或重启网卡服务就消失,即只能临时设置ip
vi /etc/sysconfig/network-scripts/ifcfg-eth0
通过修改配置文件的方式来修改ip,此设置为永久修改(目前有问题,可能是centOS版本问题)
route add default gw 网关值
设置默认网关,就是在找不到对应路由的情况下,就走这条路由(默认网关),这是设置访问外网所必要的设置。
route del default gw 网关值
在配置网关前先将命令行配置好的网关删掉
ifconfig 网卡名 up/down
对网卡进行激活/终止
ifconfig 网卡名 hw ether MAC地址
用ifconfig修改网卡的MAC地址
ifconfig 网卡名 arp
用ifconfig启用arp协议,换成-arp为关闭显卡
ifdown 网卡设备名
禁用该网卡设备, 用ifconfig还能看到,不好用
ifup 网卡设备名
启用该网卡设备
vi /etc/sysconfig/network
修改主机名,通过配置文件永久修改
vi /etc/resolv.conf
修改DNS地址,如有多个在后面使用空格隔开
iwconfig
用于查看无线网卡信息,你可以用他查看设置基本的 Wi-Fi 网络信息,例如 SSID, channel 和 encryption等
nslookup
nslookup 这个命令在有 ip 地址时,可以用这个命令来显示主机名,可以找到给定域名的所有 ip 地址。而你必须连接到互联网才能使用这个命令
arp -a
查看arp状态、本地缓存mac表
arp -d 主机地址
删除指定的缓存记录
chkconfig --list | grep iptables
检查防火墙是否开机启动
service iptables start/restart/stop
防火墙服务启动、重启、关闭
service iptables status
查看防火墙的状态
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
设置允许80端口通过防火墙
Iptables:主命令
-I:表示将规则放到最前面
-A:add,添加规则(最后)
INPUT:进站请求(出站output)
-p:protocol,指定协议(icmp/tcp/udp)
–dport:指定端口号
-j:指定行为结果,允许(accept)/禁止(reject)/丢弃(drop)
添加完成之后需要保存操作:
/etc/init.d/iptables save
监控命令
内存主要可以从整个系统内存情况、各个进程对应内存使用情况和每个进程内存详细情况三个纬度进行监控,其中整个系统内存情况可以使用vmstat和free两个指令,每个进程对应内存情况可以使用top和ps两个指令,而每个进程内存详细情况可以使用pmap和jmap。
top -d 秒数
动态查看服务器进程占用的资源,能够实时显示系统中各个进程的资源占用状况,按下q键退出
S:表示进程的状态status(sleeping,其中S表示睡眠,R表示运行);
%CPU:表示CPU的占用百分比;
%MEM:表示内存的占用百分比;
COMMAND:进程的名称或者路径;
free -m
查看内存使用情况,-m表示以mb为单位查看
Mem:内存的使用情况总览表。
totel:机器总的物理内存
used:用掉的内存
free:空闲的物理内存
shared:多个进程共享的内存总和,当前废弃不用
buffers:缓存内存数
cached: 缓存内存数
vmstat 采样时间间隔 采样次数
Virtual Memory Statistics 虚拟内存统计。只能查看特定的CPU信息,对系统的整体情况进行统计。它是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。相比top,它可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。
Procs(进程)
r:运行队列中进程数量,这个值也可以判断是否需要增加CPU(长期大于1)
b:等待IO的进程数量
Memory(内存)
swpd:使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能
free:空闲物理内存大小
buff:用作缓冲的内存大小
cache:用作缓存的内存大小,如果cache值非常大说明缓存文件比较多,如果此时io中的bi比较小,说明文件系统效率比较好
Swap
si:从磁盘交换到swap虚拟内存的交换页数量,单位:KB/秒。如果这个值大于0,表示物理内存不够用或者内存泄露了
so:从swap虚拟内存交换到磁盘的交换页数量,单位:KB/秒,如果这个值大于0,表示物理内存不够用或者内存泄露了
内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。
当看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,这个是不正确的。不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
IO
bi:每秒读取的块数
bo:每秒写入的块数
system(系统)
in:每秒中断数,包括时钟中断
cs:每秒上下文切换数
CPU(以百分比表示)
us:用户进程执行时间百分比(user time) us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
sy:内核系统进程执行时间百分比(system time) sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
wa:IO等待时间百分比 wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
id:空闲时间百分比
mpstat
Multiprocessor Statistics,多处理器统计是实时系统监控工具,它会报告与CPU相关的统计信息,这些信息存放在/proc/stat文件中。
格式:mpstat -P ALL 2
ALL表示显示所有CPUs,也可以指定某个CPU;2表示刷新间隔。
%user:表示处理用户进程所使用CPU的百分比。用户进程是用于应用程序(如Oracle数据库)的非内核进程;
%nice:表示使用nice命令对进程进行降级时CPU的百分比;
%system:表示内核进程使用的CPU百分比;
%iowait:表示等待进行I/O所使用的CPU时间百分比;
%irq:表示用于处理系统中断的CPU百分比;
%soft:表示用于软件中断的CPU百分比;
%steal :显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比
%guest :显示运行虚拟处理器时CPU花费时间的百分比
%idle:显示CPU的空闲时间;
%intr/s:显示每秒CPU接收的中断总数;
sar
sar(System ActivityReporter系统活动情况报告)是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
-A:所有报告的总和
-b:显示I/O和传递速率的统计信息
-B:显示换页状态
-d:输出每一块磁盘的使用信息
-e:设置显示报告的结束时间
-f:从制定的文件读取报告
-i:设置状态信息刷新的间隔时间
-P:报告每个CPU的状态
-R:显示内存状态
–u:输出cpu使用情况和统计信息
–v:显示索引节点、文件和其他内核表的状态
-w:显示交换分区的状态
-x:显示给定进程的装
-r:报告内存利用率的统计信息
sar -p 1 4
报告每个cpu的状态,1秒一次一共4次
sar -q
查看平均负载
sar -r
查看内存使用情况
命令格式:sar -n DEV 3 100
IFACE:网络设备的名称
rxpck/s:每秒钟接收到的包数目
txpck/s:每秒钟发送出去的包数目
rxkB/s:每秒钟接收到的字节数
txkB/s:每秒钟发送出去的字节数
ps -ef 或 -aux
查看服务器的进程信息,e表示列出全部进程,f表示显示全部的列
PID:进程id
PPID:该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程称之为僵尸进程(parent process ID)
C:Cpu的占用率,其形式是百分数
STIME :系统启动时间
TTY :登入者的终端机位置
TIME :使用掉的CPU时间
CMD :所下达的是什么指令
ps -ef | grep 进程名称
在ps的结果中过滤出想要查看的进程状态
grep命令是查找,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来
lsof
列出打开的文件,它常用于以列表形式显示所有打开的文件和进程,包括磁盘文件,网络套接字,管道,设备和进程。
kill 进程PID
先用ps -ef|grep firefox查询进程ID,用此命令杀掉进程即可。
pgrep sshd
757
29678
pgrep是专门用于进程查询的grep
说明:以firefox进程为例,查询结果为
root 2626 1 11 10:02 ? 00:00:01 /usr/lib64/firefox/firefox
root 2670 2588 0 10:02 pts/0 00:00:00 grep firefox
其中,firefox进程真正的PID是2626
pkill -9 firefox
说明:-9即发送的信号是9,pkill跟kill的区别在于kill需要使用-s 9
killall 进程名称
例如:killall firefox。杀掉Apache的进程,killall更好用
说明:init是Linux系统操作中不可缺少的程序之一。所谓的init进程,是一个由内核启动的用户级进程。内核启动后就已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等,然后通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程,进程编号始终为1,其他所有进程都是init进程的子孙级进程。所以init进程是不可杀的。
killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。pkill或者pgrep只要给出进程名的一部分就可以终止进程。
nohup 命令 &
使命令永久地在后台执行。nohup命令表示如果你正在运行一个进程,而且觉得退出账户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出账户/关闭终端之后继续运行相应的进程。
pstree
pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。
/etc/sysconfig/network文件中永久设置主机名
FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。(通过符号“.”)
例如:主机名是bigserver,域名是mycompany.com,那么FQDN就是bigserver.mycompany.com
问题:不设置FQDN会怎么样?
①很多开源服务器软件(例如Apache)则无法启动,或出现报错;
②方便记忆,看到主机名对其作用有一个初步判断;
③如果不设置则会影响本地的域名的解析(本地访问);
ostat
主要用于建库系统设备的io负载情况iostat -d -k 2 6
参数-d表示显示设备磁盘的使用状态(-C则表示查看CPU统计信息);-k表示某些使用block为单位的列强制使用kilobytes为单位,2表示数据每隔2秒刷新一次 6表示一共刷新6次
tps:该设备每秒的传输次数。“一次传输"意思是"一次I/O请求”。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。
kB_read/s:每秒从设备读取的数据量;
kB_wrtn/s:每秒向设备写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;这些单位都为kb;
nmon命令
nmon -f -t -s30 -c180
数据采集:为了实时监控系统在一段时间内的使用情况,并记录结果,生成一个hostname_timeSeries.nmon文件,命名方式为服务器名_日期时间.nmon
参数说明:
-f:按照标准格式输出文件,即hostname_YYYYMMDD_HHMM.nmon
-t:输出中包含占用率较高的进程
-s30:每30秒进行一次数据采集
-c100:一共采集180次
特别说明:命令启动后,会在nmon所在目录下生成监控文件,并持续写入资源数据,直至所有监控点收集完成。即监控一个小时,这些操作均自动完成,无需手动干预,可以继续完成其他操作。如果想停止该监控,需要通过ps -ef | grep nmon查询进程号,然后杀掉该进程以停止监控。
监控文件生成后,使用IBM的nmon分析工具来解析数据。
下载地址:https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power%20Systems/page/nmon_analyser
数据分析详解:
Avg disk tps during an interval:每个时间间隔内,平均每秒的IO数
Max disk tps during an interval:每个时间间隔内,每秒最大IO次数
Max disk tps interval time:最大传送次数出现的时间
Total number of Mbytes read:整个监控时间内读的字节数
Total number of Mbytes written:整个监控时间内写的字节数
Read/Write Ratio:读写比率
CPU_SUMN:每一个CPU在执行时间内的占用情况,单个CPU看不出来,多核CPU时作用更大一些
MEM:内存使用情况描述,包括物理内存和虚拟内存
memtotal:服务器总内存,单位M
swaptotal:虚拟总内存
memfree:剩余总内存
swapfree:剩余虚拟内存
cached:已占用的文件系统缓存大小,由物理内存分配
buffer:块设备的读写缓冲区
swapcached:虚拟内存中已分配出来的内存大小
inactive:非活跃,最近不常使用的内存大小
active:活跃,表示这些内存数据正在使用中,或者刚被使用过
NET:系统中每个网络适配器的数据传输速率(千字节/秒)
Total-Read:网络适配器每秒接收的数据包总大小,单位是KB/秒
Total-Write:网络适配器每秒发送的数据包总大小,单位是KB/秒
CPU Utilisation
CPU:cup个数
User%:用户模式下执行程序所使用的CPU百分比
Sys%:内核模式下执行的程序所使用的CPU百分比
Wait%:等待IO所花的时间百分比
Idle%:cup空闲率,与上面三个之和等于1
steal time:CPU等待时间,说明CPU资源不足,超过一定数额需要增加更多CPU资源
Memory and Swap
PageSize:内存分页大小
操作系统将虚拟内存地址和物理内存地址分离,给进程带来便利和安全。但同时也要考虑如何高效翻译虚拟内存地址。如果将对应关系一次性记录在一张表,翻译时内存占用会非常大。因此linux采用分页的方式来记录对应关系,把物理内存和进程空间 都分割成页,通常大小为 4kb。
Network
Recv:在时间间隔的每秒内接收到的数据(以千字节计)
Trans:在时间间隔的每秒内传输的数据(以千字节计)
packin:在时间间隔内接收到的包数
packout:在时间间隔内发送的包数
insize:一次读的字节数目
outsize:一次写的字节数目
peak:最大值
Disk
Transfers/sec:每秒磁盘传输率,是指磁盘上的读写速率
系统配置相关:
查看内核/操作系统/CPU信息: uname -a
查看操作系统版本: head -1 /etc/issue
查看网卡信息:cat /sbin/ifconfig
查看cpu配置: cat /proc/cpuinfo
查看mem配置:cat /proc/meminfo
查看环境变量 资源: env
查看各分区使用情况: df -h
查看指定目录的大小: du -sh
查看系统负载 磁盘和分区: cat /proc/loadavg
查看挂接的分区状态: mount | column -t
查看hosts配置:cat /etc/hosts
查看所有网络接口的属性: ifconfig
查看路由表: route -n
查看tcp协议配置(ipv4): /proc/sys/net/ipv4
性能分析相关工具:
ps,pstree: 命令是系统分析最常用的基本命令,ps命令提供了一个正在运行的进程的列表,列出进程的数量取决于命令所附加的参数。
uptime: 查看系统运行时间、用户数、负载
top :实时显示cpu负载、进程资源占用
vmstat:整体性能监控,cpu,mem,页面io等。
free: free命令显示系统的所有内存的使用情况,包括空闲内存、被使用的内存和交换内存空间。Free命令显示也包括一些内核使用的缓存和缓冲区的信息。
-m 以M形式展示数据
-g 以G形式展示数据
pmap: pmap命令显示一个或者多个进程使用内存的数量,你可以用这个工具来确定服务器上哪个进程占用了过多的内存从而导致内存瓶颈。
iostat:iostat是sysstat包的一部分。Iostat显示自系统启动后的平均CPU时间(与uptime类似),它也可以显示磁盘子系统的使用情况,iostat可以用来监测CPU利用率和磁盘利用率。
sar: sar也是sysstat安装包的一部分。sar命令用于收集、报告和保存系统的信息。
mpstat: mpstat命令也是sysstat包的一部分。Mpstat命令用于监测一个多CPU系统中每个可用CPU的情况。Mpstat命令可以显示每个CPU或者所有CPU的运行情况
ulimit: 可以通过ulimit来控制系统资源的使用。
网络端口号相关:
Netstat 用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
通过netstat可以查看网络连接、端口号等占用情况
查看TCP/UDP端口:netstat -tuoln
查看进程名运行的端口号:netstat -anp|grep 进程名
当需要监控某个服务的端口号时可以首先获取该服务的监听端口号,如tomact进程
netstat -anp|grep tomcat
根据端口查看运行的进程:
netstat -anp|grep 端口号 或 lsof -i:端口号
通常用于查看某个端口号下建立的连接数,如8083端口号下的连接数统计:
netstat -anp|grep:8083|wc -l
netstat -tln 查看服务监听端口
查看进程 ps aux
查看指定服务的进程号,如tomcat服务: ps aux|grep tomcat
结束进程 kill -15 pid 立即释放资源; kill -9 pid 不会立即释放资源