1.uname

功能:打印系统信息

语法:uname [OPTION]...

常用选项:

-a  打印所有信息

-s  打印内核名称

-n  打印主机名

-r  打印内核发行版

-v  打印内核版本

-m  打印机器硬件名

-p  打印处理器类型

-i  打印硬件平台

-o  打印操作系统

示例:

[root@localhost tmp]# uname -a
Linux localhost.localdomain 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost tmp]# uname -s
Linux
[root@localhost tmp]# uname -n
localhost.localdomain
[root@localhost tmp]# uname -r
2.6.32-504.el6.x86_64
[root@localhost tmp]# uname -v
#1 SMP Wed Oct 15 04:27:16 UTC 2014
[root@localhost tmp]# uname -m
x86_64
[root@localhost tmp]# uname -m
x86_64
[root@localhost tmp]# uname -p
x86_64
[root@localhost tmp]# uname -i
x86_64
[root@localhost tmp]# uname -o
GNU/Linux


2.hostname

功能:查看或设置系统的主机名

示例:

centos6的方法:
查看主机名
[root@localhost ~]# hostname
localhost.localdomain
修改主机名
[root@localhost ~]# hostname  yyl.com.cn  #运行后立即生效(重新启动shell),属于临时生效

修改hostname的配置文件,永久生效
/etc/sysconfig/network

centos7的方法:
临时修改I的方法都一样
永久生效的方法有却别
.hostnamectl set-hostname <主机名> 
或
hostnamectl --static set-hostname <主机名>


3.dmesg

功能:打印或控制内核缓冲区

再直白点,用来显示开机信息,因为kernel会将开机信息存储在ring buffer中

语法格式:dmesg 【-cn】【-s 缓冲区大小】

常用选项:

-c 显示完开机信息后,清除ring buffer中的内容

-n 设置记录信息的层级,比如:-n 1为最低级,只向控制台显示内核恐慌信息

-s 缓冲区大小,默认设置为8196,与内核的默认syslog缓冲区大小一致

示例:

由于dmesg日志的输出不适合在一页中完全显示,因此我们使用管道(pipe)将其输出送到more或者less命令单页显示
[root@localhost ~]# dmesg |less   #以分页的方式显示开机信息
[root@localhost ~]# dmesg |more
[root@localhost ~]# dmesg |tail -20  #查看开机的尾部信息
[root@localhost ~]# dmesg |grep -i sda  #显示被系统检测到的硬盘设备,tty,USB,memory,dma等
[root@localhost ~]# tail -f /var/log/dmesg   #实时监控dmesg的日志输出
[root@localhost ~]# watch "dmesg |tail -20"  #实时监控dmesg的日志输出

  

4.uptime

功能:查看系统运行了多上时间

常用选项:

-V :查看版本

示例:

[root@localhost ~]# uptime -V
procps version 3.2.8
[root@localhost ~]# uptime 
11:07:03 up 2 days, 25 min,  3 users,  load average: 0.53, 0.31, 0.25
当前时间  11:07:03
系统已运行的时间 2 days, 25 min
当前在线用户  3 users
平均负载:0.53, 0.31, 0.25 最近1分钟、5分钟、15分钟系统的负载
它的值代表等待 CPU 处理的进程数,如果 CPU 没有时间处理这些进程,load average 值会升高; 反之则会降低。  
load average 的最佳值是 1,说明每个进程都可以马上处理并且没有 CPU cycles 被丢失。对于单 CPU 的机器,1 或者 2 是可以接受的值;对于多路 CPU 的机器,load average值可能在8 到10 之间。 

也可以使用 uptime 命令来判断网络性能。例如,某个网络应用性能很低,通过运行uptime查看服务器的负荷是否很高,如果不是,那么问题应该是网络方面造成的。 
最直接查看的方式就是/proc/loadavg 和/proc/uptime 两个文件,注意不能编辑/proc中的文件,要用cat等命令来看,如:
[root@localhost ~]# uptime 
09:23:44 up 5 days, 15:58,  4 users,  load average: 0.00, 0.00, 0.00
[root@localhost ~]# cat /proc/loadavg 
0.00 0.00 0.00 1/106 117258
[root@localhost ~]# cat /proc/uptime 
489663.15 487399.42


5.stat

功能:显示文件或文件系统状态

常用选项:

-Z   显示selinux安全上下文

-f  显示文件系统状态

-c  指定格式输出内容

-t  以简洁的形式打印

%y 最后修改时间

%x 最后访问时间

%z 最后更改时间

示例:

显示文件信息:
[root@localhost ~]# stat 123
  File: `123'
  Size: 49          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 267715      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-09-11 16:55:29.465250624 +0800
Modify: 2017-09-11 16:55:21.534245351 +0800
Change: 2017-09-11 16:55:21.534245351 +0800

#只显示文件修改时间:
[root@localhost ~]# stat -c %y 123
2017-05-26 09:48:33.220308487 +0800
#只显示文件访问时间:
[root@localhost ~]# stat -c %x 123
2017-11-24 18:20:40.579461160 +0800
#只显示文件更改时间:
[root@localhost ~]# stat -c %z 123
2017-05-26 09:48:33.220308487 +0800


6.du

功能:估算文件空间使用情况

语法:

       du [OPTION]... [FILE]...

       du [OPTION]... --files0-from=F

常用选项:

-a或-all  递归指定目录或多个目录中所有文件的统计结果

-b或-bytes  以bytes为单位显示

-c–total  产生一个总大小,除了显示目录和文件的大小外,同时还显示所有目录或文件的总和

-h  人性化显示(K,M,G)

-k  单位KB显示

-m  单位MB显示

-s  只显示总大小,不含子文件

--max-depth=<目录层数>,超过层数的目录忽略

--exclude=file 排除文件或目录

--time  显示大小和创建时间

示例:

[root@localhost scripts]# du  -sh /etc  #查看etc目录大小
28M    /etc
[root@localhost tmp]# du -sh /tmp
13G    /tmp
[root@localhost tmp]# du -sh --exclude=test.12 /tmp  #排除test.12文件查看tmp目录大小
1.2M    /tmp
[root@localhost tmp]# du -sh --time /tmp
13G    2017-06-20 11:07    /tmp
[root@localhost tmp]# du -ah --max-depth=1 /etc/  #选择层数查看,不能使用s,因为s是不显示子目录和文件的
0    /etc/grub.conf
116K    /etc/lvm
8.0K    /etc/xinetd.d
16K    /etc/gnome-vfs-2.0
48K    /etc/polkit-1
28K    /etc/iproute2

7.df

功能:报告文件系统磁盘空间使用情况

语法:df [OPTION]... [FILE]...

常用选项:

-a  显示所有文件系统的磁盘使用情况,包含虚拟文件系统及伪文件系统

-h 人性化显示

-i  显示block使用的inode信息

-k  KB显示

-P  使用POSIX格式输出

-t  输出指定文件系统类型的磁盘使用情况

-x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)

-T  打印文件系统类型

示例:

[root@localhost ~]# df -ah  #查看所有文件系统磁盘使用情况
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                      18G  14G  3.0G  82% /
proc                    0    0    0    - /proc
sysfs                    0    0    0    - /sys
devpts                  0    0    0    - /dev/pts
tmpfs                491M    0  491M  0% /dev/shm
/dev/sda1            477M  28M  425M  6% /boot
none                    0    0    0    - /proc/sys/fs/binfmt_misc
/dev/mapper/VolGroup-lv01
                      4.8G  19M  4.6G  1% /data
[root@localhost ~]# df -i  #打印inode号
Filesystem            Inodes IUsed  IFree IUse% Mounted on
/dev/mapper/VolGroup-lv_root
                    1152816 58106 1094710    6% /
tmpfs                125543    1  125542    1% /dev/shm
/dev/sda1            128016    38  127978    1% /boot
/dev/mapper/VolGroup-lv01
                      327680    10  327670    1% /data
[root@localhost ~]# df -k  #以kb为单位打印
Filesystem          1K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
                      18003272 13974776  3107308  82% /
tmpfs                  502172        0    502172  0% /dev/shm
/dev/sda1              487652    27678    434374  6% /boot
/dev/mapper/VolGroup-lv01
                      5029504    19236  4748124  1% /data
[root@localhost ~]# df -Ph  #使用posix格式输出,整齐多了
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root  18G  14G  3.0G  82% /
tmpfs                        491M    0  491M  0% /dev/shm
/dev/sda1                    477M  28M  425M  6% /boot
/dev/mapper/VolGroup-lv01    4.8G  19M  4.6G  1% /data
[root@localhost ~]# df -Th
Filesystem          Type  Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root  #打印文件系统类型
                    ext4    18G  14G  3.0G  82% /
tmpfs                tmpfs  491M    0  491M  0% /dev/shm
/dev/sda1            ext4  477M  28M  425M  6% /boot
/dev/mapper/VolGroup-lv01
                    ext4  4.8G  19M  4.6G  1% /data

[root@localhost ~]# du -ah /etc |sort -nrk 1 |head -n 10  #打印指定目录中最大的10个目录或文件
984K    /etc/pki/tls/certs/ca-bundle.trust.crt
772K    /etc/pki/tls/certs/ca-bundle.crt
628K    /etc/services
620K    /etc/pki/ca-trust/extracted/pem
384K    /etc/selinux/targeted/contexts
352K    /etc/sysconfig
324K    /etc/pki/ca-trust/extracted/openssl
316K    /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
300K    /etc/selinux/targeted/contexts/files
296K    /etc/gconf
[root@localhost tmp]# find . -type f -exec du -k {} \;|sort -nrk 1 |head  #查找指定目录中最大的10个目录或文件
12582916    ./test.12
1000    ./123.log
100    ./456.log
12    ./123
4    ./user.log
4    ./passwd.bak
4    ./passwd
4    ./newetcdir
0    ./yum.log


8.top

功能:动态实时监控操作系统活动的进程和系统资源利用率

常用选项:

-d  信息刷新时间间隔

-p  只监控指定的进程PID

-i  只显示正在使用CPU的进程

-H  显示线程

-u  只查看指定用户名的进程

-b  将输出编排成易处理格式,适合输出到文件处理

-n  指定最大循环刷新数

交互命令:

f  添加或删除显示的指标

c 显示命令完全模式

P  按CPU使用百分比排序

M  按驻留内存大小排序

T  按进程使用CPU时间排序

1  显示每个CPU核心使用率

k  终止一个进程

q 退出top命令

s 设置刷新时间间隔

t 显示或隐藏进程和CPU状态信息

m 显示或隐藏内存状态信息

l 显示或隐藏uptime信息

S 累计模式,会把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+

W 保存对top的设置到文件~/.toprc,下次启动将自动调用toprc文件的设置。

h 帮助命令。

示例:

spacer.gifimage.png

1) top前五行信息:

第一行:任务对列信息

14:41:42     #系统当前时间,当前时间为14:41:42  

up 22:30    #系统运行时间,格式为分,系统运维了22小时30分钟

2 users       #当前登录用户数,当前登录用户为2个

load average: 0.00 0.00 0.00   #系统负载 即任务队列的平均长度,三个数值分别为1分钟 5分钟 15分钟前到现在的平均值,当前没有什么服务,也就没有负载,显示为0.


第二三行:进程和cpu信息(多个cpu时,这些内容可能会超过两行)

Tasks: 77 total    #进程总数 ,现在的进程总数为77

1 running  #正在运行的进程数,运行的1个

76 sleeping  #睡眠的进程数,有76个  

0 stopped   #停止的进程数

0 zombie    #僵尸进程数

Cpu(s): 0.0%us  #用户空间占用cpu百分比

0.0%sy     #内核空间占用cpu百分比

0.0%ni     #用户进程空间内改变优先级的进程占用cpu百分比(I/O占用)

100.0%id    #空闲cpu百分比

0.0%wa     #等待输入输出的cpu百分比

0.0%hi      

0.0%si

0.0%st


第四五行为内存信息

1004348k total    #物理内存总量

385000k used    #使用的物理内存总量

619248k free       #空闲的内存总量

308k buffers      #用作内核缓存的内存量

swap                     #交换分区总量

2) 进程信息

PID     #进程id

USER  #进程所有者用户名

PR      #优先级

NI nice值  #负值表示高优先级 正值表示低优先级

VIRT   #进程使用的虚拟内存总量,单位kb,VIRT=SWAP+RES

RES     #进程使用的 未被换出的物理内存大小 RES=CODE+DATA

SHR    #共享内存大小

S         #进程状态 D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU  #上次更新到现在的cpu时间占用百分比

%MEM  #进程使用的物理内存百分比

TIME+   3进程使用的cpu时间总计 单位为1/100秒

COMMAND #命令行/命令名


shift+p|P: 按照消耗cpu资源排序

shift+m|M: 按照消耗内存资源排序

shift+t|T: 按照消耗cpu时间排序


# top -b -n1 直接打印一次输出结果到屏幕
top -u apache
top -u mysql  只查看有效用户名为mysql的进程
# top -d 5 更新延时设置为5秒(默认3秒)
# top -u mysql 只查看有效用户名为mysql的进程
# top -p 200,2000 只查看进程200和2000
# top -n 8 退出前屏幕再刷新10次
# top -b 以非交互和非全屏模式运行
# top -b -n 12000 > plog 运行top并记录命令输出,时长10小时,保存到plog文件


9.free

功能:监控linux内存使用状态

常用选项:

-b  bytes显示

-k  KB显示

-m  M显示

-g  G显示

-h  易读单位显示

-s  每几秒重复打印

-c  重复打印几次退出

示例:

[root@localhost scripts]# free -m
            total      used      free    shared    buffers    cached
Mem:          980        188        791          0        10        110
-/+ buffers/cache:        66        913
Swap:        1983          2      1981

空闲内存是:free+buffers+cached=911M

一般来说空闲内存物理内存 >70% ,内存性能优;如果小于 20% ,则性能差,需要添加内存。

下面是对这些数值的解释:

第二行(mem):

total:总计物理内存的大小。

used:已使用多大。

free:可用有多少。

Shared:多个进程共享的内存总额。

Buffers/cached:磁盘缓存的大小。

第三行(-/+ buffers/cached):

used:已使用多大。

free:可用有多少。

第四行就不多解释了。

区别:

第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。

从使用角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是791m,已用内存是188m,其中包括,内核(OS)使用+Application(X,oracle,etc)使用的+buffers+cached.

第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。

所以从应用程序的角度来说,可用内存=系统free(free+buffers+cached.)


10.date

功能:打印或设置系统日期和时间

帮助:

[root@localhost ~]# type date

date is hashed (/bin/date)

[root@localhost ~]# date --help

[root@localhost ~]# man date

常用选项:

-d datestr : 显示 datestr 中所设定的时间 (非系统时间)

-f datefile:读取文件的每一行

--help : 显示辅助讯息

-I:输出ISO 8601格式的日期和时间

-s datestr : 将系统时间设为 datestr 中所设定的时间

-r :显示文件的最后修改时间

-R :输出RFC 2822格式的日期和时间

-u : 显示目前的格林威治时间

--version : 显示版本编号

输出格式:

时间方面:

% : 印出 %

%n : 下一行

%t : 跳格

%H : 小时(00..23)

%I : 小时(01..12)

%k : 小时(0..23)

%l : 小时(1..12)

%M : 分钟(00..59)

%p : 显示本地 AM 或 PM

%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)

%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数

%S : 秒(00..61)

%T : 直接显示时间 (24 小时制)

%X : 相当于 %H:%M:%S

%Z : 显示时区

日期方面 :

%a : 星期几 (Sun..Sat)

%A : 星期几 (Sunday..Saturday)

%b : 月份 (Jan..Dec)

%B : 月份 (January..December)

%c : 直接显示日期与时间

%d : 日 (01..31)

%D : 直接显示日期 (mm/dd/yy)

%h : 同 %b

%j : 一年中的第几天 (001..366)

%m : 月份 (01..12)

%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)

%w : 一周中的第几天 (0..6)

%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)

%x : 直接显示日期 (mm/dd/yy)

%y : 年份的最后两位数字 (00.99)

%Y : 完整年份 (0000..9999)

说明:若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数


星期日[SUN] 星期一[MON] 星期二[TUE] 星期三[WED] 星期四[THU] 星期五[FRI] 星期六[SAT]

一月[JAN] 二月[FEB] 三月[MAR] 四月[APR] 五月[MAY] 六月[JUN] 七月[JUL] 八月[AUG] 九月[SEP] 十月[OCT] 十一月[NOV] 十二月[DEC]

示例:

#查看系统时间:
[root@localhost ~]# date  #全部显示
Fri Jun  2 11:06:40 CST 2017
[root@localhost ~]# date +%a  #打印星期(缩写)
Fri
[root@localhost ~]# date +%A #打印星期全名称
Friday
[root@localhost ~]# date +%F  #以-的方式显示日期
2017-06-02
[root@localhost ~]# date +%D  #以/的方式显示日期
06/02/17
[root@localhost ~]# date +%Y%m%d  #另外一中显示日期方法
20170602
[root@localhost ~]# date +%T  #打印时分秒
11:07:29
[root@localhost ~]# date +%X  #带AM的时间显示
11:07:40 AM
[root@localhost ~]# date '+%F %X'  #带AM的日期全部显示
2017-06-02 11:08:01 AM
[root@localhost ~]# date +%s  #时间戳显示
1496372893
#修改系统时间:查看系统时间时区
[root@localhost ~]# date -R  #查询系统时间时区
Fri, 02 Jun 2017 11:12:32 +0800
[root@localhost ~]# date  #date直接可以查询时区
Fri Jun  2 11:13:13 CST 2017
#如果系统时间不是上面的时间,通过以下操作设置东八时区
[root@yyl init.d]# mv /etc/localtime /etc/localtime.bak
[root@yyl init.d]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@yyl init.d]# date
Sat Apr 2 22:00:28 CST 2016
[root@node1 test]# date -s 20151010  #修改日期为20151010
Sat Oct 10 00:00:00 CST 2015
[root@node1 test]# date -s 12:12:12  #修改时间
Sat Oct 10 12:12:12 CST 2015
[root@node1 test]# date -s '2020-11-11 11:11'  #同时修改日期时间
Wed Nov 11 11:11:00 CST 2020
[root@node1 test]# date -s '12:12 20170808'  #同时修改日期时间
Tue Aug 8 12:12:00 CST 2017
[root@node1 test]# date +%F --date='30 day ago' 查看30天以前日期
2016-03-01
[root@node1 test]# date +%F --date='30 days' 查看30天以后日期
2016-04-30
#扩展:创建一个目录或者文件,系统时间30天以后(20160430)
$(date +%Y%m%d --date='30 days')
mkdir $(date +%Y%m%d --date='30 days')
touch $(date +%Y%m%d --date='5 day ago').log
#设置变量
[root@localhost ~]# DATE=`date +%Y-%m-%d`  #两种方法设置变量
[root@localhost ~]# DATE=$(date +%Y-%m-%d)
[root@localhost ~]# echo $DATE
2017-06-02
[root@localhost ~]# echo "`date -d \"-1 month\" \"+%Y-%m\"`"  #减一个月并打印
2017-05
[root@localhost ~]# lastday="`date -d \"-1 month\" \"+%Y-%m\"`"  #设置变量
[root@localhost ~]# echo $lastday  #打印变量
2017-05
[root@localhost ~]# lastday="`date -d \"yesterday\" \"+%d/%b/%Y\"`"
[root@localhost ~]# echo $lastday  #打印输出01/Jun/2017
01/Jun/2017
[root@localhost ~]# date '+%T%n%D'  #显示时间后跳行,再显示目前日期
11:38:03
06/02/17
#把日期和时间转换成时间戳
[root@localhost ~]# date  -d "2017-12-15 18:00:00" +%s
1513332000
#把时间戳转换成时间:
[root@localhost ~]# date -d "@1513332000" '+%F %T'
2017-12-15 18:00:00
#时间加减
[root@localhost ~]# date -d '-1 minute' +'%F %T'  #打印前一分钟
2017-06-02 11:49:00
[root@localhost ~]# date
Fri Jun  2 11:50:02 CST 2017
[root@localhost ~]# date -d '-1 week' +'%F %T' #打印上一周
2017-05-26 11:50:46
[root@localhost ~]# date +%F -d '+1 day'  #打印后一天日期
2017-06-03
或
[root@localhost ~]# date -d tomorrow +%F
2017-06-03
[root@localhost ~]# date -d yesterday +%F 打印前一天日期
2017-06-01
或
[root@localhost ~]# date +%F -d '-1 day'  |打印前一天日期
2017-06-01

[root@localhost ~]# date +%F  #打印系统当前日期
2017-06-02
[root@localhost ~]# date +%F -d '+1 day'  #打印上一天日期,直接说就是明天日期
2017-06-03
[root@localhost ~]# date +%F -d '-1 day'  #打印后一天日期,直接说就是昨天
2017-06-01
[root@localhost ~]# date +%F -d '+1 month'    #打印下一个月日期
2017-07-02
[root@localhost ~]# date +%F -d '-1 month'    #打印上个月日期
2017-05-02
[root@localhost ~]# date +%F -d '+1 year'  #打印下一年日期
2018-06-02
[root@localhost ~]# date +%F -d '-1 year'  #打印上一年日期
2016-06-02
[root@localhost ~]# date -d '1 day ago' +'%F %T'
2017-06-01 13:32:19 #打印前一天的现在时间
date -s 20091112                    # 设日期
date -s 18:30:50                    # 设时间
date -d "7 days ago" +%Y%m%d        # 7天前日期
date -d "5 minute ago" +%H:%M        # 5分钟前时间
date -d "1 month ago" +%Y%m%d        # 一个月前
date -d '1 days' +%Y-%m-%d          # 一天后
date -d '1 hours' +%H:%M:%S          # 一小时后
date +%Y-%m-%d -d '20110902'        # 日期格式转换
date +%Y-%m-%d_%X                    # 日期和时间
date +%N                            # 纳秒
date -d "2012-08-13 14:00:23" +%s    # 换算成秒计算(1970年至今的秒数)
date -d "@1363867952" +%Y-%m-%d-%T  # 将时间戳换算成日期
date -d "1970-01-01 UTC 1363867952 seconds" +%Y-%m-%d-%T  # 将时间戳换算成日期
date -d "`awk -F. '{print $1}' /proc/uptime` second ago" +"%Y-%m-%d %H:%M:%S"    # 格式化系统启动时间(多少秒前)

注意 :

  当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date '+%-H:%-M:%-S' 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。

  当你以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。

练习:

1、将自己的系统时间修改为2020年的12月12号的11点11分,并同步硬件时间

[root@localhost ~]# date -s '2020-12-12 11:11'
Sat Dec 12 11:11:00 CST 2020
[root@localhost ~]# date
Sat Dec 12 11:11:08 CST 2020
[root@localhost ~]# hwclock --systohc  或clock -w

11.cal

功能:查看日历

语法:cal [-smjy13] [[[day] month] year]

示例:

[root@localhost ~]# cal  #查看当前日历
      June 2017
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

[root@localhost ~]# cal 2 2015  #查看2015年2月份日历
    February 2015
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


[root@localhost ~]# cal 1 10 2016 #查看2016年10月1日日历
    October 2016
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


12.hwclock

功能:查询并设置硬件时钟

常用选项:

-w: --systohc 以系统时间为准,同步到硬件的时间

-s:--hctosys 以硬件时间为准,同步到系统的时间

[root@yyl etc]# hwclock --systohc 同步硬件时间(以系统时间为准)
[root@node1 test]# hwclock --hctosys 同步系统时间(以硬件时间为准)
root@node1 test]# hwclock 查看硬件时间
Thu 31 Mar 2016 10:18:22 AM CST -0.344711 seconds
# clock -w 强制将系统时间写入硬件


13.ntpdate

功能:通过时间服务器设置日期和时间,一般需要网络,并且有时间延迟

ntp服务及软件

ntp (network time protocol)    端口:123 udp协议

# rpm -q ntp

ntp-4.2.6p5-1.el6.x86_64

/etc/init.d/ntpd status

ntpd (pid 12887) is running...

rhel默认的外网时间服务器

0.rhel.pool.ntp.org

1.rhel.pool.ntp.org

2.rhel.pool.ntp.org

公网时间服务器

ntpdate 202.112.31.197

ntpdate ntp.fudan.edu.cn

自己搭建时间服务器
# vim /etc/ntp.conf
restrict 192.168.5.0 mask 255.255.255.0 nomodify notrap
restrict 10.12.1.0 mask 255.255.255.0 nomodify notrap
restrict 10.1.1.0 mask 255.255.255.0 nomodify notrap --我这里就把18行的注释打开,并把网段改成了当前自己局域网的网段10.1.1.0,就表示在这个网段内能被时间同步

# /etc/init.d/ntpd restart

# netstat -ntlup |grep :123    --启动服务后,123端口就有监听了

# ntpdate 10.1.1.35    --你自己启动NTPD服务后,去同步别人会报socket被占用的错误
26 Aug 14:42:52 ntpdate[7417]: the NTP socket is in use, exiting

# ntpdate 10.1.1.35    --这是表示同步成功
26 Aug 14:43:29 ntpdate[7117]: step time server 61.129.42.44 offset 146586394.753774 sec

重启服务:
service ntpd restart 需要等至少5分钟

通过xinetd服务管理:
# ls /etc/xinetd.d/
chargen-dgram daytime-stream echo-dgram tcpmux-server time-stream
chargen-stream discard-dgram echo-stream tftp
daytime-dgram discard-stream rsync time-dgram

vim time-stream
...
disable = no

vim time-dgram
...
disable = no

重启xinetd服务:
service xined restart

# lsof -i :37
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 2664 root 6u IPv6 13004 0t0 UDP *:time
xinetd 2664 root 8u IPv6 13005 0t0 TCP *:time (LISTEN)

14.rdate

功能:通过网络获取时间,一般用于局域网中,同步速度非常块

常用选项:

-s:一般跟ip,同步远端服务器时间到本地

示例

rdate -s 192.168.5.254


15.logger

功能:一个shell命令接口,通过该接口使用syslog系统日志模块

语法:logger [-isd] [-f file] [-p pri] [-t tag] [-u socket] [message ...]

常用选项:

-i  逐行记录每一次logger的进程ID

-f  指定输出日志到文件

-p  指定输入消息的优先级

-t  添加标签

示例:

[root@localhost log]# pwd
/var/log
[root@localhost log]# logger system rebooted
[root@localhost log]# tail -1o messages
tail: option used in invalid context -- 1
[root@localhost log]# tail -10 messages
Jan  8 11:43:12 localhost fail2ban.filter[1010]: INFO Log rotation detected for /var/log/secure
Jan  8 17:42:31 localhost fail2ban.filter[1010]: INFO [sshd-iptables] Ignore 192.168.19.51 by ip
Jan  8 17:42:33 localhost fail2ban.filter[1010]: INFO [sshd-iptables] Ignore 192.168.19.51 by ip


16.ps

功能:打印当前终端运行的进程,可以跟grep配合使用

常用选项:

-a  显示所有进程

-u  选择有效的用户ID或名称

-x  显示无控制终端的进程

-e  显示所有进程

-f  全格式

-r  只显示运行的进程

-T  这个终端的所有进程

-p  指定进程ID

--sort  对某列排序

-m  线程

-L  格式化代码列表

-o  用户自定义格式

用法:

ps -ef 打印所有进程的标准语法

ps aux打印系统上所有进程BSD语法

两者区别:

ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同

ps -ef 是用标准的格式显示进程的,其格式如下:

[root@localhost scripts]# ps -ef 
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 Jun02 ?        00:00:00 /sbin/init
root          2      0  0 Jun02 ?        00:00:00 [kthreadd]
root          3      2  0 Jun02 ?        00:00:00 [migration/0]

其中各列内容含义如下:

UID:用户ID,输出为用户名

PID:进程PID

PPID:父进程ID

C:进程占用CPU的百分比

STIME:进程启动到现在的时间

TTY:该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程

CMD:命令名称和参数

ps aux 是用BSD的格式来显示、其格式如下

[root@localhost scripts]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0  19232   224 ?        Ss   Jun02   0:00 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Jun02   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Jun02   0:00 [migration/0]

同ps -ef不同的列有:

USER :用户名 

%CPU:进程占用的CPU百分比 

%MEM:占用内存的百分比 

VSZ:该进程使用的虚拟內存量(KB) 

RSS:该进程占用的固定內存量(KB)(驻留中页的数量) 

STAT:进程的状态 

START:该进程被触发启动时间 

TIME:该进程实际使用CPU运行的时间

其中STAT状态位常见的状态字符有

D:无法中断的休眠状态(通常 IO 的进程)

R:正在运行可中在队列中可过行的

S:处于休眠状态

T:停止或被追踪

W:进入内存交换 (从内核2.6开始无效)

X:死掉的进程 (基本很少见)

Z:僵尸进程 

<:优先级高的进程  

N:优先级较低的进程  

L:有些页被锁进内存

s:进程的领导者(在它之下有子进程)

l:多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads)

+:位于后台的进程组

[root@localhost ~]# ps aux |grep -v USER |sort -nk +4 |tail  # 显示消耗内存最多的10个运行中的进程,以内存使用量排序.cpu +3
root       5227  0.0  0.1 110232  1160 pts/1    R+   10:05   0:00 ps aux
root        963  0.0  0.1 249088  1708 ?        Sl   Jan09   0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root        981  0.0  0.1  66700  1224 ?        Ss   Jan09   0:00 /usr/sbin/sshd
root       2967  0.0  0.2 108440  2048 pts/0    Ss+  04:56   0:00 -bash
root       4885  0.0  0.2  57852  2788 ?        Ss   08:30   0:00 /usr/libexec/openssh/sftp-server
root       4890  0.0  0.2  57720  2676 ?        Ss   08:30   0:00 /usr/libexec/openssh/sftp-server
root       2965  0.0  0.4  96344  4404 ?        Ss   04:56   0:01 sshd: root@pts/0 
root       4883  0.0  0.4  96644  4528 ?        Ss   08:30   0:00 sshd: root@notty 
root       4988  0.0  0.4  96344  4400 ?        Ss   08:35   0:00 sshd: root@pts/1 
root       1010  0.0  1.0 435240 10364 ?        Sl   Jan09   0:13 /usr/bin/python -Es /usr/bin/fail2ban-server -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid -x -b
[root@localhost ~]# ps -eo pid,lstart,etime,args   # 查看进程启动时间
   PID                  STARTED     ELAPSED COMMAND
     1 Tue Jan  9 12:59:29 2018    21:07:06 /sbin/init
     2 Tue Jan  9 12:59:29 2018    21:07:06 [kthreadd]
     3 Tue Jan  9 12:59:29 2018    21:07:06 [migration/0]
     4 Tue Jan  9 12:59:29 2018    21:07:06 [ksoftirqd/0]


17.vmstat

功能:显示关于系统各种资源之间相关性能的简要信息

常用选项:

-a  打印活跃和非活跃的内存

-d  打印硬盘相关统计信息

-D  打印硬盘表信息

-p  打印指定硬盘分区统计信息

-s  打印内存相关统计信息及多种系统活动数量

-m  打印slabinfo

-t  添加时间戳到输出

-S  显示单位,默认k、KB、m、M,大写是*1024


通过分析以下这些文件来过的打印信息

/proc/meminfo

/proc/stat

/proc/*/stat

示例:

[root@localhost scripts]# vmstat  #显示虚拟内存使用情况
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0   2876 810916  11236 113644   75   58    77   132   14   17  0  0 100  0  0
参数说明:
procs:进程
有r和b
r:运行队列进程数量,如果数值长期大于1,考虑是否增加cpu
b:等待的I/O进程数量

memory:内存
swpd:使用虚拟内存大小
free:空闲物理内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小

swap
si: 每秒从交换区写到内存的大小,由磁盘调入内存
so: 每秒写入交换区的内存大小,由内存调入磁盘

如果 si 和 so 数值很大的话,可能是出现系统资源紧缺。

IO
bi: 每秒读取的块数  (单位kb)
bo: 每秒写入的块数

system(系统)
in: 每秒中断数
cs: 每秒上下文切换数
说明:

2个值越大,cpu消耗时间越大

cpu
sy: 内核系统进程执行时间比例
wa:IO等待时间比例
id: 空闲时间比例

[root@localhost log]# vmstat 3  #每三秒显示一次内存信息
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0   2632 807540  13856 116396   74   57    76   130   13   17  0  0 100  0  0
 0  0   2632 807508  13864 116396    0    0     0     9   13   12  0  0 100  0  0
[root@localhost log]# vmstat 3 3   #每三秒显示一次,连续显示三次
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0   2632 807680  13864 116396   74   57    76   130   13   17  0  0 100  0  0
 0  0   2632 807640  13864 116396    0    0     0     0   10    8  0  0 100  0  0
 0  0   2632 807640  13864 116396    0    0     0     0   11   10  0  0 100  0  0
[root@localhost log]# vmstat -f  #系统被fork多少次
        11395 forks
[root@localhost log]# vmstat -p /dev/sda1  #查看指定磁盘设备
sda1          reads   read sectors  writes    requested writes
                 440       3420         13         44
参数说明:
reads:       分区读的次数。
read sectors:    分区读扇区的次数。
writes:       分区写的次数。
requested writes:    分区写请求次数。
[root@localhost ~]# vmstat -a   #显示活跃内存与非活跃内存
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 668240 104092 161136    0    0     9     1   10   11  0  0 100  0  0	

 [root@localhost ~]# vmstat -d  #显示磁盘信息
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
ram0       0      0       0       0      0      0       0       0      0      0
ram1       0      0       0       0      0      0       0       0      0      0
...........
root@localhost ~]# vmstat -D
           32 disks 
            4 partitions 
        22807 total reads
         3476 merged reads
      2787484 read sectors
       107413 milli reading
        24482 writes
        14206 merged writes
       309468 written sectors
       562678 milli writing
            0 inprogress IO
           64 milli spent IO
[root@localhost ~]# vmstat -s
      1004348  total memory
       338060  used memory
       161448  active memory
..............
[root@localhost ~]# vmstat -t
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp---
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 666132  22172 227108    0    0     9     1   10   11  0  0 100  0  0  2018-01-10 10:16:10 CST
[root@localhost ~]# vmstat -S M
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0    650     21    221    0    0     9     1   10   11  0  0 100  0  0

18.iostat

功能:报告CPU利用率和磁盘I/O

常用选项:

-c  显示CPU使用率

-d  只显示磁盘使用率

-k  单位KB/s代替Block/s

-m  单位MB/s代替Block/s

-N  显示所有映射设备名字

-t  打印报告时间

-x  显示扩展统计信息

示例:

[root@localhost log]# iostat
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain)     06/05/2017     _x86_64_    (1 CPU)
 
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.19    0.26    0.00   99.55
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               2.72       150.32       221.48   35498086   52300020
sdb               0.05         0.02        37.39       5122    8829032
dm-0             13.51         2.75       107.60     649290   25407952
dm-1             32.68       147.55       113.88   34842912   26891976
dm-2              4.68         0.01        37.39       2962    8828952
参数说明:
avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值
Device: 各磁盘设备的IO统计信息
Device: 以sdX形式显示的设备名称
tps: 每秒进程下发的IO读、写请求数量
Blk_read/s: 每秒读扇区数量(一扇区为512bytes)
Blk_wrtn/s: 每秒写扇区数量
Blk_read: 取样时间间隔内读扇区总数量
Blk_wrtn: 取样时间间隔内写扇区总数量
[root@localhost log]# iostat -x -k -d 1 2   #启动-x,显示扩展信息,每一秒一次,联系两次
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain)     06/05/2017  _x86_64_    (1 CPU)
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda              16.08    27.35    2.41    0.31    75.09   110.63   136.51     0.03   12.46    1.52   97.70   1.41   0.38
sdb               0.00     4.62    0.00    0.05     0.01    18.68   743.99     0.01  108.28    1.67  114.25   6.12   0.03
dm-0              0.00     0.00    0.06   13.44     1.37    53.75     8.17     1.45  107.58   12.21  108.03   0.09   0.12
dm-1              0.00     0.00   18.43   14.22    73.70    56.88     8.00     2.22   67.96    1.26  154.37   0.10   0.32
dm-2              0.00     0.00    0.00    4.67     0.01    18.68     8.00     0.60  127.80    2.70  127.84   0.07   0.03
rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
wrqm/s: 每秒对该设备的写请求被合并次数
r/s: 每秒完成的读次数
w/s: 每秒完成的写次数rkB/s: 每秒读数据量(kB为单位)wkB/s: 每秒写数据量(kB为单位)
avgrq-sz:平均每次IO操作的数据量(扇区数为单位)
avgqu-sz: 平均等待处理的IO请求队列长度
await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
svctm: 平均每次IO请求的处理时间(毫秒为单位)
%util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比
[root@localhost ~]# iostat -c
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 	01/10/2018 	_x86_64_   (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.13    0.03    0.00   99.83

[root@localhost ~]# iostat -d
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 	01/10/2018 	_x86_64_   (1 CPU)

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
scd0              0.00         0.00         0.00        264          0
sda               0.19        18.07         2.11    1395074     162796
sdb               0.01         0.06         0.00       4530         56
sdc               0.00         0.02         0.00       1788          0
dm-0              0.42        17.98         2.11    1387650     162736
dm-1              0.00         0.03         0.00       2296          0
dm-2              0.01         0.05         0.00       3490         56
dm-3              0.00         0.01         0.00        664          0

[root@localhost ~]# iostat -k
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 	01/10/2018 	_x86_64_   (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.13    0.03    0.00   99.83

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.00         0.00         0.00        132          0
sda               0.19         9.04         1.05     697537      81414
sdb               0.01         0.03         0.00       2265         28
sdc               0.00         0.01         0.00        894          0
dm-0              0.42         8.99         1.05     693825      81384
dm-1              0.00         0.01         0.00       1148          0
dm-2              0.01         0.02         0.00       1745         28
dm-3              0.00         0.00         0.00        332          0

[root@localhost ~]# iostat -m
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 	01/10/2018 	_x86_64_   (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.13    0.03    0.00   99.83

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
scd0              0.00         0.00         0.00          0          0
sda               0.19         0.01         0.00        681         79
sdb               0.01         0.00         0.00          2          0
sdc               0.00         0.00         0.00          0          0
dm-0              0.42         0.01         0.00        677         79
dm-1              0.00         0.00         0.00          1          0
dm-2              0.01         0.00         0.00          1          0
dm-3              0.00         0.00         0.00          0          0

[root@localhost ~]# iostat -N
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 	01/10/2018 	_x86_64_   (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.13    0.03    0.00   99.83

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
scd0              0.00         0.00         0.00        264          0
sda               0.19        18.07         2.11    1395074     162868
sdb               0.01         0.06         0.00       4530         56
sdc               0.00         0.02         0.00       1788          0
VolGroup-lv_root     0.42        17.97         2.11    1387650     162808
VolGroup-lv_swap     0.00         0.03         0.00       2296          0
VolGroup-lv01     0.01         0.05         0.00       3490         56
VolGroup-lv02     0.00         0.01         0.00        664          0

[root@localhost ~]# iostat -t
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 	01/10/2018 	_x86_64_   (1 CPU)

01/10/2018 10:27:58 AM
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.13    0.03    0.00   99.83

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
scd0              0.00         0.00         0.00        264          0
sda               0.19        18.07         2.11    1395074     162924
sdb               0.01         0.06         0.00       4530         56
sdc               0.00         0.02         0.00       1788          0
dm-0              0.42        17.97         2.11    1387650     162864
dm-1              0.00         0.03         0.00       2296          0
dm-2              0.01         0.05         0.00       3490         56
dm-3              0.00         0.01         0.00        664          0
#显示更详细的io统计信息
[root@localhost ~]# iostat -x
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 	01/10/2018 	_x86_64_   (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.13    0.03    0.00   99.83

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
scd0              0.00     0.00    0.00    0.00     0.00     0.00     8.00     0.00    0.79    0.79    0.00   0.79   0.00
sda               0.04     0.19    0.12    0.07    18.07     2.11   105.86     0.00    6.72    3.27   12.79   2.27   0.04
sdb               0.00     0.00    0.01    0.00     0.06     0.00     8.13     0.00    1.90    1.86    4.57   1.22   0.00
sdc               0.00     0.00    0.00    0.00     0.02     0.00     6.08     0.00    0.97    0.97    0.00   0.74   0.00
dm-0              0.00     0.00    0.15    0.26    17.97     2.11    48.10     0.01   17.86    6.45   24.51   1.02   0.04
dm-1              0.00     0.00    0.00    0.00     0.03     0.00     8.00     0.00    3.32    3.32    0.00   2.13   0.00
dm-2              0.00     0.00    0.01    0.00     0.05     0.00     7.99     0.00    1.50    1.45    4.57   1.32   0.00
dm-3              0.00     0.00    0.00    0.00     0.01     0.00     8.00     0.00    3.94    3.94    0.00   3.94   0.00


19.sar

功能:查看系统资源综合方面利用率,可以对每个方面进行单独的统计,但是增加了系统开销,但是对系统的统计结果不会有很大影响

语法:sar [options] [-A] [-o file] t [n]

t为采样间隔,n为采样次数,默认值是1

常用选项:

-A     所有报告的总和

-u  打印cpu使用情况统计信息

-v     打印inode、文件和其他内核表的统计信息

-d     打印每一个块设备的活动信息

-r  打印内存和交换分区的使用率的

-b  打印I/O和传送速率的统计信息

-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息

示例:

#查看cpu使用率
[root@localhost scripts]# sar -u -o test 2 3  #每两秒采一次,连续三次,并将结果以二进制形式存入
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain)     06/05/2017  _x86_64_    (1 CPU)
03:42:25 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
03:42:27 PM     all      0.00      0.00      1.00      0.50      0.00     98.50
03:42:29 PM     all      0.00      0.00      1.03      0.00      0.00     98.97
03:42:31 PM     all      0.50      0.00      3.00      0.00      0.00     96.50
Average:        all      0.17      0.00      1.68      0.17      0.00     97.98
[root@localhost scripts]# sar -u -f test  #查看test文件
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain)     06/05/2017  _x86_64_    (1 CPU)
03:42:25 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
03:42:27 PM     all      0.00      0.00      1.00      0.50      0.00     98.50
03:42:29 PM     all      0.00      0.00      1.03      0.00      0.00     98.97
03:42:31 PM     all      0.50      0.00      3.00      0.00      0.00     96.50
Average:        all      0.17      0.00      1.68      0.17      0.00     97.98
各参数说明:
CPU:all为CPU的平均值。
%user:用户级别下消耗的 CPU 总时间比例。
%nice:nice改变了进程调度优先级的进程,所占用 CPU总时间比例。
%system:在系统模式下消耗 CPU总时间比例。
%iowait:cpu等待I/O操作占用 CPU总时间的比例。
%steal:运用虚拟化技术时,等待其他虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle: CPU空闲时间占用 CPU总时间比例。
 
说明:
1. %iowait的值过高,硬盘存在I/O瓶颈
2. %idle的值高但系统响应慢时,是 CPU等待分配内存,此时应加大内存容量
3.%idle的值持续低于1,CPU处理能力相对较低,需要解决的资源是 CPU。
#打印内存和交换内存使用情况
[root@localhost scripts]# sar -r 2 3  #每两秒才一次,连续采样3次
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain)     06/05/2017  _x86_64_    (1 CPU)
03:31:58 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
03:32:00 PM    804296    200052     19.92     13656    116392     52712      1.74
03:32:02 PM    804172    200176     19.93     13660    116396     52712      1.74
03:32:04 PM    804172    200176     19.93     13660    116396     52712      1.74
Average:       804213    200135     19.93     13659    116395     52712      1.74
各参数使用说明:
kbmemfree:空闲物理内存
kbmemused:使用中的物理内存
%memused:物理内存使用率
kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
kbcommit:意思就是应用程序使用内存的大小
%commit:就是应用程序使用内存百分比。

由上面 2 行就可以看出系统目前的内存使用情况。
kbmemfree :空闲物理内存的大小。
kbmemused :已经使用物理内存的大小。
一般这个命令是没有安装的
[root@localhost scripts]# yum install -y sysstat   #yum安装即可
#inode文件及其他内核情况
[root@localhost scripts]# sar -v 2 3  #每两秒采一次,连续采三次
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain)     06/05/2017     _x86_64_    (1 CPU)
03:51:54 PM dentunusd   file-nr  inode-nr    pty-nr
03:51:56 PM      8391       288     11729         2
03:51:58 PM      8391       288     11729         2
03:52:00 PM      8391       288     11729         2
Average:         8391       288     11729         2
参数说明:
dentunusd:目录高速缓存中未被使用的条目数量
file-nr:文件句柄(filehandle)的使用数量
inode-nr:索引节点句柄(inodehandle)的使用数量
pty-nr:使用的pty数量
#I/o及速率情况:
[root@localhost scripts]# sar -b 2 3
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain)     06/05/2017  _x86_64_    (1 CPU)
03:54:17 PM       tps      rtps      wtps   bread/s   bwrtn/s
03:54:19 PM      0.00      0.00      0.00      0.00      0.00
03:54:21 PM      0.00      0.00      0.00      0.00      0.00
03:54:23 PM      0.00      0.00      0.00      0.00      0.00
Average:         0.00      0.00      0.00      0.00      0.00
参数说明:
tps:每秒钟物理设备的 I/O传输总量
rtps:每秒钟从物理设备读入的数据总量
wtps:每秒钟向物理设备写入的数据总量
bread/s:每秒钟从物理设备读入的数据量,单位为块/s
bwrtn/s:每秒钟向物理设备写入的数据量,单位为块/s
 
#打印平均负荷
[root@localhost scripts]# sar -q 2 3
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain)     06/05/2017     _x86_64_    (1 CPU)
03:55:45 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
03:55:47 PM         0        84      0.02      0.01      0.00
03:55:49 PM         0        84      0.02      0.01      0.00
03:55:51 PM         0        84      0.02      0.01      0.00
Average:            0        84      0.02      0.01      0.00
参数说明:
runq-sz:等待运行的进程数
plist-sz:进程(processes)和线程(threads)的数量
ldavg-1:最后1分钟的系统平均负载(Systemload average)
ldavg-5:过去5分钟的系统平均负载
ldavg-15:过去15分钟的系统平均负载
 
#打印页面交换信息
[root@localhost scripts]# sar -W 2 3
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain)     06/05/2017  _x86_64_    (1 CPU)
03:56:52 PM  pswpin/s pswpout/s
03:56:54 PM      0.00      0.00
03:56:56 PM      0.00      0.00
03:56:58 PM      0.00      0.00
Average:         0.00      0.00
参数说明:
pswpin/s:每秒系统换入的交换页面(swap page)数量
pswpout/s:每秒系统换出的交换页面(swap page)数量

 
#设备使用情况
[root@localhost scripts]# sar -d 2 3 -p
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain)     06/05/2017     _x86_64_    (1 CPU)
03:58:12 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
03:58:14 PM       sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:58:14 PM       sdb      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:58:14 PM VolGroup-lv_root      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:58:14 PM VolGroup-lv_swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:58:14 PM VolGroup-lv01      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
参数说明:
参数-p可以打印出sda,hdc等磁盘设备名称
tps:每秒从物理磁盘I/O的次数
rd_sec/s:每秒读扇区的次数.
wr_sec/s:每秒写扇区的次数.
avgrq-sz:平均每次设备I/O操作的数据大小(扇区).
avgqu-sz:磁盘请求队列的平均长度.
await:从请求磁盘操作到系统完成处理时每次请求的平均消耗时间单位是毫秒(1秒=1000毫秒).
svctm:系统处理每次请求的平均时间
%util:I/O请求占用CPU的百分比
 
1. avgqu-sz的值较低时,设备的利用率较高。
2.当%util的值接近 1%时,表示设备带宽已经占满
 
小结:
要判断系统瓶颈问题,需要几个命令一起查看
CPU问题,sar -u和 sar -q 
内存问题,sar -B、sar -r和 sar -W
I/O问题,sar -b、sar -u 和 sar -d

20.dstat

功能:查看系统资源综合方面利用率,可以取代vmstat,iostat,netstat等命令的多功能工具

常用选项:

-c, CPU  打印cpu使用率

-d, disk   打印磁盘使用率

-m, memory(实际内存使用)(包括used,buffer,cache,free值)

-n, net 打印网络情况

-s, swap  打印呢交换分区使用情况

-t:将当前时间打印在第一行

-r:打印I/O统计信息

-l, systemload  打印负载统计量

--tcp, tcp stats  打印常用的tcp统计信息

--udp, udp stats  打印监听的UDP接口极其当前用量的一些动态数据

插件选项:

-–freespace :显示当前磁盘空间使用率

--list  查看支持的插件

--disk-util 打印某一事件磁盘的忙碌状况

--disk-tps

–proc-count :显示正在运行的程序数量

--top-bio     指出块I/O最大的进程

--top-bio-adv  指出块I/O最大的进程,包括pid、r、w

--top-io      打印正常I/O最大的进程

--top-io-adv   打印正常I/O最大的进程,包括pid、r、w

--top-cpu    查看最高使用CPU进程

--top-cpu-adv  查看最高CPU进程

--top-mem    查看最高使用内存进程

特性:

结合了vmstat,iostat,ifstat,netstat

实时显示统计情况

在分析和排障时可以通过启用监控项并排序

模块化设计

使用python编写的,更方便扩展现有的工作任务

容易扩展和添加你的计数器(请为此做出贡献)

包含的许多扩展插件充分说明了增加新的监控项目是很方便的

可以分组统计块设备/网络设备,并给出总数

可以显示每台设备的当前状态

极准确的时间精度,即便是系统负荷较高也不会延迟显示

显示准确地单位和和限制转换误差范围

用不同的颜色显示不同的单位

显示中间结果延时小于1秒

支持输出CSV格式报表,并能导入到Gnumeric和Excel以生成图形


示例:

[root@localhost log]# yum install -y dstat   #一般系统没有自带

image.png

说明:打印所有内存使用情况,而且是动态打印

image.png

说明:打印cpu资源消耗的数据


21.mpstat

功能:mpstat是 Multiprocessor Statistics的缩写,是实时系统监控工具

语法格式:mpstat [-P {cpu|ALL}] [internal [count]

常用参数:

-P {cpu l ALL}    表示监控哪个CPU, cpu在[0,cpu个数-1]中取值

internal    相邻的两次采样的间隔时间

count    采样的次数,count只能和delay一起使用

示例:

 

#直接使用
[root@localhost scripts]# mpstat
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 01/10/2018 _x86_64_   (1 CPU)

10:52:06 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:52:06 AM  all    0.01    0.00    0.07    0.03    0.00    0.06    0.00    0.00   99.83
#使用mpstat -P ALL 5 2
[root@localhost scripts]# mpstat -P ALL 5 2
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 01/10/2018 _x86_64_   (1 CPU)

10:52:48 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:52:53 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10:52:53 AM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
表示每5秒产生一个报告,总共产生2个


输出参数含义:

参数释义从/proc/stat获得数据
CPU处理器ID
%usr在internal时间段里,用户态的CPU时间(%),不包含 nice值为负进程usr/total*100
%nice在internal时间段里,nice值为负进程的CPU时间(%)nice/total*100
%sys在internal时间段里,核心时间(%)system/total*100
%iowait在internal时间段里,硬盘IO等待时间(%)iowait/total*100
%irq在internal时间段里,硬中断时间(%)irq/total*100
%soft在internal时间段里,软中断时间(%)softirq/total*100
%steal显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比steal/total*100
%guest显示运行虚拟处理器时CPU花费时间的百分比guest/total*100
%gnice
gnice/total*100
%idle在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%)idle/total*100

其中_cur 表示当前值,_pre表示interval时间前的值。上表中的所有值可取到两位小数点。

Note: 

1.vmstat和mpstat 命令的差别:mpstat 可以显示每个处理器的统计,而 vmstat 显示所有处理器的统计。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题。

2.vmstat中所有关于CPU的总结都适合mpstat。当您看到较低的 %idle 数字时,您知道出现了 CPU 不足的问题。当您看到较高的 %iowait 数字时,您知道在当前负载下 I/O 子系统出现了某些问题。


22.ipcs

功能:分析消息队列、共享内存和信号量

语法:ipcs [-mqs] [-abcopt] [-C core] [-N namelist]

常用参数:

-a  是默认的输出信息 打印出当前系统中所有的进程间通信方式的信息

-m 输出有关共享内存(shared memory)的信息

-q 输出有关信息队列(message queue)的信息

-s 输出信号量(semaphore)的信息

示例:

[root@localhost scripts]# ipcs -a

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x00000000 0          root       600        1         
0x00000000 65537      root       600        1         

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages 
[root@localhost scripts]# ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      

[root@localhost scripts]# ipcs -q

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    

[root@localhost scripts]# ipcs -s

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x00000000 0          root       600        1         
0x00000000 65537      root       600        1    
说明:-a就是底下三个选项的总和


23 ipcrm

功能:删除ipc(清除共享内存信息)

语法:ipcrm -m|-q|-s shm_id

常用参数:

ipcrm -M shmkey  移除用shmkey创建的共享内存段

ipcrm -m shmid    移除用shmid标识的共享内存段

ipcrm -Q msgkey  移除用msqkey创建的消息队列

ipcrm -q msqid  移除用msqid标识的消息队列

ipcrm -S semkey  移除用semkey创建的信号

ipcrm -s semid  移除用semid标识的信号

[root@localhost scripts]# ipcrm -M shmkey


24.ltrace(truss, strace

功能:跟踪进程调用库函数的情况

语法:ltrace [option ...] [command [arg ...]]

常用选项:

-a 对齐具体某个列的返回值。 

-c 计算时间和调用,并在程序退出时打印摘要。 

-C 解码低级别名称(内核级)为用户级名称。 

-d 打印调试信息。 

-e 改变跟踪的事件。 

-f 跟踪子进程。 

-h 打印帮助信息。 

-i 打印指令指针,当库调用时。 

-l 只打印某个库中的调用。 

-L 不打印库调用。 

-n, --indent=NR 对每个调用级别嵌套以NR个空格进行缩进输出。 

-o, --output=file 把输出定向到文件。 

-p PID 附着在值为PID的进程号上进行ltrace。 

-r 打印相对时间戳。 

-s STRLEN 设置打印的字符串最大长度。 

-S 显示系统调用。 

-t, -tt, -ttt 打印绝对时间戳。 

-T 输出每个调用过程的时间开销。 

-u USERNAME 使用某个用户id或组ID来运行命令。 

-V, --version 打印版本信息,然后退出。 

-x NAME treat the global NAME like a library subroutine.(求翻译)


对比其他两个跟踪进程调用命令:

strace 命令能够显示所有由用户空间程序发出的系统调用,显示这些调用的参数并返回符号形式的值。strace 从内核接收信息,而且不需要以任何特殊的方式来构建内核。

常用选项:

-f -F选项告诉strace同时跟踪fork和vfork出来的进程

-o xxx.txt 输出到某个文件。

 -e execve 只记录 execve 这类系统调用 


truss也是这样一个命令,unix自带工具

三者命令都可以使用下面选项:

-f :除了跟踪当前进程外,还跟踪其子进程。

-o file :将输出信息写到文件file中,而不是显示到标准错误输出(stderr)。

-p pid :绑定到一个由pid对应的正在运行的进程。此参数常用来调试后台进程。

示例:

[root@localhost scripts]# yum install -y ltrace  #没有的先安装
[root@localhost scripts]# yum install -y strace
[root@localhost scripts]# strace -f -o vim.strace vim  #跟踪vim及其子进程的运行,将输出信息写到文件vim.strace
[root@localhost scripts]#truss -o ls.truss ls -al   # 跟踪ls -al的运行,将输出信息写到文件/tmp/ls.truss中
[root@localhost scripts]#ltrace -p 234   #跟踪一个pid为234的已经在运行的进程


25.halt

这个命令相当于直接拔电源关机,不管你目前的系统状态如何,进行硬件强制关机。一般不建议使用。


26.poweroff

poweroff意思是立即关机,跟shutdown -h now效果一样,在系统启动级别为3的情况下,不建议使用。


27.shutdown

功能:关机

语法:shutdown [OPTION]...  TIME [MESSAGE]

常用选项:

-h:停止系统服务并关机

-r:   停止系统服务并重启

常用用法:

shutdown -h now      #立即关机 

shutdown -h 14:00    #到14:00关机

shutdown -h +30      #30分钟后自动关机 

shutdown -r now      #立即重启 

shutdown -r +30      #30分钟后重启


28.reboot

reboot意思是立即重启,跟shutdown -r now一样。


29. init

功能:使用启动级别来关机重启

0:在启动级别中代表关机

6:在启动级别中代表重启

3:多用户模式

5:桌面模式

init 0:系统关机

init 6:系统重启

init 3:重启到多用户模式的纯命令行

init 5:重启到桌面模式


30.exit

功能:退出登录


31.ctrl+d

功能:退出登录