1.1 top:
top命令是Linux下常用的性能分析工具抡笼,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況
top命令提供了實(shí)時(shí)的對系統(tǒng)處理器的狀態(tài)監(jiān)視.它將顯示系統(tǒng)中CPU最“敏感”的任務(wù)列表.該命令可以按CPU使用.內(nèi)存使用和執(zhí)行時(shí)間對任務(wù)進(jìn)行排序夹囚;而且該命令的很多特性都可以通過交互式命令或者在個(gè)人定制文件中進(jìn)行設(shè)定.
-
命令與顯示結(jié)果
[itshare@hadoop201 ~]$ top top - 08:04:45 up 14 min, 2 users, load average: 1.33, 0.37, 0.16 Tasks: 160 total, 1 running, 159 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 3861304 total, 2006184 free, 1452708 used, 402412 buff/cache KiB Swap: 4063228 total, 4063228 free, 0 used. 2179892 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2744 itshare 20 0 2880872 298780 23396 S 1.7 7.7 0:36.89 java 2371 itshare 20 0 2822356 228376 22624 S 0.7 5.9 0:17.38 java 1138 root 20 0 305504 6564 5176 S 0.3 0.2 0:01.10 vmtoolsd 1418 root 20 0 218552 4080 3240 S 0.3 0.1 0:00.22 rsyslogd 1526 mysql 20 0 1122304 190276 6672 S 0.3 4.9 0:02.53 mysqld 2234 itshare 20 0 2841872 314700 22636 S 0.3 8.2 0:16.27 java 2935 itshare 20 0 2827640 315028 22756 S 0.3 8.2 0:24.83 java
-
顯示結(jié)果說明
-
top
- 08:04:45 當(dāng)前系統(tǒng)時(shí)間
- up 14 min 系統(tǒng)運(yùn)行的時(shí)間院刁,格式:時(shí):分包蓝, 剛啟動(dòng)只有分
- 2 user 當(dāng)前登陸用戶數(shù)
- load average: 1.33, 0.37, 0.16: 系統(tǒng)負(fù)載伪窖,即任務(wù)隊(duì)列的平均長度嘱函。三個(gè)數(shù)值分別為 1分鐘、5分鐘城榛、15分鐘前到現(xiàn)在的平均值。
-
Tasks: 161 total, 1 running, 160 sleeping, 0 stopped, 0 zombie
- total 進(jìn)程總數(shù)
- running 正在運(yùn)行的進(jìn)程數(shù)
- sleeping 睡眠的進(jìn)程數(shù)
- stopped 停止的進(jìn)程數(shù)
- zombie 僵尸進(jìn)程數(shù)
-
%Cpu(s):
- 0.1 us 用戶空間占用CPU百分比
- 0.0 sy 內(nèi)核空間占用CPU百分比
- 0.0 ni 用戶進(jìn)程空間內(nèi)改變過優(yōu)先級的進(jìn)程占用CPU百分比
- 99.9 id 空閑CPU百分比
- 0.0 wa 等待輸入輸出的CPU時(shí)間百分比
- 0.0 hi 硬件CPU中斷占用百分比
- 0.0 si 軟中斷占用百分比
- 0.0 st 虛擬機(jī)占用百分比
-
KiB Mem :
- 3861304 total 物理內(nèi)存總量
- 1976556 free, 空閑內(nèi)存總量
- 1485068 used 使用的物理內(nèi)存總量
- 399680 buff/cache 用作內(nèi)核緩存的內(nèi)存量
-
KiB Swap:
- 4063228 total 交換區(qū)總量
- 4063228 free 空閑交換區(qū)總量
- 0 used 使用的交換區(qū)總量
- 2179892 avail Mem 緩沖的交換區(qū)總量,內(nèi)存中的內(nèi)容被換出到交換區(qū)态兴,而后又被換入到內(nèi)存狠持,但使用過的交換區(qū)尚未被覆蓋,該數(shù)值即為這些內(nèi)容已存在于內(nèi)存中的交換區(qū)的大小,相應(yīng)的內(nèi)存再次被換出時(shí)可不必再對交換區(qū)寫入
-
再下面是動(dòng)態(tài)的進(jìn)程信息列表
序號 列名 含義 a PID 進(jìn)程id b PPID 父進(jìn)程id c RUSER Real user name d UID 進(jìn)程所有者的用戶id e USER 進(jìn)程所有者的用戶名 f GROUP 進(jìn)程所有者的組名 g TTY 啟動(dòng)進(jìn)程的終端名瞻润。不是從終端啟動(dòng)的進(jìn)程則顯示為 ? h PR 優(yōu)先級 i NI nice值喘垂。負(fù)值表示高優(yōu)先級,正值表示低優(yōu)先級 j P 最后使用的CPU绍撞,僅在多CPU環(huán)境下有意義 k %CPU 上次更新到現(xiàn)在的CPU時(shí)間占用百分比 l TIME 進(jìn)程使用的CPU時(shí)間總計(jì)正勒,單位秒 m TIME+ 進(jìn)程使用的CPU時(shí)間總計(jì),單位1/100秒 n %MEM 進(jìn)程使用的物理內(nèi)存百分比 o VIRT 進(jìn)程使用的虛擬內(nèi)存總量傻铣,單位kb章贞。VIRT=SWAP+RES p SWAP 進(jìn)程使用的虛擬內(nèi)存中,被換出的大小非洲,單位kb鸭限。 q RES 進(jìn)程使用的、未被換出的物理內(nèi)存大小两踏,單位kb败京。RES=CODE+DATA r CODE 可執(zhí)行代碼占用的物理內(nèi)存大小,單位kb s DATA 可執(zhí)行代碼以外的部分(數(shù)據(jù)段+棧)占用的物理內(nèi)存大小缆瓣,單位kb t SHR 共享內(nèi)存大小喧枷,單位kb u nFLT 頁面錯(cuò)誤次數(shù) v nDRT 最后一次寫入到現(xiàn)在虹统,被修改過的頁面數(shù)弓坞。 w S 進(jìn)程狀態(tài)(D=不可中斷的睡眠狀態(tài),R=運(yùn)行,S=睡眠,T=跟蹤/停止,Z=僵尸進(jìn)程) x COMMAND 命令名/命令行 y WCHAN 若該進(jìn)程在睡眠隧甚,則顯示睡眠中的系統(tǒng)函數(shù)名 z Flags 任務(wù)標(biāo)志,參考 sched.h
默認(rèn)情況下僅顯示比較重要的 PID渡冻、USER戚扳、PR、NI族吻、VIRT帽借、RES、SHR超歌、S砍艾、%CPU、%MEM巍举、TIME+脆荷、COMMAND 列“妹酰可以通過下面的快捷鍵來更改顯示內(nèi)容蜓谋。
更改顯示內(nèi)容通過 f 鍵可以選擇顯示的內(nèi)容。按 f 鍵之后會(huì)顯示列的列表炭分,按 a-z 即可顯示或隱藏對應(yīng)的列桃焕,最后按回車鍵確定。
按 o 鍵可以改變列的顯示順序捧毛。按小寫的 a-z 可以將相應(yīng)的列向右移動(dòng)观堂,而大寫的 A-Z 可以將相應(yīng)的列向左移動(dòng)。最后按回車鍵確定岖妄。
按大寫的 F 或 O 鍵型将,然后按 a-z 可以將進(jìn)程按照相應(yīng)的列進(jìn)行排序。而大寫的 R 鍵可以將當(dāng)前的排序倒轉(zhuǎn)荐虐。
-
-
命令的使用
-
top使用格式
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
-
選項(xiàng)說明
選項(xiàng) 含義 d 指定每兩次屏幕信息刷新之間的時(shí)間間隔七兜。當(dāng)然用戶可以使用s交互命令來改變之。 p 通過指定監(jiān)控進(jìn)程ID來僅僅監(jiān)控某個(gè)進(jìn)程的狀態(tài) q 該選項(xiàng)將使top沒有任何延遲的進(jìn)行刷新福扬。如果調(diào)用程序有超級用戶權(quán)限腕铸,那么top將以盡可能高的優(yōu)先級運(yùn)行。 S 指定累計(jì)模式 s 使top命令在安全模式中運(yùn)行铛碑。這將去除交互命令所帶來的潛在危險(xiǎn)狠裹。 i 使top不顯示任何閑置或者僵死進(jìn)程。 c 顯示整個(gè)命令行而不只是顯示命令名
-
-
-
其他實(shí)用命令
下面介紹在top命令執(zhí)行過程中可以使用的一些交互命令汽烦。從使用角度來看涛菠,熟練的掌握這些命令比掌握選項(xiàng)還重要一些。這些命令都是單字母的,如果在命令行選項(xiàng)中使用了s選項(xiàng)俗冻,則可能其中一些命令會(huì)被屏蔽掉礁叔。命令 含義 Ctrl+L 擦除并且重寫屏幕。 h或者? 顯示幫助畫面迄薄,給出一些簡短的命令總結(jié)說明琅关。 k 終止一個(gè)進(jìn)程。系統(tǒng)將提示用戶輸入需要終止的進(jìn)程PID讥蔽,以及需要發(fā)送給該進(jìn)程什么樣的信號涣易。一般的終止進(jìn)程可以使用15信號;如果不能正常結(jié)束那就使用信號9強(qiáng)制結(jié)束該進(jìn)程冶伞。默認(rèn)值是信號15新症。在安全模式中此命令被屏蔽。 i 忽略閑置和僵死進(jìn)程响禽。這是一個(gè)開關(guān)式命令账劲。 q 退出程序。 r 重新安排一個(gè)進(jìn)程的優(yōu)先級別金抡。系統(tǒng)提示用戶輸入需要改變的進(jìn)程PID以及需要設(shè)置的進(jìn)程優(yōu)先級值瀑焦。輸入一個(gè)正值將使優(yōu)先級降低,反之則可以使該進(jìn)程擁有更高的優(yōu)先權(quán)梗肝。默認(rèn)值是10榛瓮。 S 切換到累計(jì)模式。 s 改變兩次刷新之間的延遲時(shí)間巫击。系統(tǒng)將提示用戶輸入新的時(shí)間禀晓,單位為s。如果有小數(shù)坝锰,就換算成 ms粹懒。輸入0值則系統(tǒng)將不斷刷新,默認(rèn)值是3s顷级。需要注意的是如果設(shè)置太小的時(shí)間凫乖,很可能會(huì)引起不斷刷新,從而根本來不及看清顯示的情況弓颈,而且系統(tǒng)負(fù)載也會(huì)大大增加帽芽。 f/F 從當(dāng)前顯示中添加或者刪除項(xiàng)目。 o/O 改變顯示項(xiàng)目的順序翔冀。 l 切換顯示平均負(fù)載和啟動(dòng)時(shí)間信息导街。 m 切換顯示內(nèi)存信息。 t 切換顯示進(jìn)程和CPU狀態(tài)信息纤子。 c 切換顯示命令名稱和完整命令行搬瑰。 M 根據(jù)駐留內(nèi)存大小進(jìn)行排序款票。 P 根據(jù)CPU使用百分比大小進(jìn)行排序。 T 根據(jù)時(shí)間/累計(jì)時(shí)間進(jìn)行排序泽论。 W 將當(dāng)前設(shè)置寫入~/.toprc文件中徽职。這是寫top配置文件的推薦方法。
-
常用操作:
top //每隔3秒顯式所有進(jìn)程的資源占用情況 top -d 5 //每隔5秒顯式所有進(jìn)程的資源占用情況 top -c //每隔5秒顯式進(jìn)程的資源占用情況佩厚,并顯示進(jìn)程的命令行選項(xiàng)(默認(rèn)只有進(jìn)程名) top -p 2744 -p 2371//每隔5秒顯示pid是2744和pid是2371的兩個(gè)進(jìn)程的資源占用情況 top -d 2 -c -p 2371//每隔2秒顯示pid是12345的進(jìn)程的資源使用情況,并顯式該進(jìn)程啟動(dòng)的命令行選項(xiàng)
1.2 ps
概述: ps命令用來列出系統(tǒng)中當(dāng)前運(yùn)行的那些進(jìn)程说订。ps命令列出的是當(dāng)前那些進(jìn)程的快照抄瓦。
格式:ps [options] [--help]
-
ps 的選項(xiàng)非常多, 在此僅列出幾個(gè)常用的選項(xiàng)
選項(xiàng) 含義 -A 列出所有的進(jìn)程 -w 顯示加寬可以顯示較多的資訊 -au 顯示較詳細(xì)的資訊 -aux 顯示所有包含其他使用者的行程 -
ps aux 輸出格式
[itshare@hadoop201 ~]$ ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 191428 4380 ? Ss 07:50 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0.0 0.0 0 0 ? S 07:50 0:00 [kthreadd] root 4 0.0 0.0 0 0 ? S< 07:50 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? S 07:50 0:00 [ksoftirqd/0] root 7 0.0 0.0 0 0 ? S 07:50 0:00 [migration/0]xxxxxxxxxx itshare 3228 0.0 0.0 155472 1872 pts/0 R+ 09:20 0:00 ps aux[itshare@hadoop201 ~]$ ps -auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.1 191428 4380 ? Ss 07:50 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22root 2 0.0 0.0 0 0 ? S 07:50 0:00 [kthreadd]root 4 0.0 0.0 0 0 ? S< 07:50 0:00 [kworker/0:0H]root 6 0.0 0.0 0 0 ? S 07:50 0:00 [ksoftirqd/0]root 7 0.0 0.0 0 0 ? S 07:50 0:00 [migration/0]USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
-
-
每列含義說明
USER: 行程擁有者 PID: pid %CPU: 占用的 CPU 使用率 %MEM: 占用的記憶體使用率 VSZ: 占用的虛擬記憶體大小 RSS: 占用的記憶體大小 TTY: 終端的次要裝置號碼 (minor device number of tty) STAT: 該行程的狀態(tài): D: 無法中斷的休眠狀態(tài) (通常 IO 的進(jìn)程) R: 正在執(zhí)行中 S: 靜止?fàn)顟B(tài) T: 暫停執(zhí)行 Z: 不存在但暫時(shí)無法消除 W: 沒有足夠的記憶體分頁可分配 <: 高優(yōu)先序的行程 N: 低優(yōu)先序的行程 L: 有記憶體分頁分配并鎖在記憶體內(nèi) (實(shí)時(shí)系統(tǒng)或捱A I/O) START: 行程開始時(shí)間 TIME: 執(zhí)行的時(shí)間 COMMAND:所執(zhí)行的指令
-
常見用法
-
根據(jù)進(jìn)程信息查詢
-
格式
ps -ef | grep 進(jìn)程關(guān)鍵字
-
舉例
[itshare@hadoop201 ~]$ ps aux|grep mysql mysql 1526 0.1 4.9 1122304 190276 ? Sl 07:50 0:09 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid itshare 3264 0.0 0.0 112828 980 pts/0 R+ 09:33 0:00 grep --color=auto mysql
-
-
顯示指定用戶的進(jìn)程
[itshare@hadoop201 ~]$ ps -u itshare PID TTY TIME CMD 1976 ? 00:00:01 sshd 1977 pts/0 00:00:00 bash 2007 ? 00:00:00 sshd 2008 pts/1 00:00:00 bash 2234 ? 00:00:36 java 2371 ? 00:00:37 java 2744 ? 00:01:20 java 2935 ? 00:00:39 java 3272 pts/0 00:00:00 ps
-
-
顯示所有進(jìn)程信息,連同命令行
UID PID PPID C STIME TTY TIME CMD root 1 0 0 07:50 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0 0 07:50 ? 00:00:00 [kthreadd] root 4 2 0 07:50 ? 00:00:00 [kworker/0:0H] root 6 2 0 07:50 ? 00:00:00 [ksoftirqd/0] root 7 2 0 07:50 ? 00:00:00 [migration/0] ...
1.3 iotop
-
概述:
實(shí)時(shí)監(jiān)控磁盤I/O的工具
-
安裝
yum -y install iotop
-
使用
-
查看幫助信息
[root@hadoop201 itshare]# iotop -h Usage: /usr/sbin/iotop [OPTIONS] DISK READ and DISK WRITE are the block I/O bandwidth used during the sampling period. SWAPIN and IO are the percentages of time the thread spent respectively while swapping in and waiting on I/O more generally. PRIO is the I/O priority at which the thread is running (set using the ionice command). Controls: left and right arrows to change the sorting column, r to invert the sorting order, o to toggle the --only option, p to toggle the --processes option, a to toggle the --accumulated option, i to change I/O priority, q to quit, any other key to force a refresh. Options: --version show program's version number and exit -h, --help show this help message and exit -o, --only only show processes or threads actually doing I/O -b, --batch non-interactive mode -n NUM, --iter=NUM number of iterations before ending [infinite] -d SEC, --delay=SEC delay between iterations [1 second] -p PID, --pid=PID processes/threads to monitor [all] -u USER, --user=USER users to monitor [all] -P, --processes only show processes, not all threads -a, --accumulated show accumulated I/O instead of bandwidth -k, --kilobytes use kilobytes instead of a human friendly unit -t, --time add a timestamp on each line (implies --batch) -q, --quiet suppress some lines of header (implies --batch)
選項(xiàng)說明
--version 顯示程序的版本號并退出 -h, --help 顯示幫助信息并退出 -o, --only 只顯示正在進(jìn)行I/O操作的進(jìn)程或線程 -b, --batch 非交互模式陶冷,一般用于記錄日志 -n NUM, --iter=NUM 設(shè)置監(jiān)測的次數(shù)钙姊,默認(rèn)無限。在非交互模式下很有用埂伦。 -d SEC, --delay=SEC 設(shè)置每次監(jiān)測的間隔煞额,默認(rèn)1秒,接受非整形數(shù)據(jù) -p PID, --pid=PID 指定監(jiān)測的進(jìn)程/線程沾谜。 -u USER, --user=USER 指定監(jiān)測某個(gè)用戶產(chǎn)生的I/O -P, --processes 僅顯示進(jìn)程膊毁,默認(rèn)iotop顯示所有線程。 -a, --accumulated 顯示累積的I/O基跑,而不是帶寬婚温。 -k, --kilobytes 使用kB單位,而不是對人友好的單位媳否。在非交互模式下栅螟,腳本編程有用。 -t, --time 加上時(shí)間戳篱竭,非交互非模式力图。 -q, --quiet 禁止頭幾行,非交互模式掺逼。有三種指定方式吃媒。
按鍵交互
left和right方向鍵:改變排序÷来 r:反向排序晓折。 o:切換至選項(xiàng)--only。 p:切換至--processes選項(xiàng)兽泄。 a:切換至--accumulated選項(xiàng)漓概。 q:退出。 i:改變線程的優(yōu)先級病梢。
-
-
舉例
-
只顯示正在產(chǎn)生I/O的進(jìn)程或線程胃珍。除了傳參梁肿,可以在運(yùn)行過程中按o生效。
iotop -o
-
時(shí)間刷新間隔3秒觅彰,輸出5次
iotop -d 3 -n 5
-
-
非交互式吩蔑,輸出5次,間隔5秒填抬,輸出到屏幕烛芬,也可輸出到日志文本,用于監(jiān)控某時(shí)間段的io信息
iotop -botq -n 5 -d 5
-
非交互式飒责,輸出pid為2744的進(jìn)程信息
iotop -botq -p 2744
1.4 iostat
iostat工具將對系統(tǒng)的磁盤操作活動(dòng)進(jìn)行監(jiān)視赘娄。它的特點(diǎn)是匯報(bào)磁盤活動(dòng)統(tǒng)計(jì)情況,同時(shí)也會(huì)匯報(bào)出CPU使用情況宏蛉。
-
安裝
yum install sysstat
-
使用
顯示所有設(shè)備負(fù)載情況
[root@hadoop201 itshare]# iostat Linux 3.10.0-1127.el7.x86_64 (hadoop201) 2021年02月02日 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.05 0.00 0.07 0.00 0.00 99.88 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.80 23.40 7.18 711490 218382 scd0 0.00 0.03 0.00 1028 0 dm-0 0.75 22.34 7.11 679395 216294 dm-1 0.00 0.07 0.00 2204 0
說明:
cpu屬性值說明:
%user:CPU處在用戶模式下的時(shí)間百分比遣臼。
%nice:CPU處在帶NICE值的用戶模式下的時(shí)間百分比。
%system:CPU處在系統(tǒng)模式下的時(shí)間百分比拾并。
%iowait:CPU等待輸入輸出完成時(shí)間的百分比揍堰。
%steal:管理程序維護(hù)另一個(gè)虛擬處理器時(shí),虛擬CPU的無意識等待時(shí)間百分比嗅义。
%idle:CPU空閑時(shí)間百分比屏歹。
備注:
如果%iowait的值過高,表示硬盤存在I/O瓶頸
如果%idle值高之碗,表示CPU較空閑
如果%idle值高但系統(tǒng)響應(yīng)慢時(shí)西采,可能是CPU等待分配內(nèi)存,應(yīng)加大內(nèi)存容量继控。
如果%idle值持續(xù)低于10械馆,表明CPU處理能力相對較低,系統(tǒng)中最需要解決的資源是CPU武通。
cpu屬性值說明:
tps:該設(shè)備每秒的傳輸次數(shù)
kB_read/s:每秒從設(shè)備(drive expressed)讀取的數(shù)據(jù)量霹崎;
kB_wrtn/s:每秒向設(shè)備(drive expressed)寫入的數(shù)據(jù)量;
kB_read: 讀取的總數(shù)據(jù)量冶忱;
kB_wrtn:寫入的總數(shù)量數(shù)據(jù)量尾菇;
-
舉例
定時(shí)顯示所有信息
# 【每隔2秒刷新顯示,且顯示3次】 iostat 2 3
顯示指定磁盤信息
iostat -d /dev/sda
顯示tty和Cpu信息
iostat -t
以M為單位顯示所有信息
iostat -m
查看設(shè)備使用率(%util)囚枪、響應(yīng)時(shí)間(await)
# 【-d 顯示磁盤使用情況派诬,-x 顯示詳細(xì)信息】# iostat -d -x -k 1 1
說明:
rrqm/s: 每秒進(jìn)行 merge 的讀操作數(shù)目.即 delta(rmerge)/s
wrqm/s: 每秒進(jìn)行 merge 的寫操作數(shù)目.即 delta(wmerge)/s
%util: 一秒中有百分之多少的時(shí)間用于 I/O
如果%util接近100%,說明產(chǎn)生的I/O請求太多链沼,I/O系統(tǒng)已經(jīng)滿負(fù)荷
idle小于70% IO壓力就較大了默赂,一般讀取速度有較多的wait。
查看cpu狀態(tài)
[root@hadoop201 itshare]# iostat -c 1 1 Linux 3.10.0-1127.el7.x86_64 (hadoop201) 2021年02月02日 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.05 0.00 0.07 0.00 0.00 99.88
1.5 netstat
Netstat 命令用于顯示各種網(wǎng)絡(luò)相關(guān)信息括勺,如網(wǎng)絡(luò)連接缆八,路由表曲掰,接口狀態(tài) (Interface Statistics),masquerade 連接奈辰,多播成員 (Multicast Memberships) 等等栏妖。
-
輸出信息含義
[root@hadoop201 itshare]# netstat Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 hadoop201:43808 hadoop2:intu-ec-svcdisc TIME_WAIT tcp 0 0 hadoop2:intu-ec-svcdisc hadoop203:46252 ESTABLISHED tcp 0 0 hadoop2:intu-ec-svcdisc hadoop202:49768 ESTABLISHED tcp 0 96 hadoop201:ssh 192.168.19.1:64945 ESTABLISHED tcp 0 0 hadoop201:ssh 192.168.19.1:65078 ESTABLISHED tcp 0 0 hadoop201:43456 hadoop2:intu-ec-svcdisc ESTABLISHED tcp 0 0 hadoop201:42906 hadoop202:8031 ESTABLISHED tcp 0 0 hadoop2:intu-ec-svcdisc hadoop201:43456 ESTABLISHED Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 3 [ ] DGRAM 30 /run/systemd/notify unix 2 [ ] DGRAM 32 /run/systemd/cgroups-agent
-
執(zhí)行netstat后,其輸出結(jié)果為
從整體上看奖恰,netstat的輸出結(jié)果可以分為兩個(gè)部分:
一個(gè)是Active Internet connections吊趾,稱為有源TCP連接,其中"Recv-Q"和"Send-Q"指%0A的是接收隊(duì)列和發(fā)送隊(duì)列瑟啃。這些數(shù)字一般都應(yīng)該是0论泛。如果不是則表示軟件包正在隊(duì)列中堆積。這種情況只能在非常少的情況見到翰守。
另一個(gè)是Active UNIX domain sockets,稱為有源Unix域套接口(和網(wǎng)絡(luò)套接字一樣疲酌,但是只能用于本機(jī)通信蜡峰,性能可以提高一倍)。
Proto顯示連接使用的協(xié)議,RefCnt表示連接到本套接口上的進(jìn)程號,Types顯示套接口的類型,State顯示套接口當(dāng)前的狀態(tài),Path表示連接到套接口的其它進(jìn)程使用的路徑名朗恳。
-
常見選項(xiàng)
-a (all)顯示所有選項(xiàng)湿颅,默認(rèn)不顯示LISTEN相關(guān)
-t (tcp)僅顯示tcp相關(guān)選項(xiàng)
-u (udp)僅顯示udp相關(guān)選項(xiàng)
-n 拒絕顯示別名,能顯示數(shù)字的全部轉(zhuǎn)化成數(shù)字粥诫。
-l 僅列出有在 Listen (監(jiān)聽) 的服務(wù)狀態(tài)-p 顯示建立相關(guān)鏈接的程序名
-r 顯示路由信息油航,路由表
-e 顯示擴(kuò)展信息,例如uid等
-s 按各個(gè)協(xié)議進(jìn)行統(tǒng)計(jì)
-c 每隔一個(gè)固定時(shí)間怀浆,執(zhí)行該netstat命令谊囚。提示:LISTEN和LISTENING的狀態(tài)只有用-a或者-l才能看到
-
實(shí)用命令實(shí)例
列出所有端口 (包括監(jiān)聽和未監(jiān)聽的)
列出所有端口 netstat -a
``` [root@hadoop201 itshare]# netstat -a|more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:ampify 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:9864 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:fs-agent 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:9866 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:9867 0.0.0.0:* LISTEN tcp 0 0 localhost:33006 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:9870 0.0.0.0:* LISTEN tcp 0 0 hadoop201:19888 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:10033 0.0.0.0:* LISTEN tcp 0 0 hadoop2:intu-ec-svcdisc 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:13562 0.0.0.0:* LISTEN tcp 0 0 hadoop201:10020 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:40807 0.0.0.0:* LISTEN tcp 0 0 hadoop201:43812 hadoop2:intu-ec-svcdisc TIME_WAIT tcp 0 0 hadoop2:intu-ec-svcdisc hadoop203:46252 ESTABLISHED tcp 0 0 hadoop2:intu-ec-svcdisc hadoop202:49768 ESTABLISHED tcp 0 96 hadoop201:ssh 192.168.19.1:64945 ESTABLISHED tcp 0 0 hadoop201:ssh 192.168.19.1:65078 ESTABLISHED tcp 0 0 hadoop201:43456 hadoop2:intu-ec-svcdisc ESTABLISHED tcp 0 0 hadoop201:42906 hadoop202:8031 ESTABLISHED tcp 0 0 hadoop2:intu-ec-svcdisc hadoop201:43456 ESTABLISHED tcp6 0 0 [::]:mysql [::]:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN tcp6 0 0 localhost:smtp [::]:* LISTEN udp 0 0 hadoop201:ntp 0.0.0.0:* udp 0 0 localhost:ntp 0.0.0.0:* udp 0 0 0.0.0.0:ntp 0.0.0.0:* udp6 0 0 hadoop201:ntp [::]:* udp6 0 0 localhost:ntp [::]:* udp6 0 0 [::]:ntp [::]:* Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 16647 /run/systemd/private unix 3 [ ] DGRAM 30 /run/systemd/notify unix 2 [ ] DGRAM 32 /run/systemd/cgroups-agent unix 2 [ ACC ] STREAM LISTENING 25818 private/proxymap unix 2 [ ACC ] SEQPACKET LISTENING 16678 /run/udev/control unix 2 [ ACC ] STREAM LISTENING 25821 private/proxywrite unix 2 [ ACC ] STREAM LISTENING 25824 private/smtp unix 2 [ ACC ] STREAM LISTENING 25827 private/relay unix 2 [ ACC ] STREAM LISTENING 16680 /run/lvm/lvmetad.socket unix 2 [ ACC ] STREAM LISTENING 40 /run/systemd/journal/stdout unix 2 [ ACC ] STREAM LISTENING 25833 private/error unix 2 [ ACC ] STREAM LISTENING 25836 private/retry unix 5 [ ] DGRAM 43 /run/systemd/journal/socket unix 2 [ ACC ] STREAM LISTENING 25839 private/discard unix 2 [ ACC ] STREAM LISTENING 25842 private/local unix 15 [ ] DGRAM 45 /dev/log unix 2 [ ACC ] STREAM LISTENING 25845 private/virtual unix 2 [ ACC ] STREAM LISTENING 20792 /var/run/abrt/abrt.socket unix 2 [ ] DGRAM 16698 /run/systemd/shutdownd unix 2 [ ACC ] STREAM LISTENING 16707 /run/lvm/lvmpolld.socket unix 2 [ ACC ] STREAM LISTENING 25854 private/scache unix 2 [ ACC ] STREAM LISTENING 26922 private/defer unix 2 [ ACC ] STREAM LISTENING 26925 private/trace unix 2 [ ACC ] STREAM LISTENING 26902 public/pickup unix 2 [ ACC ] STREAM LISTENING 26906 public/cleanup unix 2 [ ACC ] STREAM LISTENING 26931 public/flush unix 2 [ ACC ] STREAM LISTENING 25830 public/showq unix 2 [ ACC ] STREAM LISTENING 25848 private/lmtp unix 2 [ ACC ] STREAM LISTENING 25851 private/anvil unix 2 [ ACC ] STREAM LISTENING 26909 public/qmgr unix 2 [ ACC ] STREAM LISTENING 26913 private/tlsmgr unix 2 [ ACC ] STREAM LISTENING 26916 private/rewrite unix 2 [ ACC ] STREAM LISTENING 26919 private/bounce unix 2 [ ACC ] STREAM LISTENING 26928 private/verify unix 2 [ ACC ] STREAM LISTENING 20696 /run/dbus/system_bus_socket unix 2 [ ACC ] STREAM LISTENING 25905 /var/lib/mysql/mysql.sock unix 2 [ ACC ] STREAM LISTENING 15096 /var/run/vmware/guestServicePipe unix 3 [ ] STREAM CONNECTED 26900 unix 3 [ ] STREAM CONNECTED 994 unix 3 [ ] STREAM CONNECTED 26926 ```
-
列出所有 tcp 端口 netstat -at
[root@hadoop201 itshare]# netstat Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 hadoop2:intu-ec-svcdisc hadoop203:46252 ESTABLISHED tcp 0 0 hadoop2:intu-ec-svcdisc hadoop202:49768 ESTABLISHED tcp 0 96 hadoop201:ssh 192.168.19.1:64945 ESTABLISHED tcp 0 0 hadoop201:ssh 192.168.19.1:65078 ESTABLISHED tcp 0 0 hadoop2:intu-ec-svcdisc hadoop203:47112 ESTABLISHED tcp 0 0 hadoop201:43456 hadoop2:intu-ec-svcdisc ESTABLISHED tcp 0 0 hadoop201:42906 hadoop202:8031 ESTABLISHED tcp 0 0 hadoop2:intu-ec-svcdisc hadoop201:43456 ESTABLISHED
3. **列出所有 udp 端口 netstat -au**
```
[root@hadoop201 itshare]# netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 hadoop201:ntp 0.0.0.0:*
udp 0 0 localhost:ntp 0.0.0.0:*
udp 0 0 0.0.0.0:ntp 0.0.0.0:*
udp6 0 0 hadoop201:ntp [::]:*
udp6 0 0 localhost:ntp [::]:*
udp6 0 0 [::]:ntp [::]:*
```
-
列出所有處于監(jiān)聽狀態(tài)的 Sockets
- 只顯示監(jiān)聽端口 netstat -l
- 只列出所有監(jiān)聽 tcp 端口 netstat -lt
- 只列出所有監(jiān)聽 udp 端口 netstat -lu
- 只列出所有監(jiān)聽 UNIX 端口 netstat -lx
-
顯示每個(gè)協(xié)議的統(tǒng)計(jì)信息
- 顯示所有端口的統(tǒng)計(jì)信息 netstat -s
- 顯示 TCP 或 UDP 端口的統(tǒng)計(jì)信息 netstat -st 或 -su
-
在 netstat 輸出中顯示 PID 和進(jìn)程名稱 netstat -p
-
netstat -p 可以與其它開關(guān)一起使用,就可以添加 “PID/進(jìn)程名稱” 到 netstat 輸出中执赡,這樣 debugging 的時(shí)候可以很方便的發(fā)現(xiàn)特定端口運(yùn)行的程序镰踏。
[root@hadoop201 itshare]# netstat -pt Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 hadoop201:43818 hadoop2:intu-ec-svcdisc TIME_WAIT - tcp 0 0 hadoop2:intu-ec-svcdisc hadoop203:46252 ESTABLISHED 2234/java tcp 0 0 hadoop2:intu-ec-svcdisc hadoop202:49768 ESTABLISHED 2234/java tcp 0 96 hadoop201:ssh 192.168.19.1:64945 ESTABLISHED 1974/sshd: itshare tcp 0 0 hadoop201:ssh 192.168.19.1:65078 ESTABLISHED 2005/sshd: itshare tcp 0 0 hadoop2:intu-ec-svcdisc hadoop203:47122 ESTABLISHED 2234/java tcp 0 0 hadoop201:43456 hadoop2:intu-ec-svcdisc ESTABLISHED 2371/java tcp 0 0 hadoop201:42906 hadoop202:8031 ESTABLISHED 2744/java tcp 0 0 hadoop2:intu-ec-svcdisc hadoop201:43456 ESTABLISHED 2234/java
-
-
在 netstat 輸出中不顯示主機(jī),端口和用戶名 (host, port or user)
當(dāng)你不想讓主機(jī)沙合,端口和用戶名顯示奠伪,使用 netstat -n。將會(huì)使用數(shù)字代替那些名稱首懈。
同樣可以加速輸出绊率,因?yàn)椴挥眠M(jìn)行比對查詢。
# netstat -an
如果只是不想讓這三個(gè)名稱中的一個(gè)被顯示究履,使用以下命令
# netsat -a --numeric-ports # netsat -a --numeric-hosts # netsat -a --numeric-users
-
持續(xù)輸出 netstat 信息
netstat 將每隔一秒輸出網(wǎng)絡(luò)信息滤否。
# netstat -c Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 ramesh-laptop.loc:36130 101-101-181-225.ama:www ESTABLISHED tcp 1 1 ramesh-laptop.loc:52564 101.11.169.230:www CLOSING tcp 0 0 ramesh-laptop.loc:43758 server-101-101-43-2:www ESTABLISHED tcp 1 1 ramesh-laptop.loc:42367 101.101.34.101:www CLOSING
顯示系統(tǒng)不支持的地址族 (Address Families)
```
netstat --verbose
```
在輸出的末尾,會(huì)有如下的信息
```
netstat: no support for `AF IPX' on this system.
netstat: no support for `AF AX25' on this system.
netstat: no support for `AF X25' on this system.
netstat: no support for `AF NETROM' on this system.
```
- 顯示核心路由信息 netstat -r
```
[root@hadoop201 itshare]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway 0.0.0.0 UG 0 0 0 ens33
192.168.19.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
```
**注意:** 使用 netstat -rn 顯示數(shù)字格式最仑,不查詢主機(jī)名稱顽聂。
- 找出程序運(yùn)行的端口
并不是所有的進(jìn)程都能找到肥惭,沒有權(quán)限的會(huì)不顯示,使用 root 權(quán)限查看所有的信息紊搪。
```
# netstat -ap | grep ssh
tcp 1 0 dev-db:ssh 101.174.100.22:39213 CLOSE_WAIT -
tcp 1 0 dev-db:ssh 101.174.100.22:57643 CLOSE_WAIT -
```
**找出運(yùn)行在指定端口的進(jìn)程**
```
# netstat -an | grep ':80'
```
10. **顯示網(wǎng)絡(luò)接口列表**
```
# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 0 0 0 0 0 0 0 0 BMU
eth2 1500 0 26196 0 0 0 26883 6 0 0 BMRU
lo 16436 0 4 0 0 0 4 0 0 0 LRU
```
顯示詳細(xì)信息蜜葱,像是 ifconfig 使用 netstat -ie:
```
# netstat -ie
Kernel Interface table
eth0 Link encap:Ethernet HWaddr 00:10:40:11:11:11
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Memory:f6ae0000-f6b00000
```
11. **IP和TCP分析**
**查看連接某服務(wù)端口最多的的IP地址**
```
wss8848@ubuntu:~$ netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
18 221.136.168.36
3 154.74.45.242
2 78.173.31.236
2 62.183.207.98
2 192.168.1.14
2 182.48.111.215
2 124.193.219.34
2 119.145.41.2
2 114.255.41.30
1 75.102.11.99
```
**TCP各種狀態(tài)列表**
```
wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'
established)
Foreign
LISTEN
TIME_WAIT
ESTABLISHED
TIME_WAIT
SYN_SENT
```
- 先把狀態(tài)全都取出來,然后使用uniq -c統(tǒng)計(jì),之后再進(jìn)行排序耀石。
```
[root@hadoop201 itshare]# netstat -nat |awk '{print $6}'|sort|uniq -c
1 established)
7 ESTABLISHED
1 Foreign
18 LISTEN
1 TIME_WAIT
[root@hadoop201 itshare]# netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
18 LISTEN
7 ESTABLISHED
1 TIME_WAIT
1 Foreign
```
- 分析access.log獲得訪問前10位的ip地址
```
awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10
```
1.6 tar
tar 用于壓縮和解壓縮
-
tar 常見選項(xiàng)
-
必要選項(xiàng)有如下:
-A 新增壓縮文件到已存在的壓縮 -B 設(shè)置區(qū)塊大小 -c 建立新的壓縮文件 -d 記錄文件的差別 -r 添加文件到已經(jīng)壓縮的文件 -u 添加改變了和現(xiàn)有的文件到已經(jīng)存在的壓縮文件 -x 從壓縮的文件中提取文件 -t 顯示壓縮文件的內(nèi)容 -z 支持gzip解壓文件 -j 支持bzip2解壓文件 -Z 支持compress解壓文件 -v 顯示操作過程 -l 文件系統(tǒng)邊界設(shè)置 -k 保留原有文件不覆蓋 -m 保留文件不被覆蓋 -W 確認(rèn)壓縮文件的正確性
-
可選選項(xiàng)如下:
-b 設(shè)置區(qū)塊數(shù)目 -C 切換到指定目錄 -f 指定壓縮文件 --help 顯示幫助信息 --version 顯示版本信息
-
-
常用命令展示
tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包牵囤,不是壓縮!) .gz 解壓1:gunzip FileName.gz 解壓2:gzip -d FileName.gz 壓縮:gzip FileName .tar.gz 和 .tgz 解壓:tar zxvf FileName.tar.gz 壓縮:tar zcvf FileName.tar.gz DirName .bz2 解壓1:bzip2 -d FileName.bz2 解壓2:bunzip2 FileName.bz2 壓縮: bzip2 -z FileName .tar.bz2 解壓:tar jxvf FileName.tar.bz2 壓縮:tar jcvf FileName.tar.bz2 DirName .bz 解壓1:bzip2 -d FileName.bz 解壓2:bunzip2 FileName.bz 壓縮:未知 .tar.bz 解壓:tar jxvf FileName.tar.bz 壓縮:未知 .Z 解壓:uncompress FileName.Z 壓縮:compress FileName .tar.Z 解壓:tar Zxvf FileName.tar.Z 壓縮:tar Zcvf FileName.tar.Z DirName .zip 解壓:unzip FileName.zip 壓縮:zip FileName.zip DirName .rar 解壓:rar x FileName.rar 壓縮:rar a FileName.rar DirName
1.7 df -h
Linux df(英文全拼:disk free) 命令用于顯示目前在 Linux 系統(tǒng)上的文件系統(tǒng)磁盤使用情況統(tǒng)計(jì)滞伟。
-
常用選項(xiàng):
-a, --all 包含所有的具有 0 Blocks 的文件系統(tǒng) --block-size={SIZE} 使用 {SIZE} 大小的 Blocks -h, --human-readable 使用人類可讀的格式(預(yù)設(shè)值是不加這個(gè)選項(xiàng)的...) -H, --si 很像 -h, 但是用 1000 為單位而不是用 1024 -i, --inodes 列出 inode 資訊揭鳞,不列出已使用 block -k, --kilobytes 就像是 --block-size=1024 -l, --local 限制列出的文件結(jié)構(gòu) -m, --megabytes 就像 --block-size=104857 --no-sync 取得資訊前不 sync (預(yù)設(shè)值) -P, --portability 使用 POSIX 輸出格式 --sync 在取得資訊前 sync -t, --type=TYPE 限制列出文件系統(tǒng)的 TYPE -T, --print-type 顯示文件系統(tǒng)的形式 -x, --exclude-type=TYPE 限制列出文件系統(tǒng)不要顯示 TYPE -v (忽略) --help 顯示這個(gè)幫手并且離開 --version 輸出版本資訊并且離開
-
舉例
-
顯示文件系統(tǒng)的磁盤使用情況統(tǒng)計(jì)
[root@hadoop201 itshare]# df 文件系統(tǒng) 1K-塊 已用 可用 已用% 掛載點(diǎn) devtmpfs 1918620 0 1918620 0% /dev tmpfs 1930652 0 1930652 0% /dev/shm tmpfs 1930652 11892 1918760 1% /run tmpfs 1930652 0 1930652 0% /sys/fs/cgroup /dev/mapper/centos-root 47285700 10178564 37107136 22% / /dev/sda1 1038336 153928 884408 15% /boot tmpfs 386132 0 386132 0% /run/user/1000
第一列指定文件系統(tǒng)的名稱,
第二列指定一個(gè)特定的文件系統(tǒng)1K-塊1K是1024字節(jié)為單位的總內(nèi)存梆奈。
已用和可用列分別表示正在使用中野崇,空閑的磁盤的總量。
已用%列指定使用的內(nèi)存的百分比亩钟,
而最后一欄"掛載點(diǎn)"指定的文件系統(tǒng)的掛載點(diǎn)乓梨。
-
-
-h選項(xiàng),通過它可以產(chǎn)生可讀的格式df命令的輸出:
[root@hadoop201 itshare]# df -h 文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn) devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 12M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/mapper/centos-root 46G 9.8G 36G 22% / /dev/sda1 1014M 151M 864M 15% /boot tmpfs 378M 0 378M 0% /run/user/1000
我們可以看到輸出顯示的數(shù)字形式的'G'(千兆字節(jié))清酥,"M"(兆字節(jié))和"K"(千字節(jié))扶镀。
這使輸出容易閱讀和理解,從而使顯示可讀的焰轻。請注意臭觉,第二列的名稱也發(fā)生了變化,為了使顯示可讀的"大小"辱志。
1.8 find
find命令用來在指定目錄下查找文件蝠筑。任何位于參數(shù)之前的字符串都將被視為欲查找的目錄名。如果使用該命令時(shí)揩懒,不設(shè)置任何參數(shù)菱肖,則 find 命令將在當(dāng)前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進(jìn)行顯示旭从。
-
語法
find path -option [ -print ] [ -exec -ok command ] {} \;
-
參數(shù)說明
find 根據(jù)下列規(guī)則判斷 path 和 expression稳强,在命令列上第一個(gè) - ( ) , ! 之前的部份為 path,之后的是 expression和悦。如果 path 是空字串則使用目前路徑退疫,如果 expression 是空字串則使用 -print 為預(yù)設(shè) expression。
expression 中可使用的選項(xiàng)有二三十個(gè)之多鸽素,在此只介紹最常用的部份褒繁。
-mount, -xdev : 只檢查和指定目錄在同一個(gè)文件系統(tǒng)下的文件,避免列出其它文件系統(tǒng)中的文件
-amin n : 在過去 n 分鐘內(nèi)被讀取過
-anewer file : 比文件 file 更晚被讀取過的文件
-atime n : 在過去n天內(nèi)被讀取過的文件
-cmin n : 在過去 n 分鐘內(nèi)被修改過
-cnewer file :比文件 file 更新的文件
-ctime n : 在過去n天內(nèi)被修改過的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名稱是 name
-ipath p, -path p : 路徑名稱符合 p 的文件馍忽,ipath 會(huì)忽略大小寫
-name name, -iname name : 文件名稱符合 name 的文件棒坏。iname 會(huì)忽略大小寫
-size n : 文件大小 是 n 單位燕差,b 代表 512 位元組的區(qū)塊,c 表示字元數(shù)坝冕,k 表示 kilo bytes徒探,w 是二個(gè)位元組。
-
-type c : 文件類型是 c 的文件喂窟。
d: 目錄
c: 字型裝置文件
b: 區(qū)塊裝置文件
p: 具名貯列
f: 一般文件
l: 符號連結(jié)
s: socket
-pid n : process id 是 n 的文件
-
你可以使用 ( ) 將運(yùn)算式分隔测暗,并使用下列運(yùn)算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
-
實(shí)例
-
列出當(dāng)前目錄下所有csv文件
[root@hadoop201 itshare]# find . -name "*.csv" ./partition.csv
-
-
將當(dāng)前目錄及其下子目錄中所有文件列出
find . -type f
-
將當(dāng)前目錄及其子目錄下所有最近 1 天內(nèi)更新過的文件列出
[root@hadoop201 module]# find . -ctime -1 ./hadoop-3.1.3/logs/userlogs ./hadoop-3.1.3/logs/hadoop-itshare-historyserver-hadoop201.out ./hadoop-3.1.3/logs/hadoop-itshare-namenode-hadoop201.out ./hadoop-3.1.3/logs/hadoop-itshare-datanode-hadoop201.out ./hadoop-3.1.3/logs/hadoop-itshare-nodemanager-hadoop201.out
-
查找 /var/log 目錄中更改時(shí)間在 7 日以前的普通文件磨澡,并在刪除之前詢問它們:
[root@hadoop201 module]# find /var/log -type f -mtime +7 -ok rm {} \; < rm ... /var/log/tallylog > ?
-
查找當(dāng)前目錄中文件屬主具有讀碗啄、寫權(quán)限,并且文件所屬組的用戶和其他用戶具有讀權(quán)限的文件:
find . -type f -perm 644 -exec ls -l {} \;
-
查找系統(tǒng)中所有文件長度為 0 的普通文件稳摄,并列出它們的完整路徑:
find / -type f -size 0 -exec ls -l {} \;
1.9 crontab
crontab是用來定期執(zhí)行程序的命令稚字。
-
語法
crontab [ -u user ] file 或 crontab [ -u user ] { -l | -r | -e }
crontab 是用來讓使用者在固定時(shí)間或固定間隔執(zhí)行程序之用,換句話說厦酬,也就是類似使用者的時(shí)程表胆描。
-u user 是指設(shè)定指定 user 的時(shí)程表,這個(gè)前提是你必須要有其權(quán)限(比如說是 root)才能夠指定他人的時(shí)程表弃锐。如果不使用 -u user 的話袄友,就是表示設(shè)定自己的時(shí)程表殿托。
-
選項(xiàng)
- -e : 執(zhí)行文字編輯器來設(shè)定時(shí)程表霹菊,內(nèi)定的文字編輯器是 VI,如果你想用別的文字編輯器支竹,則請先設(shè)定 VISUAL 環(huán)境變數(shù)來指定使用那個(gè)文字編輯器(比如說 setenv VISUAL joe)
- -r : 刪除目前的時(shí)程表
- -l : 列出目前的時(shí)程表
-
時(shí)間格式
f1 f2 f3 f4 f5 program
- 其中 f1 是表示分鐘旋廷,f2 表示小時(shí),f3 表示一個(gè)月份中的第幾日礼搁,f4 表示月份饶碘,f5 表示一個(gè)星期中的第幾天。program 表示要執(zhí)行的程序。
- 當(dāng) f1 為 * 時(shí)表示每分鐘都要執(zhí)行 program,f2 為 * 時(shí)表示每小時(shí)都要執(zhí)行程序钳恕,其馀類推
- 當(dāng) f1 為 a-b 時(shí)表示從第 a 分鐘到第 b 分鐘這段時(shí)間內(nèi)要執(zhí)行撼港,f2 為 a-b 時(shí)表示從第 a 到第 b 小時(shí)都要執(zhí)行,其馀類推
- 當(dāng) f1 為 */n 時(shí)表示每 n 分鐘個(gè)時(shí)間間隔執(zhí)行一次局齿,f2 為 */n 表示每 n 小時(shí)個(gè)時(shí)間間隔執(zhí)行一次,其馀類推
- 當(dāng) f1 為 a, b, c,... 時(shí)表示第 a, b, c,... 分鐘要執(zhí)行,f2 為 a, b, c,... 時(shí)表示第 a, b, c...個(gè)小時(shí)要執(zhí)行负拟,其馀類推
* * * * * - - - - - | | | | | | | | | +----- 星期中星期幾 (0 - 7) (星期天 為0) | | | +---------- 月份 (1 - 12) | | +--------------- 一個(gè)月中的第幾天 (1 - 31) | +-------------------- 小時(shí) (0 - 23) +------------------------- 分鐘 (0 - 59)
使用者也可以將所有的設(shè)定先存放在文件中,用 crontab file 的方式來設(shè)定執(zhí)行時(shí)間
-
-
舉例
-
每一分鐘執(zhí)行一次 /bin/ls
* * * * * /bin/ls
-
-
在 12 月內(nèi), 每天的早上 6 點(diǎn)到 12 點(diǎn)歹河,每隔 3 個(gè)小時(shí) 0 分鐘執(zhí)行一次 /usr/bin/backup:
0 6-12/3 * 12 * /usr/bin/backup