這部份真的太重要了!不希望大家老是到討論區上面發問一些『可能會被碎碎唸』的問題,所以這裡再次的重複的強調一次!
[root@tsai
root]# man command
<==command 為你欲查詢的指令名稱
[root@tsai root]# info command |
[root@tsai
root]# man 5 passwd
[root@tsai root]# man passwd |
多人多工
- 多人環境:Linux 最棒的地方就在於他的多人多工環境了!那麼,什麼是『多人多工』?!在 Linux 上面允許不同的人使用,而且每個人都有其特殊的權限,只有一個人具有至高無上的權力,那就是 root (系統管理員),除了他之外,其他人都必須要受一些限制的!而每個人進入 Linux 的環境設定都可以隨著每個然的喜好來設定( 還記得我們在 BASH 那一章提過的 ~/.bashrc 吧!?對了!就是那個光! )!咦! Windows 也可以呀!是沒錯呀!但是要曉得的是,您只能在 Windows 前面才可以進行『登入』的工作,也就是說,每次 Windows 僅允許一個人物登入!當然囉,Windows NT 也同樣的具有這個多人多工的功能!不過,由於 NT 實在是太耗系統資源了,個人認為,還是比不上 Linux 或者是 Unix 家族的網路連線來的順暢呢!
- 多工行為:我想,使用過 Windows 的人絕對都會遇到這樣的事情:『這個檔案正在使用中,您無法開啟這個檔案!』我哩勒!還得將正在執行當中的程式關掉之後才能開這個中間暫存檔!!而且這個時候還只有我自己一個人在使用呢??受不了??呵呵! Linux 就不會這樣囉!您可以同時在不同的畫面,同時由不同的人(當然囉,有的是經由 SSH 網路連線過來,有的是直接在螢幕前面的朋友囉!)使用『同一個檔案』,不論是開啟或者是修改,只要您有權限,(還記得前面說過的檔案權限的資料吧?!忘記了?回頭複習去吧!!)就可以使用該檔案!!這個東西可有用的緊!由於鳥哥是很常使用程式的(就是 Fortran 啦,吃飯的工具!),而由於我們有一部主機專門用來工作的,所以配備比較高檔一點(雙 PIII 的 CPU),那麼我就可以同時的進行兩個 compiler 的程序,而且還不會互相的影響,並且資源分配的還蠻均勻的!哈哈!又捨棄掉 Windows 的耗費資源的咚咚,唉呦?怎麼會跑得這麼順暢呀!爽斃了!!
- 七個基本視窗:在 Linux 當中,預設提供了六個文字界面登入視窗,以及一個圖形界面,你可以使用 [Alt]+[F1].....[F7]來切換不同的終端機界面,而且每個終端機界面的登入者還可以不同人!很炫吧!不像 Windows 一次只能在螢幕前登入一個人!!這個東西可就很有用啦!尤其是在某個程序死掉的時候!
- 殺掉程序:以前的鳥哥笨笨的,總是以為使用 Windows 98 就可以啦!後來,因為工作的關係,需要使用 Unix 系統,想說我只要在工作機前面就好,才不要跑來跑去的到 Unix 工作站前面去呢!所以就使用 Windows 連到我的 Unix 工作站工作!好死不死,我一個程序跑下來要 2~3 天,唉?偏偏常常到了地 2.5 天的時候, Windows 98 就給他掛點去!當初真的是給他怕死了??後來因為換了新電腦,用了隨機版的 Windows 2000 ,呵呵,這東西真不錯(指對單人而言),在當機的時候,他可以僅將錯誤的程序踢掉,而不干擾其他的程序進行,呵呵!從此以後,就不用擔心會當機連連囉!不過, 2000 畢竟還不夠好,因為有的時候還是會死當!!那麼 Linux 呢?哈哈!更棒了,幾乎可以說絕對不會當機的!因為他可以在任何時候,將某個被困住的程序殺掉,然後在重新執行該程序而不用重新開機!夠炫吧!那麼如果我在 Linux 下以文字界面登入,在螢幕當中顯示錯誤訊息後就掛了?動都不能動,該如何是好!?這個時候那預設的七個視窗就幫上忙啦!你可以隨意的再按 [Alt]+[F1].....[F7] 來切換到其他的終端機界面,然後以 ps -aux 找出剛剛的錯誤程序,然後給他 kill 一下,哈哈,回到剛剛的終端機界面!恩?棒!又回復正常囉!
- CPU 的工作問題:在早期玩 Windows 98 的朋友應該都曉得的是,Windows 98 預設 CPU 是『一直全速在跑的』,也不能這樣說啦,應該說 windows 98 的 CPU 是一直在通電的!連沒有工作的時候,他的 CPU 使用率還是可以到達 100% ,所以容易造成 CPU 過熱當機的問題!這個情況雖然可以在 NT 獲 2000 中得到解決,或者可以加灌 CPU 省電軟體來降低溫度,但是仍然是怪怪的!而在 Linux 當中根本就沒有這個問題, CPU 沒有使用,就不會有通電,哈哈!省電又沒有高熱呦!不然您可以瞧一瞧咱們這個網站的 CPU 使用率,除了 WWW 線上人數過多的時候會衝到 30% 左右之外,其他時候可是低低的呦!
背景執行
- 另外一個功能,就是『背景執行』的功夫了。當你輸入
[root@tsai root]# cp file1 file2 &
這一串指令的時候,表示將 file1 這個檔案複製為 file2 ,且放置於背景中執行,也就是說執行這一個命令之後,在這一個終端介面仍然可以做其他的工作!而當這一個指令( cp file1 file2 )執行完畢之後,系統將會在您的終端介面顯示完成的消息!很便利喔!
多人多工的問題好了!廢話說完了!開始來談一談幾個常用的指令吧!
- 多人多工確實有很多的好處,但其實也有管理上的困擾,因為使用者越來越多,將導致你管理上的困擾哩!另外,由於使用者日盛,當使用者達到一定的人數後,通常你的機器便需要升級了,因為 CPU 的運算與 RAM 的大小可能就會不敷使用!
有時後我們並不是一定要在螢幕前進行工作的,尤其是某些朋友特別不喜歡同時開啟多個視窗,會容易搞混掉!這個時候就需要使用到背景工作管理的一些指令囉!這些指令是需要同時使用的!如 &, [Ctrl]+z, bg, fg, jobs, 與 kill 等等!此外,最主要利用到『背景工作』的使用者通常是怎麼回是呢?『就是當您的主機已經被限制使用者僅能同時登入一次』的時候,也就是說,你無法用兩個視窗登入到同一部主機,可以做的到嗎?可以呀!目前很多的主機為了節省系統資源,就是這樣搞的,然而這個時候萬一您要進行很多工作的時候,要怎麼辦?!阿!傷腦筋呀!還好!在 Linux 裡面支援了很多這方面的事情!我們可以這樣做呢! ^_^
學習本章的時候會使用到部分的命令重導向,所以請前往 BASH SHELL 閱讀一番!
&
語法:說明:
[root @test /root ]# command &
參數說明:
範例:
[root @test /root]# find / -name testing & <==將該執行程序丟到背景執行
[root @test /root]# fg <==將該程序叫回螢幕前執行
如果想要讓螢幕中的工作( command )在背景底下執行的時後,就使用 & 吧!不過,由於是背景執行的,所以該程序的輸出並不會顯現在螢幕上,所以需要特別留意輸出的資訊的管線重導的問題呦!另外,如何將該程序叫回來螢幕上面執行呢?就使用 fg 即可!當然囉,也可以使用 [Ctrl]+z 來將目前正在進行當中的工作丟到背景底下!那麼擺在背景底下執行有何好處呢?!最大的好處就是不怕被『 [Ctrl]+c 』這個中斷指令來中斷了!!
[Ctrl]+z
語法:說明:
[root @test /root ]# command
[root @test /root ]# ^Z <==按下[Ctrl]加上 z 鍵
參數說明:
範例:
[root @test /root]# vi .bashrc
^Z <==在 vi 當中的一般模式中鍵入[Ctrl]+z[1]+ Stopped vi .bashrc <==這裡會顯示將資料丟到背景當中了!
[root @test /root]#
如果你正在進行 vi ,而且是在編輯一個重要資料檔案,但是偏偏你想起有的程序需要留意,因此需要退出 vi ,不過,你並不想這個時候儲存退出 vi ,那麼該如何是好呢?!就將資料丟到背景裡面去吧!以上面的例子來說明,當你在執行編輯 /root/.bashrc 這個檔案時,想要暫時離開,那麼就直接在 vi 的『一般模式』當中輸入[Ctrl]加上 z (小寫)按鍵,,那麼系統就會告訴你『工作項目 [1] 在背景當中,而其狀態為[Stopped]亦即是停止的狀態!』,並且會離開 vi 進入到 command line 當中,等待使用者輸入指令!這個咚咚很好用的呦!那如果想要回到 vi 呢?!呵呵,就需要使用 jobs 配合 bg 或 fg 囉!
jobs
語法:說明:
[root @test /root ]# jobs
參數說明:
範例:
[root @test /root]# vi .bashrc
^Z <==在 vi 當中的一般模式中鍵入[Ctrl]+z[1]+ Stopped vi .bashrc <==這裡會顯示將資料丟到背景當中了!
[root @test /root]# jobs
[1]+ Stopped vi .bashrc <==顯示有一個工作在背景下,狀態為 停止。
剛剛我們提到的 & 與 vi 在背景下執行,那麼你怎麼知道目前你所進行的背景底下的工作有哪些呢?!很簡單,就是使用 jobs 就可以觀察到啦!以上式為例,使用 jobs 就可以知道目前的背景中工作項目有 vi .bashrc 這一項!那個中括號([])裡面的數字就是 jobs 的代號囉!
fg 與 bg
語法:說明:
[root @test /root ]# fg %number
[root @test /root ]# bg %number
參數說明:
% :後面接數字,表示 jobs 的工作代號
number :就是工作代號
範例:
[root @test /root]# find / -name test
^Z
[1]+ Stopped find / -name testing
[root @test /root]# vi .bashrc
^Z
[2]+ Stopped vi .bashrc <==這裡會顯示將資料丟到背景當中了!
[root @test /root]# jobs
[1]- Stopped find / -name testing
[2]+ Stopped vi .bashrc
[root @test /root]# bg %1
[root @test /root]# jobs
[1]- Running find / -name testing &
[2]+ Stopped vi .bashrc
[root @test /root]# fg %2
進入 vi 畫面囉!
OK!那麼如何來瞭解 jobs 的背景(bg)與前景(fg)的管控呢?!這裡請注意囉!這個 bg 是將『背景當中的程式由 stopped 變成 Running 』的一個手段,至於 fg 『則是將背景中的指令移到螢幕上來動作』,那你怎麼知道你的背景當中有多少的工作(jobs)在進行呢?!就是執行 jobs 來看看背景程式的代號囉!然後以 bg %number 來將資料在背景中執行,而 fg %number 則是將代號為 number 的程式移動到螢幕前面動作!
kill
語法:說明:
[root @test /root ]# kill -sigal %number
參數說明:
%number :背景工作的代號,可使用 jobs 查詢
signal
-1 :重新讀取一次參數設定檔(類似 reload )
-2 :使用者中斷該工作,類似 [Ctrl]+c 來中斷一個工作
-9 :立刻殺掉一個工作,不論該工作是否為僵屍程序
-15 :停止一個工作(這是預設值)
範例:
[root @test /root]# jobs
[1]+ Stopped vi .bashrc
[root @test /root]# kill -9 %1
如果想要直接殺掉背景工作中的項目,可以直接輸入 kill 來殺掉!但是由於預設是將該程序停止而已,不見得一定可以將該工作清除乾淨,因此需要送出一個訊號,告訴系統你就是要砍掉該程序!這個時候就使用 kill -9 吧另外, -15 稱為 terminal ,是以一般的正常程序砍掉一個 jobs ,而 –9 有『強制終止』的意思,所以可以控制殭屍程序。
終於來到最嚴重的系統管理員的擔心部分!一個被入侵的 Linux 系統最容易被修改的是什麼?想必您一定有聽說過所謂的『木馬程式』吧!所謂的木馬程式就是以一些小指令,由背景執行的方式常駐在系統當中,而當你的系統被入侵者入侵之後,對於您 Linux 主機上面的資訊,呵呵!就是由這些木馬程式傳送到入侵者手中的!所以囉!良好的管理程序的習慣,也是系統管理員必須要做的功課呢!好了!我們必須要瞭解的是『什麼是程序』呀!?說穿了,這也沒有什麼好神秘的,『程序就是您在執行或者啟動一個事件的時候,系統會發給他的一個執行序!』換句話說,當您啟動了一個指令或者是 shell 的時候,系統就會給這個事件或者是 shell 一個代碼,而如果有任何的其他服務要使用到你目前這程序的資源時,就會自動的跑來瞭解一下您的 PID ( process ID, 就是程式序囉!),底下我們使用 ps 與 top 這兩個最常用來觀察系統程序工作狀態的指令來瞭解一下什麼是程序啦!
另外,我們還得需要來瞭解一下,什麼是『父程序, PPID』與『子程序, child precess』呢?!呵呵!說穿了也沒有什麼了不起!就是『子程序是由父程序執行而得的一個程序,當子程序死掉時,父程序通常不會被影響,但是當父程序死掉時,則所有子程序將一併結束!』常常很多朋友都在反應:『唉呦!我的 sendmail 怎麼關都關不掉,真是見鬼了!』呵呵!這個時候您就得告訴他囉:『唉呦!你關掉的不是父程序呀!只是一些子程序,由於父程序還存活著,所以子程序就會不動的湧出囉!』
ps
語法:說明:
[root @test /root ]# ps -aux
參數說明:
a :選擇所有的程序列出
u :所有使用者的程序均列出
x :所有 tty 的程序列出
範例:
[root @test /root]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 1384 468 ? S Mar31 0:05 init [3]
root 2 0.0 0.0 0 0 ? SW Mar31 0:00 [keventd]
root 3 0.0 0.0 0 0 ? SWN Mar31 0:00 [ksoftirqd_CPU0]
root 4 0.0 0.0 0 0 ? SW Mar31 0:11 [kswapd]
root 5 0.0 0.0 0 0 ? SW Mar31 0:00 [bdflush]
root 6 0.0 0.0 0 0 ? SW Mar31 0:00 [kupdated]
root 130 0.0 0.0 0 0 ? SW Mar31 0:00 [kjournald]
root 131 0.0 0.0 0 0 ? SW Mar31 0:01 [kjournald]
root 132 0.0 0.0 0 0 ? SW Mar31 0:03 [kjournald]
root 133 0.0 0.0 0 0 ? SW Mar31 0:12 [kjournald]
root 482 0.0 0.2 1444 528 ? S Mar31 0:03 syslogd -m 0
........
這是用來查詢目前主機環境中,在背景執行的相關程序!我通常使用『 ps -aux 』這個參數來列出所有的資訊以提供自己檢查程序的問題!在上面的程序列出當中,說明如下:這是一個很有用的指令,尤其是在偵測系統的狀態時!不過,這個程式也是入侵者最喜歡修改的執行程式了!因為他可以寫一個 script 來騙 root 呀!讓某些木馬程式沒有辦法顯示出來∼∼重要的很!!善加利用吧!此外,那個 PID 是挺重要的資訊呦!因為在後面的 kill 就是藉由瞭解 PID 來進行程序的刪除的動作的!
- USER:說明該程序是屬於哪一個人的;
- PID:該程序的代號;
- %CPU:代表該程序使用了多少 CPU 資源;
- %MEM:代表該程序使用了多少的 RAM ;
- VSZ, RSS:佔去的 ram 的大小( bytes );
- TTY:是否為登入者執行的程序?若為 tty1-tty6 則為本機登入者,若為 pts/?? 則為遠端登入者執行的程序
- STAT:該程序的狀態,( R )為可執行的,( S )為該程序正在睡眠中,就是沒有執行了,( T )正在偵測或者是停止了,( Z )僵屍程式,就是 zombie 死掉的程式啦!需要以 kill 除去囉!
- START:該程序開始的日期;
- TIME:該程序跑了多久的時間?
- COMMAND:該程序的內容啦!
top
語法:說明:
[root @test /root ]# top
參數說明:
在執行 top 的程式中,可以輸入下面的字元以進行排序
A :以 age 亦即是執行的先後程序進行排序
T :由啟動的時間排序
M :以所佔的 memory 的大小排序
P :以所耗用的 CPU 資源排序
範例:
[root @test /root]# top
11:55pm up 8 days, 7:40, 1 user, load average: 0.22, 0.14, 0.10
71 processes: 69 sleeping, 2 running, 0 zombie, 0 stopped
CPU states: 24.6% user, 3.7% system, 0.0% nice, 71.5% idle
Mem: 255892K av, 222300K used, 33592K free, 0K shrd, 48084K buff
Swap: 289128K av, 8184K used, 280944K free 110472K cachedPID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
9898 root 9 0 5976 5976 1364 S 5.5 2.3 0:00 mrtg
4744 apache 14 0 5312 5052 3764 S 2.1 1.9 0:16 httpd
9189 apache 14 0 4520 4256 3752 S 1.9 1.6 0:01 httpd
9187 apache 10 0 4544 4276 3800 S 1.7 1.6 0:01 httpd
9212 mysql 9 0 7280 4772 2716 S 0.7 1.8 0:00 mysqld
9888 root 12 0 1064 1064 832 R 0.7 0.4 0:00 top
4842 mysql 10 0 7280 4772 2716 S 0.5 1.8 0:06 mysqld
9218 mysql 10 0 7280 4772 2716 S 0.5 1.8 0:00 mysqld
使用 ps 是一個不錯的管理工具,但是 ps 畢竟不是動態的,若使用 top 的話,呵呵!可以用動態(每五秒鐘更新一次)的方式來偵測程序的進行!而且在程序進行中,還可以使用 P 來以 CPU 耗用資源排序、使用 M 來以 memory 佔用大小排序等等,非常好用的管理工作!有空的話多以 man top 來玩一玩吧!
free
語法:說明:
[root @test /root ]# free
參數說明:
-k :以 KBytes 來顯示記憶體
-m :以 MBytes 來顯示記憶體
範例:
[root @test /root]# free
total used free shared buffers cached
Mem: 255892 222076 33816 0 49072 112272
-/+ buffers/cache: 60732 195160
Swap: 289128 7572 281556
另一個觀看系統資源的就是使用 free 來檢查目前記憶體的使用情況囉!在上面顯示的是,我有 256 MB 的時體記憶體,也有大約 270 MB 的 swap (就是虛擬記憶體啦!)大小。
sar
語法:說明:
[root @test /root ]# sar [-u] [-r] 秒數 次數
參數說明:
-u :看 CPU 使用的情況
-r :看 memory 使用的情況
秒數:幾秒鐘觀測一次?
次數:共觀測幾次
範例:
[root @test /root]# sar -u 1 3
12:10:28 AM CPU %user %nice %system %idle
12:10:29 AM all 0.00 0.00 0.00 100.00
12:10:30 AM all 0.00 0.00 0.00 100.00
12:10:31 AM all 12.00 0.00 1.00 87.00
Average: all 4.00 0.00 0.33 95.67
[root @test /root]# sar -r 1 3
12:11:11 AM kbmemfree kbmemused %memused kbmemshrd kbbuffers kbcached kbswpfree kbswpused %swpused
12:11:12 AM 24416 231476 90.46 0 51068 112536 281556 7572 2.62
12:11:13 AM 24420 231472 90.46 0 51068 112536 281556 7572 2.62
12:11:14 AM 24392 231500 90.47 0 51068 112540 281556 7572 2.62
Average: 24409 231483 90.46 0 51068 112537 281556 7572 2.62
鳥哥真的是很喜歡使用 sar 來看系統的資源呢!真的是太方便了!比較常用的是 CPU 與 RAM 的觀察,當然囉,還可以觀察硬碟的 I/O 變化!!在上面的例子中,觀察 CPU 的現象中,可以發現 CPU idle 的情況很長!不錯!另外,在 RAM 的觀測中,比較常使用的是 %memused (使用的百分比)及 %swpused (虛擬記憶體使用的百分比),很方便吧!一覽無遺呦!事實上, VBird 也已經以 sar 來作為 MRTG 繪製圖表的一個工具,很是方便的!不過,比較麻煩的是, Mandrake 預設並沒有安裝這個套件,如果您有需要的話,可以到相關網站上面下載 sysstat 這個套件呢!
kill
語法:說明:
[root @test /root ]# kill -signal PID
參數說明:
那個 -signal 跟上面的 kill 一樣:
-9 :殺掉該程序
-15 :停止該程序!
範例:
[root @test /root]# kill -9 2380
要殺掉一個程序的時後,自然需要知道該程序的 PID 才行!另外,需要注意的是,由於很多的程序都有附屬關係,例如 sendmail 可能會同時開啟相當多的程序在工作(如果郵件量很大的時後!)所以,如果砍掉的是『子程序』是無法將整個程序殺掉的!而要知道該程序的代號(PID)自然就得善用 ps, top 等工具囉! 此外,您常常會發現在一些 scripts 裡面,會寫著 kill –1 PID 的字樣,那個 –l 是讓該 PID 重新讀取一次設定檔的意思,最常發現在 syslogd 這個 daemon 呢!我們在後頭再來提一提這個重要的咚咚!
uname
語法:說明:
[root @test /root ]# uname [-apnr]
參數說明:
-a :所有的系統資訊均列出
-p :列出 CPU 資訊
-n :列出 host name
-r :列出 kernel 版本資訊
範例:
[root @test /root]# uname -a
Linux tsai.adsldns.org 2.4.18 #2 Mon Mar 25 21:51:51 CST 2002 i586 unknown
想要知道你的系統資訊嗎?包括你的核心版本、主機名稱、CPU 資訊等等!使用 uname 就可以達到啦!另外,如果對於你的 CPU 有興趣的話,那麼不妨在 /proc 底下看看:看到了嗎?!馬上就知道你的 CPU 的 type 囉!
[root @test /root ]# more /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 5
model : 9
model name : AMD-K6(tm) 3D+ Processor
stepping : 1
cpu MHz : 400.917
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr
bogomips : 799.53
好了!接著下來我們來談一談『我哪一個程序可以最優先被處理!?』呵呵!這是個很重要的課題!怎麼說呢?因為在你的系統當中,通常『同一個時間一定有多個程序會佔用到 CPU 的資源,哪麼那個程序比較重要,讓 CPU 可以先跑該程序,就是一個重要的課題了!』您說是吧!好了,如果您還記得 ps 這個指令的話,那麼來看一看加入 ps -l 這個功能所顯示出來的訊息吧!
[root @test /root ]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
100 S 0 5624 5606 0 70 0 - 608 wait4 pts/0 00:00:00 bash
000 R 0 6944 5624 0 76 0 - 769 - pts/0 00:00:00 ps注意看到上面那些資訊:
好啦!這裡有兩個奇怪的資訊,一個是 PRI 一個是 NI 這兩個鬼東西!嗯! PRI 還容易理解,就是該程序被 CPU 執行的先後順序啦!所以當 CPU 忙線中的時候,那麼 PRI 值月小的就會被越快執行!那麼 NI 是什麼?呵呵!那個就是 nice 值啦!那麼什麼是 nice 值呢?就是『系統可被執行的修正數值!』如前面所說的,由於 PRI 是越小越快被執行,而由於我們加入 nice 值之後,將使得 PRI 變為:
- UID 代表執行者的身份;
- PID 代表這個程序的代號;
- PPID 代表這個程序是由那個程序發展出來的,亦即是父程序;
- PRI 代表這個程序『可被執行的優先順序』越小越早被執行!
- NI 代表這個程序的 nice 值!
呵呵!如此一來,則當 nice 值為負值的時候,那麼該程序將會提前被執行!就是變的優先處理囉!這個概念需要特別的注意!另外,這裡也需要注意的是:『只有具有 root 權限的身份者,可以將程序的 nice 調為負值』一般而言,我們可以這樣說:
- PRI(new) = PRI(old) + nice
沒錯!就是這樣!底下我們來談一談,如何在:
- 一般使用者可用 nice 值 : 0 ~ 19
- root 管理員可用 nice 值: -20 ~ 19
- 程序一開始就給予一個 nice 值;與
- 改變正執行中的程序之 nice 值
- nice
語法:說明:
[root @test /root ]# nice [-n number] command
參數說明:
-n :就是後面那個 number 即為 nice 值!
範例:
[root @test /root]# nice -n -5 find / -name core > /tmp/core
就如同前面說的, nice 是用來調整程序的執行優先順序!這裡只是一個執行的範例罷了!通常什麼時候要將 nice 值調大呢?
- 一些非重要的程序之進行:例如備份工作!由於備份工作相當的耗系統資源,這個時候就可以將備份的指令之 nice 值調大一些,可以使系統的支援分配的更為公平!
- renice
語法:說明:
[root @test /root ]# renice [number] PID
參數說明:
範例:
[root @test /root]# ps -aux
[root @test /root]# renice 5 234
這個 renice 的功能就不太一樣了!由於 renice 是『將一個正在進行當中的程序的優先順序降低』,所以必須要:
先取得該程序的 PID 才行!
所以囉,通常 renice 都與 ps 相互配合才對!先找處某個程序的 PID 之後,才來重新的設定其 nice 值!
想要知道開機的時候 Linux 偵測主機的訊息嗎?想知道目前有哪些人在你的機器上嗎?想知道目前的時間嗎?!想瞭解最近某個人登入的時間嗎?!嗯!這都需要使用到一些訊息管理的程式呦!像是 last, who, dmesg 等等!
dmesg
語法:說明:
[root @test /root ]# dmesg
參數說明:
範例:
[root @test /root]# dmesg | more
在開機的時候你會發現有很多的訊息出現吧,例如 CPU 的形式、硬碟、光碟型號及硬碟分割表等等。但是訊息都是『刷』的一聲就跑過去了!這些訊息有時候對於系統管理員是很重要的,因為他提供了系統的資訊呀!要看這些訊息你可以用 dmesg 這個指令來觀看!加上 |more 的原因是因為訊息太多了,所以可以加入這個管線指令來使畫面暫停!
uptime
語法:說明:
[root @test /root ]# uptime
參數說明:
範例:
[root @test /root]# uptime
11:27pm up 9 days, 7:12, 1 user, load average: 0.07, 0.12, 0.14
知不知道你的 Linux 主機已經開機多久了?還有,過去 1, 5, 15 分鐘的系統平均 loading 是多少呢?呵呵!使用 uptime 就對了!在上面的例子中,執行 uptime 之後,顯示目前時間是 11:27pm, 而系統已經開機了 9 天又 7:12 之多,目前有一個使用者在線上,過去 1, 5, 15 分鐘系統平均負荷為 0.07, 0.12, 0.14!
who & w
語法:說明:
[root @test /root ]# who
[root @test /root ]# w
參數說明:
範例:
[root @test /root]# who
root pts/0 Aug 2 20:43[root @test /root]# w
8:48pm up 4 days, 5:08, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.1.2 8:43pm 0.00s 0.38s ? -
這是用來視察目前在系統上的使用者指令,你也可以使用 w 這個指令來下達動作。基本上,who 與 w 的功能是相同的,只是 who 僅列出使用者名稱與登入時間,至於 w 則會列出使用者的此外,不知道你有沒有發現,在使用 w 的時候,開頭會有一個訊息,『 8:48m up 4days ....』那個是 uptime 的輸出結果!
- 來源位址(IP):就是 FROM 那一項即是IP;
- 登入時間:即是 LOGIN@ 那一項;
- 工作項目:就是 WHAT 那一項!
whoami
語法:說明:
[root @test /root ]# whoami
參數說明:
範例:
[root @test /root]# whoami
test
如果您是一位稱職的系統管理員,那麼您應該曉得盡量不要使用 root 登入系統這件事吧!那麼如何管理系統呢?!可以使用 su 或者是 sudo 來管理啊!通常我是比較習慣使用 su 啦! OK!那麼您已經是 root 的身份了,不過,可能由於執行程序的關係,常常會忘了到底自己的真實身份,這個時候 whoami 就可以解救你啦!如上面所示,雖然我的身份是 root ,不過,實際上我是 test 的啦!使用 su 變換身份而已!!
last
語法:說明:
[root @test /root ]# last
參數說明:
-number :number 為數字,如果您的登入訊息太多了,可以使用這個指令!
範例:
[test @test /root]# last -5
test pts/0 192.168.1.2 Tue Apr 9 20:34 - 20:35 (00:01)
test pts/0 192.168.1.2 Tue Apr 9 20:14 - 20:30 (00:15)
test ftpd21546 192.168.1.2 Tue Apr 9 02:55 - 03:06 (00:10)
test ftpd15813 192.168.1.2 Tue Apr 9 01:20 - 01:21 (00:00)
test pts/0 192.168.1.2 Mon Apr 8 20:14 - 00:27 (04:13)
wtmp begins Tue Apr 2 01:12:26 2002
要知道有沒有被入侵,常常使用的就是 last 這個指令囉!包括 ftp, telnet, ssh 都會被紀錄在這個訊息當中,不過目前是只有記錄一個月的量!這個指令真的是不錯用的!常常可以發現是否有不正常的人物登入資訊呢!
date
語法:說明:
[root @test /root ]# date [-s] [-R]
[root @test /root ]# date +[format]
參數說明:
-s :用來設定 Linux 主機時間的參數,如果你的主機時間不對,用這個就對啦!
-R :如果發現你的語系是中文的,在純文字模式底下用這個試試看
+[format]
%a :星期幾
%b :月份名稱
%d :日期
%y :年份
:還有很多的參數,請使用 man 自行查詢
範例:
[root @test /root]# date +%a" "%b" "%y
Wed Apr 02
[root @test /root]# date -s 04/10/2002 <==改變日期
[root @test /root]# date -s 02:02:00 <==改變時間
[root @test /root]# clock -r <==檢查 BIOS 裡面的時間
[root @test /root]# clock -w <==將目前 Linux 的時間寫到 BIOS 裡面去!
date 簡單的用法是只能查看時間的,不過,更廣義的用法是可以搭配很多種樣式來進行時間輸出的紀錄!此外,在 Linux 底下要更改時間,呵呵呵呵!也需要使用到 date 呦!不過,千萬記得, date 改完時間後,還要使用 clock 將時間記錄在 BIOS 裡面才算是完成了時間修改呦!
hostname
語法:說明:
[root @test /root ]# hostname
參數說明:
範例:
[test @test /root]# hostname
test.adsldns.org
很簡單吧!就是用來查看你主機名稱的指令就是了!
您或許偶而會發現這樣的問題:咦!我的 Linux 主機怎麼經過一段時間的運作之後,時間會跑掉?而且有的時候,還會跑掉的蠻嚴重的!這是因為我們 Linux 系統的時間記錄器與 BIOS 的時間記錄器,可能與真實的、我們使用的時間有點差異,這種差異在短時間內差異性並不明顯,但若延長到一年、兩年以上,那麼日積月累下來,呵呵!時間差異性甚至可以達到小時?因此,這個時候以網路上合法的而且具有公信力的時間伺服器( time server )來校正你的 linux 主機時間,就有其必要性囉!那麼該如何校正呢?很簡單啦!由於 time server 已經在網路上面可以找到啦,台灣地區可以使用底下這一部 time server :time.stdtime.gov.tw那麼網路校時使用哪一個 port 呢?就是 123 這個 port ,而使用的軟體就是 ntpdate 這一支程式!在 Mandrake 當中,很抱歉的,預設還是沒有安裝這個套件,所以,請趕快將 CD 拿出來,放入 CDROM ,並且 mount 上他,然後以十八章教的 RPM 程式安裝他吧!之後就可以使用囉!基本上,網路校時需要兩個步驟:
所以整個方法只要執行兩行即可搞定:
- 由 time.stdtime.gov.tw 取得最新的時間,並即時更新 Linux 系統時間;
- 更改 BIOS 的時間。
[root @test root]# ntpdate time.stdtime.gov.tw
[root @test root]# clock –w如果還想要讓系統自動去更新時間的話,哈哈!對啦!那個 /etc/crontab 不要忘記了!將底下這一行寫入 /etc/crontab 當中:
10 5 * * 0,3 root /usr/sbin/ntpdate time.stdtime.gov.tw; clock -w這樣一來,每星期三、日的五點,系統就會自動的去更新您 Linux 的時間囉!讚!