Linux系統(tǒng)命令相關(guān)
系統(tǒng)相關(guān)
date
- date 查看系統(tǒng)時間
$date
2017年 09月 18日 星期一 18:01:06 CST
- date -R查看系統(tǒng)時間腰吟,并且在時間后面加上時區(qū)的顯示
$date -R
Mon, 18 Sep 2017 17:57:30 +0800
磁盤操作相關(guān)
du
命令格式:
du [選項] [文件]
常用選項:
-h
-以K棠枉,M徒爹,G為單位川无,提高信息的可讀性
-L
-把軟鏈接的源文件大小也列出來钞钙。
常用命令:
du -h .
//顯示當(dāng)前目錄下所有文件及目錄的大小敞掘,并以G,M等人類可理解的方式顯示
網(wǎng)絡(luò)相關(guān)
nslookup
nslookup是查詢dns域名和ip解析的命令
nslookup github.com
//查詢github.com域名對應(yīng)的ip
nslookup 202.xx.xx.xx
//查詢 202.xx.xx.xxIP對應(yīng)域名
ifconfig
ping
netstat
ls
ls -l
: 以詳細(xì)列表的方式展示
ls -R
: -R 分目錄展示
ls -lt
: -t表示用文件和目錄的更改時間排序.
ls -ltr
: 表示用文件和目錄的更改時間倒序排序.
ls -lS
: 表示用文件和目錄的大小排序粘咖,注意是大寫的S
ls -lSr
: 表示用文件和目錄的大小倒序排序
ls -lh
: 顯示文件大小時,以M勉躺,G等更人性化的單位顯示癌瘾。-h這個參數(shù)很有用
ls -lk
:顯示文件大小時,以K為單位顯示饵溅。
-r表示是倒序排序
ps
- 查看系統(tǒng)中java線程
ps -ef|grep java
top
top
top查看對應(yīng)pid的信息
- 第一行:
top - 01:00:01 up 1064 days, 4:29, 2 users, load average: 0.25, 0.39, 0.47
妨退。-
01:00:01
為當(dāng)前系統(tǒng)時間 -
1064 days
表示當(dāng)前已經(jīng)運行1064天。 -
2 users
表示當(dāng)前有兩個用戶在線蜕企。 -
load average: 0.25, 0.39, 0.47
表示當(dāng)過去的1分碧注、5分鐘、15分鐘的系統(tǒng)負(fù)載糖赔。
-
其中l(wèi)oad的理解,load average表示系統(tǒng)處理的任務(wù)隊列數(shù)萍丐。
對于一個cpu核心的,load值大于0表示超負(fù)荷運行放典。
如果對于4核心,則
- 第二行:
Tasks: 114 total, 1 running, 113 sleeping, 0 stopped, 0 zombie
顯示當(dāng)前系統(tǒng)的進程運行情況逝变,目前總共有114個進程,其中1個正在運行奋构,113個處于sleep狀態(tài)壳影。 - 第三行:
Cpu(s): 1.8%us, 1.8%sy, 0.2%ni, 68.7%id, 27.4%wa, 0.0%hi, 0.0%si, 0.0%st
顯示的是cpu的信息。- id 為空閑時間時間占比
- us 是指 用戶空間占用 cpu 的時間百分比
- sy 是指 系統(tǒng)空間占用 cpu 時間的百分比
- st 這個項只有主機是虛擬機的時候弥臼,才會存在,全稱為 steel 径缅,意味著虛擬機從宿主機獲取cpu時間片的耗時百分比,如果這個值過多掺栅,則需要查看宿主機的是否過多的分配虛擬機,引起資源不足.
在top命令界面里纳猪,按數(shù)字“1”氧卧,將顯示每個cpu的信息,也可以看到現(xiàn)在系統(tǒng)有幾顆cpu.
- 第四和第五行為內(nèi)存信息
Mem: 3921732k total, 3483860k used, 437872k free, 102556k buffers
Swap: 0k total, 0k used, 0k free, 1808492k cached
第一行 Mem 顯示的是機器的真實內(nèi)存數(shù)
第二行 Swap 顯示的是交換內(nèi)存數(shù)
Mem中氏堤,total 顯示的是內(nèi)存的總量, 這里的單位是大K , 也就約是 4g 左右內(nèi)存總數(shù)沙绝,used 表示已使用內(nèi)存數(shù),free 是空閑內(nèi)存數(shù),buffer 是 buffer 內(nèi)存數(shù)闪檬,chache 為 cache 的內(nèi)存數(shù)星著。
Swap 中, total 粗悯,used 强饮,free 三個參數(shù)的表示內(nèi)存交換空間中的總量,已使用內(nèi)存與空閑內(nèi)存为黎。
接下來一個個來整理下, total 內(nèi)存總數(shù)行您, used+free = total 铭乾,前三個很好理解,無論是真實內(nèi)存還是交換空間內(nèi)存都一樣娃循,我們重點來看下 buffers 和 cache 這塊的內(nèi)存占用如何說明炕檩。
used 的內(nèi)存占了將近 3.3g ,并不意味著機器內(nèi)存全部被耗完捌斧,windows 下用多少申請多少內(nèi)存笛质,但 linux 下則不然,內(nèi)存總是不嫌多的捞蚂,linux 會將讀取過的數(shù)據(jù)都緩存起來妇押,以便下次讀取時減少讀取的時間。即使你的程序運行結(jié)束后姓迅,內(nèi)存也不會自動釋放敲霍。這就會導(dǎo)致你在 linux 系統(tǒng)中程序頻繁讀寫文件后,你會發(fā)現(xiàn)可用物理內(nèi)存變少丁存。
而 cache 與 buffer 就屬于linux系統(tǒng)的緩存內(nèi)存肩杈,這部分的緩存內(nèi)存在其他程序真實需要使用內(nèi)存的時候,則會釋放解寝。所以程序真實使用的內(nèi)存數(shù)應(yīng)該是 used - buffer - cache 扩然,就上圖而言,應(yīng)該(粗暴的以g計算)是 3.48g - 0.1g - 1.8g 大約是 2.58g 左右聋伦。
- 最后一部分,列出系統(tǒng)中的所有進程
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9813 root 20 0 989m 17m 2140 S 2.3 0.5 7927:13 /opt/xxxx
1640 admin 20 0 3665m 1.0g 26m S 1.3 27.6 2:41.70 /opt/xx/java/bin/java
15159 admin 20 0 21204 1328 1000 R 0.7 0.0 0:00.03 top
15284 root 31 11 178m 20m 752 S 0.7 0.5 0:00.04 /usr/bin/xx
PID 是進程的 進程號
USER 是啟動進程的用戶
pr 和 ni 都是與進程優(yōu)先級相關(guān)的
ni 我們在之前已經(jīng)講過了夫偶,全稱是 nice ,pr 的全稱是 Priority
一個進程的整體運行優(yōu)先級是 pr 值與 ni 值 相加
優(yōu)先級 = ni + pr 觉增,pr 默認(rèn)值是20(默認(rèn)權(quán)重因子) 索守,ni 的范圍是-20至19,默認(rèn)是 0
nice 的值可以按照命令或進程進行修改抑片,使用 nice卵佛,renice 修改
優(yōu)先級數(shù)值越小,優(yōu)先級越高
VIRT 表示 Virtual Memory 虛擬內(nèi)存
RES 表示 Resident Memory 駐留內(nèi)存
SHR 表示 shared memory 共享內(nèi)存
free -m
free -m
查看內(nèi)存信息
$ free -m
total used free shared buffers cached
Mem: 3829 3633 195 0 78 2085
-/+ buffers/cache: 1470 2359
Swap: 0 0 0
第一行 Mem 顯示的是機器的真實內(nèi)存數(shù)。
Mem中截汪,total 顯示的是內(nèi)存的總量, 這里的單位是大M , 也就約是 4g 左右內(nèi)存總數(shù)疾牲,used 表示已使用內(nèi)存數(shù),free 是空閑內(nèi)存數(shù)衙解,buffer 是 buffer 內(nèi)存數(shù)阳柔,chache 為 cache 的內(nèi)存數(shù)。
接下來一個個來整理下蚓峦, total 內(nèi)存總數(shù)舌剂, used+free = total ,前三個很好理解暑椰,無論是真實內(nèi)存還是交換空間內(nèi)存都一樣霍转,我們重點來看下 buffers 和 cache 這塊的內(nèi)存占用如何說明。
used 的內(nèi)存占了將近 3.3g 一汽,并不意味著機器內(nèi)存全部被耗完避消,windows 下用多少申請多少內(nèi)存,但 linux 下則不然召夹,內(nèi)存總是不嫌多的岩喷,linux 會將讀取過的數(shù)據(jù)都緩存起來,以便下次讀取時減少讀取的時間监憎。即使你的程序運行結(jié)束后纱意,內(nèi)存也不會自動釋放。這就會導(dǎo)致你在 linux 系統(tǒng)中程序頻繁讀寫文件后鲸阔,你會發(fā)現(xiàn)可用物理內(nèi)存變少妇穴。
而 cache 與 buffer 就屬于linux系統(tǒng)的緩存內(nèi)存,這部分的緩存內(nèi)存在其他程序真實需要使用內(nèi)存的時候隶债,則會釋放腾它。所以程序真實使用的內(nèi)存數(shù)應(yīng)該是 used - buffer - cache ,就上圖而言死讹,應(yīng)該(粗暴的以g計算)是 3.633g - 0.078g - 2.8g
上圖中的第二行,第一列表示 used - cache - buffer 瞒滴,第二列表示 free + cache + buffer
history
history
查看用戶的歷史執(zhí)行命令。
也可以通過less ~/.bash_history
命令查看赞警。
who/w
who
或w
可以查看當(dāng)前系統(tǒng)在線的用戶妓忍。
$ who
admin pts/1 2017-10-16 19:27 (30.20.80.139)
admin pts/2 2017-10-16 19:32 (30.55.80.67)
$ w
01:07:18 up 1064 days, 4:36, 2 users, load average: 0.33, 0.44, 0.47
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
admin pts/1 30.20.80.139 19:27 1:42m 0.04s 0.04s -bash
admin pts/2 30.55.80.67 19:32 0.00s 0.12s 0.00s w
less
less 工具也是對文件或其它輸出進行分頁顯示的工具,應(yīng)該說是linux正統(tǒng)查看文件內(nèi)容的工具愧旦,功能極其強大.
less命令使用格式:
less [參數(shù)] 文件
示例:
less -i -N systemx.log
常用參數(shù):
-i 忽略搜索時的大小寫
-N 顯示每行的行號
常用命令
/ 字符串:向下搜索"字符串"的功能
? 字符串:向上搜索"字符串"的功能
n:重復(fù)前一個搜索(與 / 或 ? 有關(guān))
N:反向重復(fù)前一個搜索(與 / 或 ? 有關(guān))
G:向下移動到最后一行
g:向上移動到第一行
b:往上(往后)翻一頁
space(空格):往下(往前)翻一頁
q:退出
tail
tail -f *.log
//動態(tài)顯示當(dāng)前目錄下所有以.log結(jié)尾的文件的內(nèi)容
grep
grep全稱是Global Regular Expression Print世剖。grep是一種強大的文本搜索工具,它能使用正則表達(dá)式搜索文本笤虫,并把匹配的行打印出來.
使用格式:grep [options] ‘pattern’ filename
例:
grep -in 'searchtext' filex.log --col
or grep -in --color=auto 'searchtext' filex.log
//不區(qū)分大小寫查詢旁瘫,輸出行號祖凫,并且把結(jié)果高亮。
grep -c -i 'searchtext' *
// 統(tǒng)計seachtext字符串在當(dāng)前目錄文件中分別出現(xiàn)多少行
grep -in --col searchtext *
//不區(qū)分大小查詢當(dāng)前目錄下所有的文件中出現(xiàn)searchtext出現(xiàn)的文件名酬凳、行號及所在行惠况,并且高亮匹配的字符串。
grep -li -r searchtext *
//不區(qū)分大小寫的查詢當(dāng)前目錄(子目錄)的文件中包含searchtext的文件名
grep -B 5 --col searchtext *
//查詢匹配的后5行(最新的)宁仔。
grep -A 5 --col searchtext *
//查詢匹配的前5行(最老的)稠屠。
- [options]主要參數(shù):
-c:只輸出匹配行的計數(shù)。
-i:不區(qū)分大 小寫(只適用于單字符)翎苫。
-h:查詢多文件時不顯示文件名权埠。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-n:顯示匹配行及 行號煎谍。
-s:不顯示不存在或無匹配文本的錯誤信息攘蔽。
-v:顯示不包含匹配文本的所有行。
sudo
find
find是文件查詢命令粱快。
最常用的格式:
find path -option
常用option:
-mtime n
:根據(jù)文件內(nèi)容最后修改時間查詢,n表示以天的維度區(qū)間查詢叔扼;
-mmin n
:根據(jù)文件內(nèi)容最后修改時間查詢事哭,n表示以分鐘的維度區(qū)間查詢;
-name pattern
:按文件名匹配查詢瓜富;
find . -size [+|-]n[G|M..]
:按文件大小查詢鳍咱,n的單位可選,常用可選值為G
orM
or k
find . -type [d|f]
:按文件類型查詢与柑,參數(shù)常用可選值為d
orf
,d表示目標(biāo)谤辜,f表示文件。
示例:
find . -name 'my*'
//查詢當(dāng)前目錄下name是以my開頭的所有文件价捧。
find . -size +512k
//查找當(dāng)前目錄下文件大小大于512k的文件
find . -size -512k
//查找當(dāng)前目錄下文件大小小于512k的文件
find . -mmin -5
// 查找在當(dāng)前目錄下距離當(dāng)前時間丑念,5分鐘內(nèi)修改過的文件
find . -mtime -1
// 查詢距離當(dāng)前時間在24小時內(nèi)里修改過的文件
find . -mtime +1
// 查詢距離當(dāng)前時間在24小時之前修改過的文件
find . -type f
// 查詢當(dāng)前目錄下的文件,不包括目錄结蟋。
注1:
一般find和-exec一起使用
find . -mtime -1 -exec ls -l {} \;
find . -mtime -1 -exec grep -i xxx {} \;
注2:
1.mtime,ctime,atime
區(qū)別:1)atime
的意思是access file time; 2)ctime
表示是change file time,ctime是指修改文件狀態(tài)的時間脯倚,比如權(quán)限、分組等等嵌屎,并不是修改文件內(nèi)容;3)mtime
表示修改文件內(nèi)容的時間推正;
2.-mtime n、-mtime +n宝惰、-mtime -n
的異別:1)-mtime:是針對文件內(nèi)容修改時間進行查詢植榕,n,+n,-n
三者查詢時間區(qū)間完全不同; 2)-mtime n
查詢區(qū)間為,距離現(xiàn)在時間差在(n+1)*24hour ~ n*24hour
這個時間區(qū)間; 3)-mtime +n
表示的查詢區(qū)間是-∞ ~ n*24hour
,即距離當(dāng)前時間n24hour這個時間點之前的時間區(qū)間; 4)-mtime -n
表示的查詢區(qū)間是n*24hour ~ ∞
,即距離當(dāng)前時間n24hour這個時間點之后的時間區(qū)間
3.對于-mmin n,-mmin +n,-mmin -n
的使用與-mtime n尼夺、-mtime +n尊残、-mtime -n
一樣炒瘸,區(qū)別是mmin搜索的時間維度是分鐘。
stat
stat filename
查看文件的相關(guān)信息夜郁。包括修改文件狀態(tài)時間什燕,最后一次進入時間,修改內(nèi)容時間
exec
exec命令用于調(diào)用并執(zhí)行指令的命令竞端。exec命令通常用在shell腳本程序中屎即,可以調(diào)用其他的命令。
自己通常的用法是和find grep命令一起使用事富。
比如有這么一個場景技俐,在/home/logs目錄有很多日志文件,現(xiàn)在要查詢一個錯誤日志统台,日志發(fā)生在昨天雕擂,但是具體不清楚在哪個文件里。
如果此時使用grep 'errorcodex' *
在當(dāng)前目錄下查詢所有文件的話將會很慢贱勃。
此時可使用如下命令
find . -mtime -1 -exec grep 'errorcodex' {}\;
//此命令的作用是先用find查詢出最近1天修改的文件井赌,然后用exec調(diào)用grep命令在find查詢出來的文件列表里查詢(而不是查詢?nèi)康奈募?br>
注意:
1.這里的-exec后面的{} \;
"空格" + “一對括號”+ \
+ '空格'+ ;
2.花括號前面一定要有一個空格
3.最后一定要以分號結(jié)尾