1.unamenode
功能:打印系統信息
python
語法:uname [OPTION]...
mysql
經常使用選項:
linux
-a 打印全部信息
ios
-s 打印內核名稱
sql
-n 打印主機名
shell
-r 打印內核發行版
apache
-v 打印內核版本
vim
-m 打印機器硬件名
centos
-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 幫助命令。
示例:
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 中,這樣下次從新開機時系統時間纔會持續抱持最新的正確值。
練習:
一、將本身的系統時間修改成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
功能:查看系統資源綜合方面利用率,能夠取代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 #通常系統沒有自帶
說明:打印全部內存使用狀況,並且是動態打印
說明:打印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
功能:退出登陸