Linux中命令格式為:
成都創(chuàng)新互聯(lián)專(zhuān)注于洛陽(yáng)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供洛陽(yáng)營(yíng)銷(xiāo)型網(wǎng)站建設(shè),洛陽(yáng)網(wǎng)站制作、洛陽(yáng)網(wǎng)頁(yè)設(shè)計(jì)、洛陽(yáng)網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造洛陽(yáng)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供洛陽(yáng)網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
command [options] [arguments] //中括號(hào)代表是可選的,即有些命令不需要選項(xiàng)也不需要參數(shù),但有的命令在運(yùn)行時(shí)需要多個(gè)選項(xiàng)或參數(shù)。
選項(xiàng)options:
選項(xiàng)是調(diào)整命令執(zhí)行行為的開(kāi)關(guān),即,選項(xiàng)不同決定了命令的顯示結(jié)果不同。
選項(xiàng)分為長(zhǎng)選項(xiàng)和短選項(xiàng)。
短選項(xiàng):比如-h,-l,-s等。(- 后面接單個(gè)字母)
l短選項(xiàng)都是使用‘-’引導(dǎo),當(dāng)有多個(gè)短選項(xiàng)時(shí),各選項(xiàng)之間使用空格隔開(kāi)。
l有些命令的短選項(xiàng)可以組合,比如-l –h 可以組合為–lh
l有些命令的短選項(xiàng)可以不帶-,這通常叫作BSD風(fēng)格的選項(xiàng),比如ps aux
l有些短選項(xiàng)需要帶選項(xiàng)本身的參數(shù),比如-L 512M
長(zhǎng)選項(xiàng):比如--help,--list等。(-- 后面接單詞)
l長(zhǎng)選面都是完整的單詞
l長(zhǎng)選項(xiàng)通常不能組合
l如果需要參數(shù),長(zhǎng)選項(xiàng)的參數(shù)通常需要‘=’,比如--size=1G
參數(shù)arguments:
參數(shù)是指命令的作用對(duì)象。
如ls命令,不加參數(shù)的時(shí)候顯示是當(dāng)前目錄,也可以加參數(shù),如ls /dev, 則輸出結(jié)果是/dev目錄。
以上簡(jiǎn)要說(shuō)明了選項(xiàng)及參數(shù)的區(qū)別,但具體Linux中哪條命令有哪些選項(xiàng)及參數(shù),需要我們靠經(jīng)驗(yàn)積累或者查看Linux的幫助了?!禠inux就該這么學(xué)》一起學(xué)習(xí)
總結(jié):
選項(xiàng)是限定結(jié)果的顯示結(jié)果
短選項(xiàng)(- 一個(gè)橫杠):只能修飾一個(gè)字符的選項(xiàng),比如: ls -a,當(dāng)然多個(gè)短選項(xiàng)可以合并,比如tar -cvf
長(zhǎng)選項(xiàng)(-- 兩個(gè)橫杠):可以修飾單個(gè)字符,也可以修飾一個(gè)單詞,比如:(1) chkconfig --list (2)chkconfig --add xxx (3)service --status-all
參數(shù)是傳遞到腳本中的真實(shí)的參數(shù)
無(wú)論是工作中使用還是應(yīng)付各種面試,linux sort 都是必須要掌握的 linux 基本命令之一。尤其是 linux sort -k 命令,經(jīng)常會(huì)被搞暈,索性好好研究一下 sort 命令
語(yǔ)法:
選項(xiàng):
參數(shù)就不一一介紹了,直接上例子,首先先看下原始的排序數(shù)據(jù)
cat sort.log
1、打印從哪列開(kāi)始是亂序
sort -c sort.log; echo $?
sort -C sort.log; echo $?
其中,返回結(jié)果 1,表示文件不是已經(jīng)排序好的文件
2、默認(rèn)排序( 整行進(jìn)行ASCII字符升序)
sort sort.log
3、高能來(lái)了,讓人迷糊的 k 語(yǔ)法,首先看下 k 的語(yǔ)法格式
這個(gè)語(yǔ)法格式可以被其中的逗號(hào)(”,”)分為兩大部分,Start部分和End部分
Start和End部分都由三部分組成,其中的Modifier部分就是類(lèi)似n和r的選項(xiàng)部分,可省略
FStart、Fend,表示使用的域,而CStart則表示在FStart域中從第幾個(gè)字符開(kāi)始算"排序首字符",同理,CEnd表示結(jié)尾的第幾個(gè)字符是排序末尾字符,.CStart、.CEnd是可以省略的,分別表示從本域的開(kāi)頭部分開(kāi)始、到本域的域尾結(jié)束,CEnd設(shè)定為0,也是表示結(jié)尾到域尾。口說(shuō)無(wú)憑,上幾個(gè)例子吧
3.1 對(duì)第三列進(jìn)行排序,如果不加n,按照 ASCII字符排序
sort -t $'\t' -k 3 sort.log
3.2 加n后,按照數(shù)值排序
sort -t $'\t' -k 3n sort.log
3.3 不指定 FEnd 時(shí),多個(gè) -k 從前往后排序可以,從后往前不行
從后往前,多個(gè) -k,數(shù)據(jù)符合預(yù)期
sort -t $'\t' -k 3n -k 1 sort.log
從后往前,多個(gè) -k ,第三列相同時(shí),按照第一列降序排列,數(shù)據(jù)符合預(yù)期
sort -t $'\t' -k 3n -k 1r sort.log
更換成從前往后
sort -t $'\t' -k 1 -k 3n sort.log
sort -t $'\t' -k 1 -k 3nr sort.log
通過(guò) sort -t $'\t' -k 1 -k 3n sort.log 和 sort -t $'\t' -k 1 -k 3nr sort.log 返回的結(jié)果發(fā)現(xiàn),在第一列相等時(shí),無(wú)論其三列是正序排列,還是逆序排列,結(jié)果都一樣,說(shuō)明后邊的 -k 未生效
當(dāng)指定 FEend 后
sort -t $'\t' -k 1,1 -k 3nr sort.log
3.4 作用域
緊跟在字段后的選項(xiàng)(如"-k3n"的"n"和"-k2nr"的"n","r")稱(chēng)為私有選項(xiàng),使用短橫線寫(xiě)在字段外的選項(xiàng)(如"-n"、"-r")為全局選項(xiàng)。當(dāng)沒(méi)有為字段分配私有選項(xiàng)時(shí),該排序字段將繼承全局選項(xiàng),所有選項(xiàng)包括但不限于"bfnrhM"
除了"b"選項(xiàng)外,其余選項(xiàng)無(wú)論是指定在FStart還是FEnd中都是等價(jià)的,對(duì)于"b"選項(xiàng),指定在FStart則作用于FStart,指定在FEnd則作用于FEnd
sort -t $'\t' -k1r,2 sort.log ,可以看出一、二列都是倒敘排列
3.5 注意
指定n選項(xiàng)按數(shù)值排序時(shí), 由于"n"選項(xiàng)只能識(shí)別數(shù)字和負(fù)號(hào)"-",當(dāng)排序時(shí)遇到無(wú)法識(shí)別字符時(shí),將導(dǎo)致該key的排序立即結(jié)束,n選項(xiàng)絕對(duì)不會(huì)跨域進(jìn)行比較
默認(rèn)情況下,sort會(huì)進(jìn)行一次 "最后的排序" ,按照默認(rèn)規(guī)則對(duì)整行進(jìn)行一次排序,這次排序稱(chēng)為"最后的排序"
sort -t $'\t' -k3n sort.log ,在第三列相等時(shí),整行會(huì)按照 ASCII 進(jìn)行最后的升序排列
sort -t $'\t' -k3,4n -s sort.log ,加了 -s 后,不會(huì)進(jìn)行最后的排序(1000相同時(shí),e在b的前邊了),而是保留原排序
3.6 按照某個(gè)域中的第n個(gè)字符進(jìn)行排序
sort -t $'\t' -k2.3,2.3 sort.log ,按第二列第三個(gè)字符進(jìn)行排序
4、 -h 使用易讀性數(shù)字(例如:2K、1G)
sort -t $'\t' -k5h sort.log
sort -t $'\t' -k2,2 sort.log|uniq
sort -t $'\t' -k2,2 -u sort.log 會(huì)對(duì)第二列進(jìn)行去重,而 sort -t $'\t' -k2,2 sort.log|uniq 會(huì)對(duì)整行進(jìn)行去重(當(dāng)然uniq也可以按照第二列進(jìn)行去重)
sort整理完了,歡迎大牛指教
其實(shí)就是兩個(gè)減號(hào)。
Linux下有條不成文的規(guī)定:
參數(shù)里,凡是一個(gè)字母的縮寫(xiě)都是用一個(gè)減號(hào)起頭;
凡是有整個(gè)單詞的參數(shù)都是用兩個(gè)減號(hào)起頭。
你看到的是一條長(zhǎng)線,那只是字體不同造成的顯示效果不同罷了,
其實(shí)不論長(zhǎng)線還是兩個(gè)短線都是兩個(gè)減號(hào)組成的。
命令有參數(shù)的時(shí)候空一格加一個(gè) “-”
例如: ll -Z
shell寫(xiě)判斷的時(shí)候的判斷參數(shù)需要有“-”
例如:if [ -d /var ]; then echo "/var is a directory"; else echo "/var is not exists"; fi;
ps簡(jiǎn)介
前面介紹的兩個(gè)命令都是用于查看當(dāng)前系統(tǒng)用戶的情況,下面就來(lái)看看進(jìn)程的情況,這也是本章的主題。要對(duì)進(jìn)程進(jìn)行監(jiān)測(cè)和控制,首先必須要了解當(dāng)前進(jìn)程的情況,也就是需要查看當(dāng)前進(jìn)程,而ps命令就是最基本同時(shí)也是非常強(qiáng)大的進(jìn)程查看命令。使用該命令可以確定有哪些進(jìn)程正在運(yùn)行和運(yùn)行的狀態(tài)、進(jìn)程是否結(jié)束、進(jìn)程有沒(méi)有僵死、哪些進(jìn)程占用了過(guò)多的資源等等??傊蟛糠中畔⒍际强梢酝ㄟ^(guò)執(zhí)行該命令得到的。
ps命令及其參數(shù)
ps命令最常用的還是用于監(jiān)控后臺(tái)進(jìn)程的工作情況,因?yàn)楹笈_(tái)進(jìn)程是不和屏幕鍵盤(pán)這些標(biāo)準(zhǔn)輸入/輸出設(shè)備進(jìn)行通信的,所以如果需要檢測(cè)其情況,便可以使用ps命令了。
該命令語(yǔ)法格式如下:
ps [選項(xiàng)]
下面對(duì)命令選項(xiàng)進(jìn)行說(shuō)明:
-e 顯示所有進(jìn)程。
-f 全格式。
-h 不顯示標(biāo)題。
-l 長(zhǎng)格式。
-w 寬輸出。
a 顯示終端上的所有進(jìn)程,包括其他用戶的進(jìn)程。
r 只顯示正在運(yùn)行的進(jìn)程。
x 顯示沒(méi)有控制終端的進(jìn)程。
O[+|-] k1 [,[+|-] k2 [,…]] 根據(jù)SHORT KEYS、k1、k2中快捷鍵指定的多級(jí)排序順序顯示進(jìn)程列表。對(duì)于ps的不同格式都存在著默認(rèn)的順序指定。這些默認(rèn)順序可以被用戶的指定所覆蓋。其中“+”字符是可選的,“-”字符是倒轉(zhuǎn)指定鍵的方向。
pids 只列出指定進(jìn)程的情況。各進(jìn)程ID之間使用逗號(hào)分隔。該進(jìn)程列表必須在命令行參數(shù)的最后一個(gè)選項(xiàng)后面緊接著給出,中間不能插入空格。比如:ps -f1,4,5。
以下介紹長(zhǎng)命令行選項(xiàng),這些選項(xiàng)都使用“--”開(kāi)頭:
--sort X[+|-] key [,[+|-] key [,…]] 從SORT KEYS段中選一個(gè)多字母鍵?!?”字符是可選的,因?yàn)槟J(rèn)的方向就是按數(shù)字升序或者詞典淥承頡1熱紓?ps -jax -sort=uid,-ppid,+pid。
--help 顯示幫助信息。
--version 顯示該命令的版本信息。
在前面的選項(xiàng)說(shuō)明中提到了排序鍵,接下來(lái)對(duì)排序鍵作進(jìn)一步說(shuō)明。需要注意的是排序中使用的值是ps使用的內(nèi)部值,并非僅用于某些輸出格式的偽值。排序鍵列表見(jiàn)表4-3。
表4-3 排序鍵列表
短格式
長(zhǎng)格式
說(shuō) 明
c
cmd
可執(zhí)行的簡(jiǎn)單名稱(chēng)
C
cmdline
完整命令行
f
flags
長(zhǎng)模式標(biāo)志
g
pgrp
進(jìn)程的組ID
G
tpgid
控制tty進(jìn)程組ID
j
cutime
累計(jì)用戶時(shí)間
J
cstime
累計(jì)系統(tǒng)時(shí)間
k
utime
用戶時(shí)間
K
stime
系統(tǒng)時(shí)間
m
min_flt
次要頁(yè)錯(cuò)誤的數(shù)量
M
maj_flt
主要頁(yè)錯(cuò)誤的數(shù)量
n
cmin_flt
累計(jì)次要頁(yè)錯(cuò)誤
N
cmaj_flt
累計(jì)主要頁(yè)錯(cuò)誤
o
session
對(duì)話ID
p
pid
進(jìn)程ID
P
ppid
父進(jìn)程ID
r
rss
駐留大小
R
resident
駐留頁(yè)
s
size
內(nèi)存大小(千字節(jié))
S
share
共享頁(yè)的數(shù)量
t
tty
tty次要設(shè)備號(hào)
T
start_time
進(jìn)程啟動(dòng)的時(shí)間
U
uid
UID
u
user
用戶名
v
vsize
總的虛擬內(nèi)存數(shù)量(字節(jié))
y
priority
內(nèi)核調(diào)度優(yōu)先級(jí)
常用ps命令參數(shù)
前面兩節(jié)介紹的參數(shù)可能讓讀者覺(jué)得有些可怕,實(shí)際上這是一個(gè)非常容易使用的命令,一般的用戶只需掌握一些最常用的命令參數(shù)就可以了。 最常用的三個(gè)參數(shù)是u、a、x,下面將通過(guò)例子來(lái)說(shuō)明其具體用法。
[例20] 以root身份登錄系統(tǒng),查看當(dāng)前進(jìn)程狀況
$ ps
PID TTY TIME COMMAND
5800 ttyp0 00:00:00 bash
5835 ttyp0 00:00:00 ps
可以看到,顯示的項(xiàng)目共分為四項(xiàng),依次為PID(進(jìn)程ID)、TTY(終端名稱(chēng))、TIME(進(jìn)程執(zhí)行時(shí)間)、COMMAND(該進(jìn)程的命令行輸入)。
可以使用u選項(xiàng)來(lái)查看進(jìn)程所有者及其他一些詳細(xì)信息,如下所示:
$ ps u
USER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMAND
test 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bash
test 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 ps u
在bash進(jìn)程前面有條橫線,意味著該進(jìn)程便是用戶的登錄shell,所以對(duì)于一個(gè)登錄用戶來(lái)說(shuō)帶短橫線的進(jìn)程只有一個(gè)。還可以看到%CPU、%MEM兩個(gè)選項(xiàng),前者指該進(jìn)程占用的CPU時(shí)間和總時(shí)間的百分比;后者指該進(jìn)程占用的內(nèi)存和總內(nèi)存的百分比。
在這種情況下看到了所有控制終端的進(jìn)程;但是對(duì)于其他那些沒(méi)有控制終端的進(jìn)程還是沒(méi)有觀察到,所以這時(shí)就需要使用x選項(xiàng)。使用x選項(xiàng)可以觀察到所有的進(jìn)程情況。
[例21] 下面是使用x選項(xiàng)的例子:
$ ps x
PID TTY STAT TIME COMMAND
5800 ttyp0 S 0:00 -bash
5813 ttyp1 S 0:00 -bash
5921 ttyp0 S 0:00 man ps
5922 ttyp0 S 0:00 sh -c /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz | /
5923 ttyp0 S 0:00 /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz
5924 ttyp0 S 0:00 /usr/bin/less -is
5941 ttyp1 R 0:00 ps x
可以發(fā)現(xiàn)突然一下子就多出了那么多的進(jìn)程。這些多出來(lái)的進(jìn)程就是沒(méi)有控制終端的進(jìn)程。 前面看到的所有進(jìn)程都是test用戶自己的。其實(shí)還有許多其他用戶在使用著系統(tǒng),自然也就對(duì)應(yīng)著其他的很多進(jìn)程。如果想對(duì)這些進(jìn)程有所了解,可以使用a選項(xiàng)來(lái)查看當(dāng)前系統(tǒng)所有用戶的所有進(jìn)程。經(jīng)常使用的是aux組合選項(xiàng),這可以顯示最詳細(xì)的進(jìn)程情況。
[例22]
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1136 64 ? S Nov25 0:02 init [3]
root 2 0.0 0.0 0 0 ? SW Nov25 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Nov25 0:03 [kupdate]
root 4 0.0 0.0 0 0 ? SW Nov25 0:00 [kpiod]
root 5 0.0 0.0 0 0 ? SW Nov25 0:00 [kswapd]
root 163 0.0 0.1 1628 332 ? S Nov25 0:02 sshd
root 173 0.0 0.0 1324 200 ? S Nov25 0:00 syslogd
root 181 0.0 0.0 1420 0 ? SW Nov25 0:00 [klogd]
daemon 191 0.0 0.1 1160 312 ? S Nov25 0:00 /usr/sbin/atd
root 201 0.0 0.1 1348 492 ? S Nov25 0:00 crond
root 212 0.0 0.0 1292 68 ? S Nov25 0:00 inetd
……
在顯示的最前面是其他用戶的進(jìn)程情況,可以看到有root、daemon等用戶以及他們所啟動(dòng)的進(jìn)程。 在上面的例子中,介紹了ps命令最常見(jiàn)的一些選項(xiàng)和選項(xiàng)組合,用戶可以根據(jù)自己的需要選用。
有些命令顯示的內(nèi)容太多,一頁(yè)屏幕顯示不完,就需要翻頁(yè)命令。一般是用管道符將這樣的命令的輸出讓more或less處理,就像這樣:
dmesg |more (查看系統(tǒng)硬件信息)
或dmesg |less
more命令的翻頁(yè)按鍵:
空格:表示向下翻一頁(yè)
回車(chē):表示向下滾動(dòng)一行
/字符串:表示查詢字符串
q:離開(kāi)more界面
而less命令和more的不同之處在于,它可以向上翻頁(yè),字符串查詢也可以向上查詢。less命令的按鍵(more命令的按鍵在less中一樣):
PageUp:向上翻頁(yè)
PageDown:和空格鍵一樣是向下翻頁(yè)
?字符串:表示向下查詢字符串
n:重復(fù)查詢字符串