名稱 : sleep
使用權(quán)限 : 所有使用者
使用方式 : sleep [--help] [--version] number[smhd]
說明 : sleep 可以用來將目前動(dòng)作延遲一段時(shí)間
參數(shù)說明 :
--help : 顯示輔助訊息
--version : 顯示版本編號(hào)
number : 時(shí)間長(zhǎng)度,后面可接 s、m、h 或 d
其中 s 為秒,m 為 分鐘,h 為小時(shí),d 為日數(shù)
例子 :
顯示目前時(shí)間后延遲 1 分鐘,之后再次顯示時(shí)間 :
date;sleep 1m;date
名稱: time
使用權(quán)限: 所有使用者
使用方式: time [options] COMMAND [arguments]
說明: time 指令的用途,在于量測(cè)特定指令執(zhí)行時(shí)所需消耗的時(shí)間及系統(tǒng)資源等資訊。例如 CPU 時(shí)間、記憶體、輸入輸出等等。需要特別注意的是,部分資訊在 Linux 上顯示不出來。這是因?yàn)樵?Linux 上部分資源的分配函式與 time 指令所預(yù)設(shè)的方式并不相同,以致于 time 指令無法取得這些資料。
把計(jì)
-o or --output=FILE
設(shè)定結(jié)果輸出檔。這個(gè)選項(xiàng)會(huì)將 time 的輸出寫入 所指定的檔案中。如果檔案已經(jīng)存在,系統(tǒng)將覆寫其內(nèi)容。
-a or --append
配合 -o 使用,會(huì)將結(jié)果寫到檔案的末端,而不會(huì)覆蓋掉原來的內(nèi)容。
-f formAT or --format=formAT
以 formAT 字串設(shè)定顯示方式。當(dāng)這個(gè)選項(xiàng)沒有被設(shè)定的時(shí)候,會(huì)用系統(tǒng)預(yù)設(shè)的格式。不過你可以用環(huán)境變數(shù) time 來設(shè)定這個(gè)格式,如此一來就不必每次登入系統(tǒng)都要設(shè)定一次。
一般設(shè)定上,你可以用
\t
表示跳欄,或者是用
\n
表示換行。每一項(xiàng)資料要用 % 做為前導(dǎo)。如果要在字串中使用百分比符號(hào),就用 。(學(xué)過 C 語言的人大概會(huì)覺得很熟悉)
time 指令可以顯示的資源有四大項(xiàng),分別是:
Time resources
Memory resources
IO resources
Command info
詳細(xì)的內(nèi)容如下:
Time Resources
E 執(zhí)行指令所花費(fèi)的時(shí)間,格式是:[hour]:minute:second。請(qǐng)注意這個(gè)數(shù)字并不代表實(shí)際的 CPU 時(shí)間。
e 執(zhí)行指令所花費(fèi)的時(shí)間,單位是秒。請(qǐng)注意這個(gè)數(shù)字并不代表實(shí)際的 CPU 時(shí)間。
S 指令執(zhí)行時(shí)在核心模式(kernel mode)所花費(fèi)的時(shí)間,單位是秒。
U 指令執(zhí)行時(shí)在使用者模式(user mode)所花費(fèi)的時(shí)間,單位是秒。
P 執(zhí)行指令時(shí) CPU 的占用比例。其實(shí)這個(gè)數(shù)字就是核心模式加上使用者模式的 CPU 時(shí)間除以總時(shí)間。
Memory Resources
M 執(zhí)行時(shí)所占用的實(shí)體記憶體的最大值。單位是 KB
t 執(zhí)行時(shí)所占用的實(shí)體記憶體的平均值,單位是 KB
K 執(zhí)行程序所占用的記憶體總量(stack+data+text)的平均大小,單位是 KB
D 執(zhí)行程序的自有資料區(qū)(unshared data area)的平均大小,單位是 KB
p 執(zhí)行程序的自有堆疊(unshared stack)的平均大小,單位是 KB
X 執(zhí)行程序間共享內(nèi)容(shared text)的平均值,單位是 KB
Z 系統(tǒng)記憶體頁的大小,單位是 byte。對(duì)同一個(gè)系統(tǒng)來說這是個(gè)常數(shù)
IO Resources
F 此程序的主要記憶體頁錯(cuò)誤發(fā)生次數(shù)。所謂的主要記憶體頁錯(cuò)誤是指某一記憶體頁已經(jīng)置換到置換檔(swap file)中,而且已經(jīng)分配給其他程序。此時(shí)該頁的內(nèi)容必須從置換檔里再讀出來。
R 此程序的次要記憶體頁錯(cuò)誤發(fā)生次數(shù)。所謂的次要記憶體頁錯(cuò)誤是指某一記憶體頁雖然已經(jīng)置換到置換檔中,但尚未分配給其他程序。此時(shí)該頁的內(nèi)容并未被破壞,不必從置換檔里讀出來
W 此程序被交換到置換檔的次數(shù)
c 此程序被強(qiáng)迫中斷(像是分配到的 CPU 時(shí)間耗盡)的次數(shù)
w 此程序自愿中斷(像是在等待某一個(gè) I/O 執(zhí)行完畢,像是磁碟讀取等等)的次數(shù)
I 此程序所輸入的檔案數(shù)
O 此程序所輸出的檔案數(shù)
r 此程序所收到的 Socket Message
s 此程序所送出的 Socket Message
k 此程序所收到的信號(hào) ( Signal )數(shù)量
Command Info
C 執(zhí)行時(shí)的參數(shù)以及指令名稱
x 指令的結(jié)束代碼 ( Exit Status )
-p or --portability
這個(gè)選項(xiàng)會(huì)自動(dòng)把顯示格式設(shè)定成為:
real %e
user %U
sys %S
這么做的目的是為了與 POSIX 規(guī)格相容。
-v or --verbose
這個(gè)選項(xiàng)會(huì)把所有程式中用到的資源通通列出來,不但如一般英文語句,還有說明。對(duì)不想花時(shí)間去熟習(xí)格式設(shè)定或是剛剛開始接觸這個(gè)指令的人相當(dāng)有用。
范例:
利用下面的指令
time -v ps -aux
我們可以獲得執(zhí)行 ps -aux 的結(jié)果和所花費(fèi)的系統(tǒng)資源。如下面所列的資料:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 1096 472 ? S Apr19 0:04 init
root 2 0.0 0.0 0 0 ? SW Apr19 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Apr19 0:00 [kpiod]
......
root 24269 0.0 1.0 2692 996 pts/3 R 12:16 0:00 ps -aux
Command being timed: "ps -aux"
User time (seconds): 0.05
System time (seconds): 0.06
Percent of CPU this job got: 68%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.16
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 238
Minor (reclaiming a frame) page faults: 46
Voluntary context switches: 0
Involuntary context switches: 0
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
名稱: uptime
使用權(quán)限: 所有使用者
使用方式: uptime [-V]
說明: uptime 提供使用者下面的資訊,不需其他參數(shù):
現(xiàn)在的時(shí)間
系統(tǒng)開機(jī)運(yùn)轉(zhuǎn)到現(xiàn)在經(jīng)過的時(shí)間
連線的使用者數(shù)量
最近一分鐘,五分鐘和十五分鐘的系統(tǒng)負(fù)載
參數(shù): -V 顯示版本資訊。
范例: uptime
其結(jié)果為:
10:41am up 5 days, 10 min, 1 users, load average: 0.00, 0.00, 1.99
名稱:chfn
使用權(quán)限:所有使用者
用法:shell>> chfn
說明:提供使用者更改個(gè)人資訊,用于 finger and mail username
范例:
shell>> chfn
Changing finger information for user
Password: [del]
Name[]:Johnney Huang ### 提供 finger 時(shí)的資料
Office[]:NCCU
Office Phone[]: [del]
Home Phone[]: [del]
名稱:chsh
使用權(quán)限:所有使用者
用法:shell>> chsh
說明:更改使用者 shell 設(shè)定
范例:
shell>> chsh
Changing fihanging shell for user1
Password: [del]
New shell [/bin/tcsh]: ### [是目前使用的 shell]
[del]
shell>> chsh -l ### 展示 /etc/shells 檔案內(nèi)容
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
名稱: finger
使用權(quán)限: 所有使用者
使用方式: finger [options] user[@address]
說明:finger 可以讓使用者查詢一些其他使用者的資料。會(huì)列出來的資料有:
Login Name
User Name
Home directory
Shell
Login status
mail status
.plan
.project
.forward
其中 .plan ,.project 和 .forward 就是使用者在他的 Home Directory 里的 .plan , .project 和 .forward 等檔案里的資料。如果沒有就沒有。finger 指令并不限定于在同一伺服器上查詢,也可以尋找某一個(gè)遠(yuǎn)端伺服器上的使用者。只要給一個(gè)像是 E-mail address 一般的地址即可。
把計(jì)
-l
多行顯示。
-s
單行顯示。這個(gè)選項(xiàng)只顯示登入名稱,真實(shí)姓名,終端機(jī)名稱,閑置時(shí)間,登入時(shí)間,辦公室號(hào)碼及電話號(hào)碼。如果所查詢的使用者是遠(yuǎn)端伺服器的使用者,這個(gè)選項(xiàng)無效。
范例:下列指令可以查詢本機(jī)管理員的資料:
finger root
其結(jié)果如下:
Login: root Name: root
Directory: /root Shell: /bin/bash
Never logged in.
No mail.
No Plan.
名稱:last
使用權(quán)限:所有使用者
使用方式:shell>> last [options]
說明:顯示系統(tǒng)開機(jī)以來獲是從每月初登入者的訊息
把計(jì)
-R 省略 hostname 的欄位
-num 展示前 num 個(gè)
username 展示 username 的登入訊息
tty 限制登入訊息包含終端機(jī)代號(hào)
范例:
shell>> last -R -2
johnney pts/1 Mon Aug 14 20:42 still logged in
johnney pts/0 Mon Aug 14 19:59 still logged in
wtmp begins Tue Aug 1 09:01:10 2000 ### /var/log/wtmp
shell>> last -2 minery
minery pts/0 140.119.217.115 Mon Aug 14 18:37 - 18:40 (00:03)
minery pts/0 140.119.217.115 Mon Aug 14 17:22 - 17:24 (00:02)
wtmp begins Tue Aug 1 09:01:10 2000
名稱:login
這個(gè)命令都不會(huì)就不要干算了!呵呵我也不在這里多費(fèi)筆墨耽誤大家美好青春了^_^
名稱:passwd
使用權(quán)限:所有使用者
使用方式:passwd [-k] [-l] [-u [-f] [-d] [-S] [username]
說明:用來更改使用者的密碼
參數(shù):
-k
-l
-u
-f
-d 關(guān)閉使用者的密碼認(rèn)證功能, 使用者在登入時(shí)將可以不用輸入密碼, 只有具備 root 權(quán)限的使用者方可使用.
-S 顯示指定使用者的密碼認(rèn)證種類, 只有具備 root 權(quán)限的使用者方可使用.
[username] 指定帳號(hào)名稱.
名稱 : who
使用權(quán)線 : 所有使用者都可使用
使用方式 : who - [husfV] [user]
說明 : 顯示系統(tǒng)中有那些使用者正在上面,顯示的資料包含了使用者 ID,使用的終端機(jī),從那邊連上來的,上線時(shí)間,呆滯時(shí)間,CPU 使用量,動(dòng)作等等。
把計(jì) :
-h : 不要顯示標(biāo)題列
-u : 不要顯示使用者的動(dòng)作/工作
-s : 使用簡(jiǎn)短的格式來顯示
-f : 不要顯示使用者的上線位置
-V : 顯示程式版本
名稱:/etc/aliases
使用權(quán)限:系統(tǒng)管理者
使用方式: 請(qǐng)用 newaliases 更新資料庫
說明:
sendmail 會(huì)使用一個(gè)在 /etc/aliases 中的檔案做使用者名稱轉(zhuǎn)換的動(dòng)作。當(dāng) sendmail 收到一個(gè)要送給 xxx 的信時(shí),它會(huì)依據(jù) aliases檔的內(nèi)容送給另一個(gè)使用者。這個(gè)功能可以創(chuàng)造一個(gè)只有在信件系統(tǒng)內(nèi)才有效的使用者。例如 mailing list 就會(huì)用到這個(gè)功能,在 mailinglist 中,我們可能會(huì)創(chuàng)造一個(gè)叫 redlinux@link.ece.uci.edu 的 mailinglist,但實(shí)際上并沒有一個(gè)叫 redlinux 的使用者。實(shí)際 aliases 檔的內(nèi)容是將送給這個(gè)使用者的信都收給 mailing list 處理程式負(fù)責(zé)分送的工作。
/etc/aliases 是一個(gè)文字模式的檔案,sendmail 需要一個(gè)二進(jìn)位格式的 /etc/aliases.db。newaliases 的功能傳是將 /etc/aliases 轉(zhuǎn)換成一個(gè) sendmail 所能了解的資料庫。范例:
# newaliases
下面命令會(huì)做相同的事,
# sendmail -bi
相關(guān)命令:
mail, mailq, newaliases, sendmail
名稱:mail
使用權(quán)限:所有使用者
使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
說明:
mail 不僅只是一個(gè)指令, mail 還是一個(gè)電子郵件程式,不過利用 mail 來讀信的人應(yīng)該很少吧!對(duì)于系統(tǒng)管理者來說 mail 就很有用,因?yàn)楣芾碚呖梢杂?mail 寫成 script ,定期寄一些備忘錄提醒系統(tǒng)的使用者。
參數(shù):
i 忽略 tty 的中斷訊號(hào)。 (interrupt)
I 強(qiáng)迫設(shè)成互動(dòng)模式。 (Interactive)
v 列印出訊息,例如送信的地點(diǎn)、狀態(tài)等等。 (verbose)
n 不讀入 mail.rc 設(shè)定檔。
s 郵件標(biāo)題。
c cc 郵件地址。
b bcc 郵件地址。
范例:
將信件送給一個(gè)或以上的電子郵件地址,由于沒有加入其他的選項(xiàng),使用者必須輸入標(biāo)題與信件的內(nèi)容等。而 user2 沒有主機(jī)位置,就會(huì)送給郵件伺服器的 user2 使用者。
mail user1@email.address
mail user1@email.address user2
將 mail.txt 的內(nèi)容寄給 user2 同時(shí) cc 給 user1 。如果將這一行指令設(shè)成 cronjob 就可以定時(shí)將備忘錄寄給系統(tǒng)使用者。
mail -s 標(biāo)題 -c user1 user2 < mail.txt
指令:mesg
使用權(quán)限 : 所有使用者
使用方式 : mesg [y|n]
說明 : 決定是否允許其他人傳訊息到自己的終端機(jī)介面把計(jì)
y : 允許訊息傳到終端機(jī)介面上。
n : 不允許訊息傳到終端機(jī)介面上 。
如果沒有設(shè)定,則訊息傳遞與否則由終端機(jī)界面目前狀態(tài)而定。
例子 :
改變目前訊息設(shè)定,改成不允許訊息傳到終端機(jī)介面上 :
mesg n
與 mesg 相關(guān)的指令有: talk,write,wall。
名稱:/etc/aliases
使用權(quán)限:系統(tǒng)管理者
使用方式: newaliases
說明:
sendmail 會(huì)使用一個(gè)在 /etc/aliases 中的檔案做使用者名稱轉(zhuǎn)換的動(dòng)作。當(dāng) sendmail 收到一個(gè)要送給 xxx 的信時(shí),它會(huì)依據(jù) aliases檔的內(nèi)容送給另一個(gè)使用者。這個(gè)功能可以創(chuàng)造一個(gè)只有在信件系統(tǒng)內(nèi)才有效的使用者。例如 mailing list 就會(huì)用到這個(gè)功能,在 mailinglist 中,我們可能會(huì)創(chuàng)造一個(gè)叫 redlinux@link.ece.uci.edu 的 mailinglist,但實(shí)際上并沒有一個(gè)叫 redlinux 的使用者。實(shí)際 aliases 檔的內(nèi)容是將送給這個(gè)使用者的信都收給 mailing list 處理程式負(fù)責(zé)分送的工作。
/etc/aliases 是一個(gè)文字模式的檔案,sendmail 需要一個(gè)二進(jìn)位格式的 /etc/aliases.db。newaliases 的功能傳是將 /etc/aliases 轉(zhuǎn)換成一個(gè) sendmail 所能了解的資料庫。
參數(shù):沒有任何參數(shù)。 范例:
# newaliases
下面命令會(huì)做相同的事,
# sendmail -bi
相關(guān)命令:
mail, mailq, newaliases, sendmail
名稱 : talk
使用權(quán)限 : 所有使用者
使用方式 :
talk person [ttyname]
說明 : 與其他使用者對(duì)談
把計(jì) :
person : 預(yù)備對(duì)談的使用者帳號(hào),如果該使用者在其他機(jī)器上,則可輸入 person@machine.name
ttyname : 如果使用者同時(shí)有兩個(gè)以上的 tty 連線,可以自行選擇合適的 tty 傳訊息
例子.1 :
與現(xiàn)在機(jī)器上的使用者Rollaend對(duì)談,此時(shí) Rollaend 只有一個(gè)連線 :
talk Rollaend
接下來就是等Rollaend回應(yīng),若Rollaend接受,則Rollaend輸入 `talk jzlee`即可開始對(duì)談,結(jié)束請(qǐng)按 ctrl+c
例子.2 :與linuxfab.cx上的使用者Rollaend對(duì)談,使用pts/2來對(duì)談 :
talk Rollaend@linuxfab.cx pts/2
接下來就是等Rollaend回應(yīng),若Rollaend接受,則Rollaend輸入 `talk jzlee@jzlee.home`即可開始對(duì)談,結(jié)束請(qǐng)按 ctrl+c
注意 : 若螢?zāi)坏淖謺?huì)出現(xiàn)不正常的字元,試著按 ctrl+l 更新螢?zāi)划嬅妗?/font>
名稱 : wall
使用權(quán)限 : 所有使用者
使用方式 :
wall [ message ]
使用說明:
wall 會(huì)將訊息傳給每一個(gè) mesg 設(shè)定為 yes 的上線使用者。當(dāng)使用終端機(jī)介面做為標(biāo)準(zhǔn)傳入時(shí), 訊息結(jié)束時(shí)需加上 EOF (通常用 Ctrl+D)
例子 :
傳訊息"hi" 給每一個(gè)使用者 :
wall hi
名稱 : write
使用權(quán)限 : 所有使用者
使用方式 :
write user [ttyname]
說明 : 傳訊息給其他使用者
把計(jì) :
user : 預(yù)備傳訊息的使用者帳號(hào)
ttyname : 如果使用者同時(shí)有兩個(gè)以上的 tty 連線,可以自行選擇合適的 tty 傳訊息
例子.1 :
傳訊息給 Rollaend,此時(shí) Rollaend 只有一個(gè)連線 :
write Rollaend
接下來就是將訊息打上去,結(jié)束請(qǐng)按 ctrl+c
例子.2 :傳訊息給 Rollaend,Rollaend 的連線有 pts/2,pts/3 :
write Rollaend pts/2
接下來就是將訊息打上去,結(jié)束請(qǐng)按 ctrl+c
注意 : 若對(duì)方設(shè)定 mesg n,則此時(shí)訊席將無法傳給對(duì)方
名稱:kill
使用權(quán)限:所有使用者
使用方式:
kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
說明:kill 送出一個(gè)特定的信號(hào) (signal) 給行程 id 為 pid 的行程根據(jù)該信號(hào)而做特定的動(dòng)作, 若沒有指定, 預(yù)設(shè)是送出終止 (TERM) 的信號(hào)
把計(jì)
-s (signal) : 其中可用的訊號(hào)有 HUP (1), KILL (9), TERM (15), 分別代表著重跑, 砍掉, 結(jié)束; 詳細(xì)的信號(hào)可以用 kill -l
-p : 印出 pid , 并不送出信號(hào)
-l (signal) : 列出所有可用的信號(hào)名稱
范例:
將 pid 為 323 的行程砍掉 (kill) :
kill -9 323
將 pid 為 456 的行程重跑 (restart) :
kill -HUP 456
名稱:nice
使用權(quán)限:所有使用者
使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command [arg...]
說明:以更改過的優(yōu)先序來執(zhí)行程式, 如果未指定程式, 則會(huì)印出目前的排程優(yōu)先序, 內(nèi)定的 adjustment 為 10, 范圍為 -20 (最高優(yōu)先序) 到 19 (最低優(yōu)先序)
把計(jì)
-n adjustment, -adjustment, --adjustment=adjustment 皆為將該原有優(yōu)先序的增加 adjustment
--help 顯示求助訊息
--version 顯示版本資訊
范例:
將 ls 的優(yōu)先序加 1 并執(zhí)行 :
nice -n 1 ls
將 ls 的優(yōu)先序加 10 并執(zhí)行 :
nice ls將 ls 的優(yōu)先序加 10 并執(zhí)行
注意 : 優(yōu)先序 (priority) 為作業(yè)系統(tǒng)用來決定 CPU 分配的參數(shù),Linux 使用『回合制(round-robin)』的演算法來做 CPU 排程,優(yōu)先序越高,所可能獲得的 CPU時(shí)間就越多。
名稱:ps
使用權(quán)限:所有使用者
使用方式:ps [options] [--help]
說明:顯示瞬間行程 (process) 的動(dòng)態(tài)
參數(shù):
ps 的參數(shù)非常多, 在此僅列出幾個(gè)常用的參數(shù)并大略介紹含義
-A 列出所有的行程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細(xì)的資訊
-aux 顯示所有包含其他使用者的行程
au(x) 輸出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程擁有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的記憶體使用率
VSZ: 占用的虛擬記憶體大小
RSS: 占用的記憶體大小
TTY: 終端的次要裝置號(hào)碼 (minor device number of tty)
STAT: 該行程的狀態(tài):
D: 不可中斷的靜止 (通悸□□縝b進(jìn)行 I/O 動(dòng)作)
R: 正在執(zhí)行中
S: 靜止?fàn)顟B(tài)
T: 暫停執(zhí)行
Z: 不存在但暫時(shí)無法消除
W: 沒有足夠的記憶體分頁可分配
<: 高優(yōu)先序的行程
N: 低優(yōu)先序的行程
L: 有記憶體分頁分配并鎖在記憶體內(nèi) (即時(shí)系統(tǒng)或捱A I/O)
START: 行程開始時(shí)間
TIME: 執(zhí)行的時(shí)間
COMMAND:所執(zhí)行的指令
范例:
ps
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -A
PID TTY TIME CMD
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
.......
% ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]