linux指令大全

名稱:cat
使用權限:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
說明:把檔案串連接後傳到基本輸出(螢幕或加 > fileName 到另一個檔案)
參數:
-n 或 --number 由 1 開始對所有輸出的行數編號
-b 或 --number-nonblank 和 -n 相似,只不過對於空白行不編號
-s 或 --squeeze-blank 當遇到有連續兩行以上的空白行,就代換爲一行的空白行
-v 或 --show-nonprinting

範例:
cat -n textfile1 > textfile2 把 textfile1 的檔案內容加上行號後輸入 textfile2 這個檔案裏
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的檔案內容加上行號(空白行不加)之後將內容附加到 textfile3

名稱 : cd
使用權限 : 所有使用者

使用方式 : cd [dirName]

說明 : 變換工作目錄至 dirName。 其中 dirName 表示法可爲絕對路徑或相對路徑。若目錄名稱省略,則變換至使用者的 home directory (也就是剛 login 時所在的目錄)。

另外,"~" 也表示爲 home directory 的意思,"." 則是表示目前所在的目錄,".." 則表示目前目錄位置的上一層目錄。

範例 : 跳到 /usr/bin/ :
cd /usr/bin

跳到自己的 home directory :
cd ~

跳到目前目錄的上上兩層 :
cd ../..



指令名稱 : chmod
使用權限 : 所有使用者

使用方式 : chmod [-cfvR] [--help] [--version] mode file...

說明 : Linux/Unix 的檔案存取權限分爲三級 : 檔案擁有者、羣組、其他。利用 chmod 可以藉以控制檔案如何被他人所存取。

把計 :

mode : 權限設定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個羣體(group)者,o 表示其他以外的人,a 表示這三者皆是。
+ 表示增加權限、- 表示取消權限、= 表示唯一設定權限。
r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過爲可執行。
-c : 若該檔案權限確實已經更改,才顯示其更改動作
-f : 若該檔案權限無法被更改也不要顯示錯誤訊息
-v : 顯示權限變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的權限變更(即以遞迴的方式逐個變更)
--help : 顯示輔助說明
--version : 顯示版本

範例 :將檔案 file1.txt 設爲所有人皆可讀取 :
chmod ugo+r file1.txt

將檔案 file1.txt 設爲所有人皆可讀取 :
chmod a+r file1.txt

將檔案 file1.txt 與 file2.txt 設爲該檔案擁有者,與其所屬同一個羣體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt

將 ex1.py 設定爲只有該檔案擁有者可以執行 :
chmod u+x ex1.py

將目前目錄下的所有檔案與子目錄皆設爲任何人可讀取 :
chmod -R a+r *

此外chmod也可以用數字來表示權限如 chmod 777 file
語法爲:chmod abc file

其中a,b,c各爲一個數字,分別表示User、Group、及Other的權限。

r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=7。

範例:
chmod a=rwx file


chmod 777 file

效果相同
chmod ug=rwx,o=x file


chmod 771 file

效果相同





若用chmod 4755 filename可使此程式具有root的權限


指令名稱 : chown
使用權限 : root

使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...

說明 : Linux/Unix 是多人多工作業系統,所有的檔案皆有擁有者。利用 chown 可以將檔案的擁有者加以改變。一般來說,這個指令只有是由系統管理者(root)所使用,一般使用者沒有權限可以改變別人的檔案擁有者,也沒有權限可以自己的檔案擁有者改設爲別人。只有系統管理者(root)纔有這樣的權限。

把計 :

user : 新的檔案擁有者的使用者 IDgroup : 新的檔案擁有者的使用者羣體(group)-c : 若該檔案擁有者確實已經更改,才顯示其更改動作-f : 若該檔案擁有者無法被更改也不要顯示錯誤訊息-h : 只對於連結(link)進行變更,而非該 link 真正指向的檔案-v : 顯示擁有者變更的詳細資料-R : 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更(即以遞迴的方式逐個變更)--help : 顯示輔助說明--version : 顯示版本

範例 :
將檔案 file1.txt 的擁有者設爲 users 羣體的使用者 jessie :
chown jessie:users file1.txt

將目前目錄下的所有檔案與子目錄的擁有者皆設爲 users 羣體的使用者 lamport :
chmod -R lamport:users *


名稱:cp
使用權限:所有使用者

使用方式:

cp [options] source dest
cp [options] source... directory

說明:將一個檔案拷貝至另一檔案,或將數個檔案拷貝至另一目錄。

把計

-a 儘可能將檔案狀態、權限等資料都照原狀予以複製。
-r 若 source 中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地。
-f 若目的地已經有相同檔名的檔案存在,則在複製前先予以刪除再行復制。
範例:
將檔案 aaa 複製(已存在),並命名爲 bbb :
cp aaa bbb

將所有的C語言程式拷貝至 Finished 子目錄中 :
cp *.c Finished



名稱:cut

使用權限:所有使用者

用法:cut -cnum1-num2 filename

說明:顯示每行從開頭算起 num1 到 num2 的文字。

範例:

shell>> cat example
test2
this is test1
shell>> cut -c0-6 example ## print 開頭算起前 6 個字元
test2
this i


名稱 : find
用法 : find
使用說明 :

將檔案系統內符合 expression 的檔案列出來。你可以指要檔案的名稱、類別、時間、大小、權限等不同資訊的組合,只有完全相符的纔會被列出來。

find 根據下列規則判斷 path 和 expression,在命令列上第一個 - ( ) , ! 之前的部份爲 path,之後的是 expression。如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 爲預設 expression

expression 中可使用的選項有二三十個之多,在此只介紹最常用的部份。

-mount, -xdev : 只檢查和指定目錄在同一個檔案系統下的檔案,避免列出其它檔案系統中的檔案
-amin n : 在過去 n 分鐘內被讀取過
-anewer file : 比檔案 file 更晚被讀取過的檔案
-atime n : 在過去 n 天過讀取過的檔案
-cmin n : 在過去 n 分鐘內被修改過
-cnewer file :比檔案 file 更新的檔案
-ctime n : 在過去 n 天過修改過的檔案
-empty : 空的檔案-gid n or -group name : gid 是 n 或是 group 名稱是 name
-ipath p, -path p : 路徑名稱符合 p 的檔案,ipath 會忽略大小寫
-name name, -iname name : 檔案名稱符合 name 的檔案。iname 會忽略大小寫
-size n : 檔案大小 是 n 單位,b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組。-type c : 檔案類型是 c 的檔案。
d: 目錄
c: 字型裝置檔案
b: 區塊裝置檔案
p: 具名貯列
f: 一般檔案
l: 符號連結
s: socket
-pid n : process id 是 n 的檔案

你可以使用 ( ) 將運算式分隔,並使用下列運算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
範例:
將目前目錄及其子目錄下所有延伸檔名是 c 的檔案列出來。
# find . -name "*.c"


將目前目錄其其下子目錄中所有一般檔案列出
# find . -ftype f


將目前目錄及其子目錄下所有最近 20 分鐘內更新過的檔案列出
# find . -ctime -20



名稱:less

使用權限:所有使用者

使用方式:

less [Option] filename

說明:
less 的作用與 more 十分相似,都可以用來瀏覽文字檔案的內容,不同的是 less 允許使用者往回捲動
以瀏覽已經看過的部份,同時因爲 less 並未在一開始就讀入整個檔案,因此在遇上大型檔案的開啓時,會比一般的文書編輯器(如 vi)來的快速。


範例:


指令名稱 : ln
使用權限 : 所有使用者

使用方式 : ln [options] source dist,其中 option 的格式爲 :

[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
說明 : Linux/Unix 檔案系統中,有所謂的連結(link),我們可以將其視爲檔案的別名,而連結又可分爲兩種 : 硬連結(hard link)與軟連結(symbolic link),硬連結的意思是一個檔案可以有多個名稱,而軟連結的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。硬連結是存在同一個檔案系統中,而軟連結卻可以跨越不同的檔案系統。
ln source dist 是產生一個連結(dist)到 source,至於使用硬連結或軟鏈結則由參數決定。

不論是硬連結或軟鏈結都不會將原本的檔案複製一份,只會佔用非常少量的磁碟空間。


-f : 鏈結時先將與 dist 同檔名的檔案刪除-d : 允許系統管理者硬鏈結自己的目錄-i : 在刪除與 dist 同檔名的檔案時先進行詢問-n : 在進行軟連結時,將 dist 視爲一般的檔案-s : 進行軟鏈結(symbolic link)-v : 在連結之前顯示其檔名-b : 將在鏈結時會被覆寫或刪除的檔案進行備份-S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾-V METHOD : 指定備份的方式--help : 顯示輔助說明--version : 顯示版本
範例 :
將檔案 yy 產生一個 symbolic link : zz
ln -s yy zz

將檔案 yy 產生一個 hard link : zz
ln yy xx



名稱:locate
使用權限:所有使用者
使用方式: locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] <[-l ] [-c]
<[-U ] [-u]>
locate [-Vh] [--version] [--help]
說明:
locate 讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立一個包括系統內所有檔案名稱及路徑的資料庫,之後當尋找時就只需查詢這個資料庫,而不必實際深入檔案系統之中了。

在一般的 distribution 之中,資料庫的建立都被放在 contab 中自動執行。一般使用者在使用時只要用

# locate your_file_name

的型式就可以了。 參數:
-u
-U

建立資料庫,-u 會由根目錄開始,-U 則可以指定開始的位置。

-e


排除在尋找的範圍之外。

-l
如果 是 1.則啓動安全模式。在安全模式下,使用者不會看到權限無法看到的檔案。這會始速度減慢,因爲 locate 必須至實際的檔案系統中取得檔案的權限資料。

-f
將特定的檔案系統排除在外,例如我們沒有到理要把 proc 檔案系統中的檔案放在資料庫中。

-q
安靜模式,不會顯示任何錯誤訊息。

-n
至多顯示 個輸出。

-r
使用正規運算式 做尋找的條件。

-o
指定資料庫存的名稱。

-d

指定資料庫的路徑

-h
顯示輔助訊息

-v
顯示更多的訊息

-V
顯示程式的版本訊息 範例:

locate chdrv : 尋找所有叫 chdrv 的檔案
locate -n 100 a.out : 尋找所有叫 a.out 的檔案,但最多隻顯示 100 個
locate -u : 建立資料庫


名稱 : ls
使用權限 : 所有使用者

使用方式 : ls [-alrtAFR] [name...]

說明 : 顯示指定工作目錄下之內容(列出目前工作目錄所含之檔案及子目錄)。


-a 顯示所有檔案及目錄 (ls內定將檔案名或目錄名稱開頭爲"."的視爲隱藏檔,不會列出)
-l 除檔案名稱外,亦將檔案型態、權限、擁有者、檔案大小等資訊詳細列出
-r 將檔案以相反次序顯示(原定依英文字母次序)
-t 將檔案依建立時間之先後次序列出
-A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)
-F 在列出的檔案名稱後加一符號;例如可執行檔則加 "*", 目錄則加 "/"
-R 若目錄下有檔案,則以下之檔案亦皆依序列出

範例:
列出目前工作目錄下所有名稱是 s 開頭的檔案,愈新的排愈後面 :
ls -ltr s*

將 /bin 目錄以下所有目錄及檔案詳細資料列出 :
ls -lR /bin

列出目前工作目錄下所有檔案及目錄;目錄於名稱後加 "/", 可執行檔於名稱後加 "*" :
ls -AF

名稱:more
使用權限:所有使用者
使用方式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
說明:類似 cat ,不過會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能(與 vi 相似),使用中的說明文件,請按 h 。
參數:-num 一次顯示的行數
-d 提示使用者,在畫面下方顯示 [Press space to continue, q to quit.] ,如果使用者按錯鍵,則會顯示 [Press h for instructions.] 而不是 嗶 聲
-l 取消遇見特殊字元 ^L(送紙字元)時會暫停的功能
-f 計算行數時,以實際上的行數,而非自動換行過後的行數(有些單行字數太長的會被擴展爲兩行或兩行以上)
-p 不以捲動的方式顯示每一頁,而是先清除螢幕後再顯示內容
-c 跟 -p 相似,不同的是先顯示內容再清除其他舊資料
-s 當遇到有連續兩行以上的空白行,就代換爲一行的空白行
-u 不顯示下引號 (根據環境變數 TERM 指定的 terminal 而有所不同)
+/ 在每個檔案顯示前搜尋該字串(pattern),然後從該字串之後開始顯示
+num 從第 num 行開始顯示
fileNames 欲顯示內容的檔案,可爲複數個數
範例:
more -s testfile 逐頁顯示 testfile 之檔案內容,如有連續兩行以上空白行則以一行空白行顯示。
more +20 testfile 從第 20 行開始顯示 testfile 之檔案內容。


名稱:mv
使用權限:所有使用者

使用方式:

mv [options] source dest
mv [options] source... directory
說明:將一個檔案移至另一檔案,或將數個檔案移至另一目錄。
參數:-i 若目的地已有同名檔案,則先詢問是否覆蓋舊檔。

範例:

將檔案 aaa 更名爲 bbb :
mv aaa bbb

將所有的C語言程式移至 Finished 子目錄中 :
mv -i *.c



名稱:rm
使用權限:所有使用者

使用方式:rm [options] name...

說明:刪除檔案及目錄。

把計

-i 刪除前逐一詢問確認。
-f 即使原檔案屬性設爲唯讀,亦直接刪除,無需逐一確認。
-r 將目錄及以下之檔案亦逐一刪除。
範例:
刪除所有C語言程式檔;刪除前逐一詢問確認 :
rm -i *.c

將 Finished 子目錄及子目錄中所有檔案刪除 :
rm -r Finished



名稱:rmdir
使用權限:於目前目錄有適當權限的所有使用者

使用方式: rmdir [-p] dirName

說明: 刪除空的目錄。

參數: -p 是當子目錄被刪除後使它也成爲空目錄的話,則順便一併刪除。

範例:

將工作目錄下,名爲 AAA 的子目錄刪除 :
rmdir AAA

在工作目錄下的 BBB 目錄中,刪除名爲 Test 的子目錄。若 Test 刪除後,BBB 目錄成爲空目錄,則 BBB 亦予刪除。
rmdir -p BBB/Test



名稱:split
使用權限:所有使用者

使用方式:split [OPTION] [INPUT [PREFIX]]

說明:

將一個檔案分割成數個。而從 INPUT 分割輸出成固定大小的檔案,其檔名依序爲 PREFIXaa, PREFIXab...;PREFIX 預設值爲 ****x。若沒有 INPUT 檔或爲 ****-,則從標準輸入讀進資料。

匡兜

-b, --bytes=SIZE

SIZE 值爲每一輸出檔案的大小,單位爲 byte。
-C, --line-bytes=SIZE

每一輸出檔中,單行的最大 byte 數。
-l, --lines=NUMBER

NUMBER 值爲每一輸出檔的列數大小。
-NUMBER

與 -l NUMBER 相同。
--verbose

於每個輸出檔被開啓前,列印出偵錯資訊到標準錯誤輸出。
--help

顯示輔助資訊然後離開。
--version

列出版本資訊然後離開。
SIZE 可加入單位: b 代表 512, k 代表 1K, m 代表 1 Meg。

範例:

PostgresSQL 大型資料庫備份與回存:

因 Postgres 允許表格大過你係統檔案的最大容量,所以要將表格 dump 到單一的檔案可能會有問題,使用 split進行檔案分割。


% pg_dump dbname | split -b 1m - filename.dump.



重新載入


% createdb dbname
% cat filename.dump.* | pgsql dbname

名稱:touch
使用權限:所有使用者

使用方式:
touch [-acfm]
[-r reference-file] [--file=reference-file]
[-t MMDDhhmm[[CC]YY][.ss]]
[-d time] [--date=time] [--time={atime,access,use,mtime,modify}]
[--no-create] [--help] [--version]
file1 [file2 ...]


說明:
touch 指令改變檔案的時間記錄。 ls -l 可以顯示檔案的時間記錄。


參數:
a 改變檔案的讀取時間記錄。
m 改變檔案的修改時間記錄。
c 假如目的檔案不存在,不會建立新的檔案。與 --no-create 的效果一樣。
f 不使用,是爲了與其他 unix 系統的相容性而保留。
r 使用參考檔的時間記錄,與 --file 的效果一樣。
d 設定時間與日期,可以使用各種不同的格式。
t 設定檔案的時間記錄,格式與 date 指令相同。
--no-create 不會建立新檔案。
--help 列出指令格式。
--version 列出版本訊息。


範例:


最簡單的使用方式,將檔案的時候記錄改爲現在的時間。若檔案不存在,系統會建立一個新的檔案。

touch file
touch file1 file2

將 file 的時間記錄改爲 5 月 6 日 18 點 3 分,公元兩千年。時間的格式可以參考 date 指令,至少需輸入 MMDDHHmm ,就是月日時與分。

touch -c -t 05061803 file
touch -c -t 050618032000 file

將 file 的時間記錄改變成與 referencefile 一樣。

touch -r referencefile file

將 file 的時間記錄改成 5 月 6 日 18 點 3 分,公元兩千年。時間可以使用 am, pm 或是 24 小時的格式,日期可以使用其他格式如 6 May 2000 。

touch -d "6:03pm" file
touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file
名稱 : at
使用權限 : 所有使用者

使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME

說明 : at 可以讓使用者指定在 TIME 這個特定時刻執行某個程式或指令,TIME 的格式是 HH:MM其中的 HH 爲小時,MM 爲分鐘,甚至你也可以指定 am, pm, midnight, noon, teatime(就是下午 4 點鍾)等口語詞。

如果想要指定超過一天內的時間,則可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分鐘,DD 是第幾日,YY 是指年份。另外,使用者甚至也可以使用像是 now + 時間間隔來彈性指定時間,其中的時間間隔可以是 minutes, hours, days, weeks

另外,使用者也可指定 today 或 tomorrow 來表示今天或明天。當指定了時間並按下 enter 之後,at 會進入交談模式並要求輸入指令或程式,當你輸入完後按下 ctrl+D 即可完成所有動作,至於執行的結果將會寄回你的帳號中。

把計 :

-V : 印出版本編號
-q : 使用指定的佇列(Queue)來儲存,at 的資料是存放在所謂的 queue 中,使用者可以同時使用多個 queue,而 queue 的編號爲 a, b, c... z 以及 A, B, ... Z 共 52 個
-m : 即使程式/指令執行完成後沒有輸出結果, 也要寄封信給使用者
-f file : 讀入預先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案後再一次讀入
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 刪除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已經完成但尚未刪除的指定

例子 :
三天後的下午 5 點鍾執行 /bin/ls :
at 5pm + 3 days /bin/ls

三個星期後的下午 5 點鍾執行 /bin/ls :
at 5pm + 2 weeks /bin/ls

明天的 17:20 執行 /bin/date :
at 17:20 tomorrow /bin/date

1999 年的最後一天的最後一分鐘印出 the end of world !
at 23:59 12/31/1999 echo the end of world !




名稱:cal

使用權限:所有使用者

使用方式:cal [-mjy] [month [year]]

說明:

顯示日曆。若只有一個參數,則代表年份(1-9999),顯示該年的年曆。年份必須全部寫出:********cal 89 將不會是顯示 1989 年的年曆。使用兩個參數,則表示月份及年份。若沒有參數則顯示這個月的月曆。
1752 年 9 月第 3 日起改用西洋新曆,因這時大部份的國家都採用新曆,有 10 天被去除,所以該月份的月曆有些不同。在此之前爲西洋舊曆。

匡兜

-m : 以星期一爲每週的第一天方式顯示。
-j : 以凱撒歷顯示,即以一月一日起的天數顯示。
-y : 顯示今年年曆。

範例:

cal : 顯示本月的月曆。



[root@mylinux /root]# date
Tue Aug 15 08:00:18 CST 2000
[root@mylinux /root]# cal
August 2000
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

[root@mylinux /root]#


cal 2001 : 顯示公元 2001 年年曆。

[root@mylinux /root]# cal 2001
2001

January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24
28 29 30 31 25 26 27 28 25 26 27 28 29 30 31

April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 5 1 2
8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9
15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16
22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23
29 30 27 28 29 30 31 24 25 26 27 28 29 30

July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 1
8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8
15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15
22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22
29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29
30
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1
7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
30 31

[root@mylinux /root]#





cal 5 2001 : 顯示公元 2001 年 5 月月曆。



[root@mylinux /root]# cal 5 2001
May 2001
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

[root@mylinux /root]#





cal -m : 以星期一爲每週的第一天方式,顯示本月的月曆。



[root@mylinux /root]# cal -m
August 2000
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

[root@mylinux /root]#





cal -jy : 以一月一日起的天數顯示今年的年曆。



[root@mylinux /root]# cal -jy
2000

January February
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
1 32 33 34 35 36
2 3 4 5 6 7 8 37 38 39 40 41 42 43
9 10 11 12 13 14 15 44 45 46 47 48 49 50
16 17 18 19 20 21 22 51 52 53 54 55 56 57
23 24 25 26 27 28 29 58 59 60
30 31
March April
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
61 62 63 64 92
65 66 67 68 69 70 71 93 94 95 96 97 98 99
72 73 74 75 76 77 78 100 101 102 103 104 105 106
79 80 81 82 83 84 85 107 108 109 110 111 112 113
86 87 88 89 90 91 114 115 116 117 118 119 120
121
May June
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
122 123 124 125 126 127 153 154 155
128 129 130 131 132 133 134 156 157 158 159 160 161 162
135 136 137 138 139 140 141 163 164 165 166 167 168 169
142 143 144 145 146 147 148 170 171 172 173 174 175 176
149 150 151 152 177 178 179 180 181 182

July August
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
183 214 215 216 217 218
184 185 186 187 188 189 190 219 220 221 222 223 224 225
191 192 193 194 195 196 197 226 227 228 229 230 231 232
198 199 200 201 202 203 204 233 234 235 236 237 238 239
205 206 207 208 209 210 211 240 241 242 243 244
212 213
September October
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
245 246 275 276 277 278 279 280 281
247 248 249 250 251 252 253 282 283 284 285 286 287 288
254 255 256 257 258 259 260 289 290 291 292 293 294 295
261 262 263 264 265 266 267 296 297 298 299 300 301 302
268 269 270 271 272 273 274 303 304 305

November December
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
306 307 308 309 336 337
310 311 312 313 314 315 316 338 339 340 341 342 343 344
317 318 319 320 321 322 323 345 346 347 348 349 350 351
324 325 326 327 328 329 330 352 353 354 355 356 357 358
331 332 333 334 335 359 360 361 362 363 364 365
366

[root@mylinux /root]#




名稱 : crontab
使用權限 : 所有使用者

使用方式 :

crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }
說明 :
crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其權限(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設定自己的時程表。

餐數 :

-e : 執行文字編輯器來設定時程表,內定的文字編輯器是 VI,如果你想用別的文字編輯器,則請先設定 VISUAL 環境變數來指定使用那個文字編輯器(比如說 setenv VISUAL joe)
-r : 刪除目前的時程表
-l : 列出目前的時程表

時程表的格式如下 :
f1 f2 f3 f4 f5 program

其中 f1 是表示分鐘,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執行的程式。
當 f1 爲 * 時表示每分鐘都要執行 program,f2 爲 * 時表示每小時都要執行程式,其餘類推
當 f1 爲 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要執行,f2 爲 a-b 時表示從第 a 到第 b 小時都要執行,其餘類推
當 f1 爲 */n 時表示每 n 分鐘個時間間隔執行一次,f2 爲 */n 表示每 n 小時個時間間隔執行一次,其餘類推
當 f1 爲 a, b, c,... 時表示第 a, b, c,... 分鐘要執行,f2 爲 a, b, c,... 時表示第 a, b, c...個小時要執行,其餘類推

使用者也可以將所有的設定先存放在檔案 file 中,用 crontab file 的方式來設定時程表。
例子 :

每月每天每小時的第 0 分鐘執行一次 /bin/ls :
0 7 * * * /bin/ls

在 12 月內, 每天的早上 6 點到 12 點中,每隔 20 分鐘執行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup

週一到週五每天下午 5:00 寄一封信給 [email protected] :
0 17 * * 1-5 mail -s "hi" [email protected] < /tmp/maildata

每月每天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執行 echo "haha"
20 0-23/2 * * * echo "haha"

注意 :

當程式在你所指定的時間執行後,系統會寄一封信給你,顯示該程式執行的內容,若是你不希望收到這樣的信,請在每一行空一格之後加上 > /dev/null 2>&1 即可。
名稱 : date
使用權限 : 所有使用者

使用方式 :

date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

說明 :

date 可以用來顯示或設定系統的日期與時間,在顯示方面,使用者可以設定欲顯示的格式,格式設定爲一個加號後接數個標記,其中可用的標記列表如下 :

時間方面 :

% : 印出 %
%n : 下一行
%t : 跳格
%H : 小時(00..23)
%I : 小時(01..12)
%k : 小時(0..23)
%l : 小時(1..12)
%M : 分鐘(00..59)
%p : 顯示本地 AM 或 PM
%r : 直接顯示時間 (12 小時制,格式爲 hh:mmscreen.width-300)this.width=screen.width-300'>s [AP]M)
%s : 從 1970 年 1 月 1 日 00:00:00 UTC 到目前爲止的秒數
%S : 秒(00..61)
%T : 直接顯示時間 (24 小時制)
%X : 相當於 %HMS
%Z : 顯示時區

日期方面 :
%a : 星期幾 (Sun..Sat)
%A : 星期幾 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接顯示日期與時間
%d : 日 (01..31)
%D : 直接顯示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第幾天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第幾周 (00..53) (以 Sunday 爲一週的第一天的情形)
%w : 一週中的第幾天 (0..6)
%W : 一年中的第幾周 (00..53) (以 Monday 爲一週的第一天的情形)
%x : 直接顯示日期 (mm/dd/yy)
%y : 年份的最後兩位數字 (00.99)
%Y : 完整年份 (0000..9999)

若是不以加號作爲開頭,則表示要設定時間,而時間格式爲 MMDDhhmm[[CC]YY][.ss],其中 MM 爲月份,DD 爲日,hh 爲小時,mm 爲分鐘,CC 爲年份前兩位數字,YY 爲年份後兩位數字,ss 爲秒數
把計 :

-d datestr : 顯示 datestr 中所設定的時間 (非系統時間)
--help : 顯示輔助訊息
-s datestr : 將系統時間設爲 datestr 中所設定的時間
-u : 顯示目前的格林威治時間
--version : 顯示版本編號

例子 :
顯示時間後跳行,再顯示目前日期 :
date +%T%n%D

顯示月份與日數 :
date +%B %d

顯示日期與設定時間(12:34:56) :
date --date 12:34:56

注意 :

當你不希望出現無意義的 0 時(比如說 1999/03/07),則可以在標記中插入 - 符號,比如說 date +%-H-M-S 會把時分秒中無意義的 0 給去掉,像是原本的 08:09:04 會變爲 8:9:4。另外,只有取得權限者(比如說 root)才能設定系統時間。

當你以 root 身分更改了系統時間之後,請記得以 clock -w 來將系統時間寫入 CMOS 中,這樣下次重新開機時系統時間纔會持續抱持最新的正確值。


名稱 : sleep
使用權限 : 所有使用者

使用方式 : sleep [--help] [--version] number[smhd]

說明 : sleep 可以用來將目前動作延遲一段時間

參數說明 :

--help : 顯示輔助訊息
--version : 顯示版本編號
number : 時間長度,後面可接 s、m、h 或 d
其中 s 爲秒,m 爲 分鐘,h 爲小時,d 爲日數

例子 :
顯示目前時間後延遲 1 分鐘,之後再次顯示時間 :
date;sleep 1m;date



名稱: time
使用權限: 所有使用者

使用方式: time [options] COMMAND [arguments]

說明: time 指令的用途,在於量測特定指令執行時所需消耗的時間及系統資源等資訊。例如 CPU 時間、記憶體、輸入輸出等等。需要特別注意的是,部分資訊在 Linux 上顯示不出來。這是因爲在 Linux 上部分資源的分配函式與 time 指令所預設的方式並不相同,以致於 time 指令無法取得這些資料。

把計

-o or --output=FILE
設定結果輸出檔。這個選項會將 time 的輸出寫入 所指定的檔案中。如果檔案已經存在,系統將覆寫其內容。
-a or --append
配合 -o 使用,會將結果寫到檔案的末端,而不會覆蓋掉原來的內容。
-f FORMAT or --format=FORMAT
以 FORMAT 字串設定顯示方式。當這個選項沒有被設定的時候,會用系統預設的格式。不過你可以用環境變數 time 來設定這個格式,如此一來就不必每次登入系統都要設定一次。
一般設定上,你可以用
t
表示跳欄,或者是用
n
表示換行。每一項資料要用 % 做爲前導。如果要在字串中使用百分比符號,就用 。(學過 C 語言的人大概會覺得很熟悉)
time 指令可以顯示的資源有四大項,分別是:

Time resources
Memory resources
IO resources
Command info

詳細的內容如下:


Time Resources
E 執行指令所花費的時間,格式是:[hour]:minutescreen.width-300)this.width=screen.width-300'>econd。請注意這個數字並不代表實際的 CPU 時間。
e 執行指令所花費的時間,單位是秒。請注意這個數字並不代表實際的 CPU 時間。
S 指令執行時在覈心模式(kernel mode)所花費的時間,單位是秒。
U 指令執行時在使用者模式(user mode)所花費的時間,單位是秒。
P 執行指令時 CPU 的佔用比例。其實這個數字就是核心模式加上使用者模式的 CPU 時間除以總時間。


Memory Resources
M 執行時所佔用的實體記憶體的最大值。單位是 KB
t 執行時所佔用的實體記憶體的平均值,單位是 KB
K 執行程序所佔用的記憶體總量(stack+data+text)的平均大小,單位是 KB
D 執行程序的自有資料區(unshared data area)的平均大小,單位是 KB
p 執行程序的自有堆疊(unshared stack)的平均大小,單位是 KB
X 執行程序間共享內容(shared text)的平均值,單位是 KB
Z 系統記憶體頁的大小,單位是 byte。對同一個系統來說這是個常數


IO Resources
F 此程序的主要記憶體頁錯誤發生次數。所謂的主要記憶體頁錯誤是指某一記憶體頁已經置換到置換檔(swap file)中,而且已經分配給其他程序。此時該頁的內容必須從置換檔裏再讀出來。
R 此程序的次要記憶體頁錯誤發生次數。所謂的次要記憶體頁錯誤是指某一記憶體頁雖然已經置換到置換檔中,但尚未分配給其他程序。此時該頁的內容並未被破壞,不必從置換檔裏讀出來
W 此程序被交換到置換檔的次數
c 此程序被強迫中斷(像是分配到的 CPU 時間耗盡)的次數
w 此程序自願中斷(像是在等待某一個 I/O 執行完畢,像是磁碟讀取等等)的次數
I 此程序所輸入的檔案數
O 此程序所輸出的檔案數
r 此程序所收到的 Socket Message
s 此程序所送出的 Socket Message
k 此程序所收到的信號 ( Signal )數量


Command Info
C 執行時的參數以及指令名稱
x 指令的結束代碼 ( Exit Status )




-p or --portability
這個選項會自動把顯示格式設定成爲:
real %e
user %U
sys %S
這麼做的目的是爲了與 POSIX 規格相容。
-v or --verbose
這個選項會把所有程式中用到的資源通通列出來,不但如一般英文語句,還有說明。對不想花時間去熟習格式設定或是剛剛開始接觸這個指令的人相當有用。

範例:
利用下面的指令
time -v ps -aux

我們可以獲得執行 ps -aux 的結果和所花費的系統資源。如下面所列的資料:
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:mmscreen.width-300)this.width=screen.width-300'>s or mscreen.width-300)this.width=screen.width-300'>s): 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
使用權限: 所有使用者
使用方式: uptime [-V]
說明: uptime 提供使用者下面的資訊,不需其他參數:

現在的時間
系統開機運轉到現在經過的時間
連線的使用者數量
最近一分鐘,五分鐘和十五分鐘的系統負載
參數: -V 顯示版本資訊。
範例: uptime
其結果爲:
10:41am up 5 days, 10 min, 1 users, load average: 0.00, 0.00, 1.99

名稱:chfn

使用權限:所有使用者

用法:shell>> chfn

說明:提供使用者更改個人資訊,用於 finger and mail username

範例:

shell>> chfn
Changing finger information for user
Password: [del]
Name[]:Johnney Huang ### 提供 finger 時的資料
Office[]:NCCU
Office Phone[]: [del]
Home Phone[]: [del]


名稱:chsh

使用權限:所有使用者

用法:shell>> chsh

說明:更改使用者 shell 設定

範例:

shell>> chsh
Changing fihanging shell for user1
Password: [del]
New shell [/bin/tcsh]: ### [是目前使用的 shell]
[del]

shell>> chsh -l ### 展示 /etc/shells 檔案內容
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh



” finger [返回]
名稱: finger
使用權限: 所有使用者

使用方式: finger [options] user[@address]

說明:finger 可以讓使用者查詢一些其他使用者的資料。會列出來的資料有:

Login Name
User Name
Home directory
Shell
Login status
mail status
.plan
.project
.forward

其中 .plan ,.project 和 .forward 就是使用者在他的 Home Directory 裏的 .plan , .project 和 .forward 等檔案裏的資料。如果沒有就沒有。finger 指令並不限定於在同一伺服器上查詢,也可以尋找某一個遠端伺服器上的使用者。只要給一個像是 E-mail address 一般的地址即可。
把計

-l
多行顯示。

-s
單行顯示。這個選項只顯示登入名稱,真實姓名,終端機名稱,閒置時間,登入時間,辦公室號碼及電話號碼。如果所查詢的使用者是遠端伺服器的使用者,這個選項無效。

範例:下列指令可以查詢本機管理員的資料:
finger root

其結果如下:
Login: root Name: root
Directory: /root Shell: /bin/bash
Never logged in.
No mail.
No Plan.




名稱:last

使用權限:所有使用者

使用方式:shell>> last [options]

說明:顯示系統開機以來獲是從每月初登入者的訊息

把計

-R 省略 hostname 的欄位
-num 展示前 num 個
username 展示 username 的登入訊息
tty 限制登入訊息包含終端機代號

範例:

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

這個命令都不會就不要幹算了!呵呵我也不在這裏多費筆墨耽誤大家美好青春了^_^



名稱:passwd

使用權限:所有使用者

使用方式:passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]

說明:用來更改使用者的密碼

參數:
-k

-l

-u

-f

-d 關閉使用者的密碼認證功能, 使用者在登入時將可以不用輸入密碼, 只有具備 root 權限的使用者方可使用.

-S 顯示指定使用者的密碼認證種類, 只有具備 root 權限的使用者方可使用.

[username] 指定帳號名稱.



名稱 : who
使用權線 : 所有使用者都可使用

使用方式 : who - [husfV] [user]

說明 : 顯示系統中有那些使用者正在上面,顯示的資料包含了使用者 ID,使用的終端機,從那邊連上來的,上線時間,呆滯時間,CPU 使用量,動作等等。

把計 :

-h : 不要顯示標題列
-u : 不要顯示使用者的動作/工作
-s : 使用簡短的格式來顯示
-f : 不要顯示使用者的上線位置
-V : 顯示程式版本
名稱:/etc/aliases
使用權限:系統管理者
使用方式: 請用 newaliases 更新資料庫
說明:
sendmail 會使用一個在 /etc/aliases 中的檔案做使用者名稱轉換的動作。當 sendmail 收到一個要送給 xxx 的信時,它會依據 aliases檔的內容送給另一個使用者。這個功能可以創造一個只有在信件系統內纔有效的使用者。例如 mailing list 就會用到這個功能,在 mailinglist 中,我們可能會創造一個叫 [email protected] 的 mailinglist,但實際上並沒有一個叫 redlinux 的使用者。實際 aliases 檔的內容是將送給這個使用者的信都收給 mailing list 處理程式負責分送的工作。

/etc/aliases 是一個文字模式的檔案,sendmail 需要一個二進位格式的 /etc/aliases.db。newaliases 的功能傳是將 /etc/aliases 轉換成一個 sendmail 所能瞭解的資料庫。範例:
# newaliases

下面命令會做相同的事,
# sendmail -bi

相關命令:
mail, mailq, newaliases, sendmail
名稱:mail

使用權限:所有使用者


使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]


說明:
mail 不僅只是一個指令, mail 還是一個電子郵件程式,不過利用 mail 來讀信的人應該很少吧!對於系統管理者來說 mail 就很有用,因爲管理者可以用 mail 寫成 script ,定期寄一些備忘錄提醒系統的使用者。


參數:
i 忽略 tty 的中斷訊號。 (interrupt)
I 強迫設成互動模式。 (Interactive)
v 列印出訊息,例如送信的地點、狀態等等。 (verbose)
n 不讀入 mail.rc 設定檔。
s 郵件標題。
c cc 郵件地址。
b bcc 郵件地址。


範例:


將信件送給一個或以上的電子郵件地址,由於沒有加入其他的選項,使用者必須輸入標題與信件的內容等。而 user2 沒有主機位置,就會送給郵件伺服器的 user2 使用者。



mail [email protected]
mail [email protected] user2



將 mail.txt 的內容寄給 user2 同時 cc 給 user1 。如果將這一行指令設成 cronjob 就可以定時將備忘錄寄給系統使用者。

mail -s 標題 -c user1 user2 < mail.txt



指令:mesg
使用權限 : 所有使用者

使用方式 : mesg [y|n]

說明 : 決定是否允許其他人傳訊息到自己的終端機介面


把計

y : 允許訊息傳到終端機介面上。
n : 不允許訊息傳到終端機介面上 。
如果沒有設定,則訊息傳遞與否則由終端機界面目前狀態而定。

例子 :
改變目前訊息設定,改成不允許訊息傳到終端機介面上 :
mesg n


與 mesg 相關的指令有: talk,write,wall。


名稱:/etc/aliases
使用權限:系統管理者
使用方式: newaliases
說明:
sendmail 會使用一個在 /etc/aliases 中的檔案做使用者名稱轉換的動作。當 sendmail 收到一個要送給 xxx 的信時,它會依據 aliases檔的內容送給另一個使用者。這個功能可以創造一個只有在信件系統內纔有效的使用者。例如 mailing list 就會用到這個功能,在 mailinglist 中,我們可能會創造一個叫 [email protected] 的 mailinglist,但實際上並沒有一個叫 redlinux 的使用者。實際 aliases 檔的內容是將送給這個使用者的信都收給 mailing list 處理程式負責分送的工作。

/etc/aliases 是一個文字模式的檔案,sendmail 需要一個二進位格式的 /etc/aliases.db。newaliases 的功能傳是將 /etc/aliases 轉換成一個 sendmail 所能瞭解的資料庫。

參數:沒有任何參數。 範例:
# newaliases

下面命令會做相同的事,
# sendmail -bi

相關命令:
mail, mailq, newaliases, sendmail



名稱 : talk
使用權限 : 所有使用者

使用方式 :

talk person [ttyname]
說明 : 與其他使用者對談

把計 :

person : 預備對談的使用者帳號,如果該使用者在其他機器上,則可輸入 [email protected]
ttyname : 如果使用者同時有兩個以上的 tty 連線,可以自行選擇合適的 tty 傳訊息

例子.1 :

與現在機器上的使用者Rollaend對談,此時 Rollaend 只有一個連線 :
talk Rollaend


接下來就是等Rollaend迴應,若Rollaend接受,則Rollaend輸入 ****talk jzlee****即可開始對談,結束請按 ctrl+c

例子.2 :與linuxfab.cx上的使用者Rollaend對談,使用pts/2來對談 :
talk [email protected] pts/2


接下來就是等Rollaend迴應,若Rollaend接受,則Rollaend輸入 ****talk [email protected]****即可開始對談,結束請按 ctrl+c

注意 : 若螢幕的字會出現不正常的字元,試着按 ctrl+l 更新螢幕畫面。


名稱 : wall
使用權限 : 所有使用者

使用方式 :

wall [ message ]
使用說明:
wall 會將訊息傳給每一個 mesg 設定爲 yes 的上線使用者。當使用終端機介面做爲標準傳入時, 訊息結束時需加上 EOF (通常用 Ctrl+D)

例子 :

傳訊息"hi" 給每一個使用者 :
wall hi




名稱 : write
使用權限 : 所有使用者

使用方式 :

write user [ttyname]
說明 : 傳訊息給其他使用者

把計 :

user : 預備傳訊息的使用者帳號
ttyname : 如果使用者同時有兩個以上的 tty 連線,可以自行選擇合適的 tty 傳訊息

例子.1 :

傳訊息給 Rollaend,此時 Rollaend 只有一個連線 :
write Rollaend


接下來就是將訊息打上去,結束請按 ctrl+c

例子.2 :傳訊息給 Rollaend,Rollaend 的連線有 pts/2,pts/3 :
write Rollaend pts/2


接下來就是將訊息打上去,結束請按 ctrl+c

注意 : 若對方設定 mesg n,則此時訊席將無法傳給對方

名稱:kill
使用權限:所有使用者

使用方式:

kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
說明:kill 送出一個特定的信號 (signal) 給行程 id 爲 pid 的行程根據該信號而做特定的動作, 若沒有指定, 預設是送出終止 (TERM) 的信號
把計

-s (signal) : 其中可用的訊號有 HUP (1), KILL (9), TERM (15), 分別代表着重跑, 砍掉, 結束; 詳細的信號可以用 kill -l
-p : 印出 pid , 並不送出信號
-l (signal) : 列出所有可用的信號名稱
範例:

將 pid 爲 323 的行程砍掉 (kill) :
kill -9 323

將 pid 爲 456 的行程重跑 (restart) :
kill -HUP 456




名稱:nice
使用權限:所有使用者

使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command [arg...]]

說明:以更改過的優先序來執行程式, 如果未指定程式, 則會印出目前的排程優先序, 內定的 adjustment 爲 10, 範圍爲 -20 (最高優先序) 到 19 (最低優先序)


把計

-n adjustment, -adjustment, --adjustment=adjustment 皆爲將該原有優先序的增加 adjustment
--help 顯示求助訊息
--version 顯示版本資訊
範例:
將 ls 的優先序加 1 並執行 :
nice -n 1 ls

將 ls 的優先序加 10 並執行 :
nice ls將 ls 的優先序加 10 並執行

注意 : 優先序 (priority) 爲作業系統用來決定 CPU 分配的參數,Linux 使用『回合制(round-robin)』的演算法來做 CPU 排程,優先序越高,所可能獲得的 CPU時間就越多。



名稱:ps
使用權限:所有使用者
使用方式:ps [options] [--help]
說明:顯示瞬間行程 (process) 的動態
參數:
ps 的參數非常多, 在此僅列出幾個常用的參數並大略介紹含義
-A 列出所有的行程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細的資訊
-aux 顯示所有包含其他使用者的行程

au(x) 輸出格式 :

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: 該行程的狀態:
D: 不可中斷的靜止 (通悸□□縝b進行 I/O 動作)
R: 正在執行中
S: 靜止狀態
T: 暫停執行
Z: 不存在但暫時無法消除
W: 沒有足夠的記憶體分頁可分配
<: 高優先序的行程
N: 低優先序的行程
L: 有記憶體分頁分配並鎖在記憶體內 (即時系統或捱A I/O)
START: 行程開始時間
TIME: 執行的時間
COMMAND:所執行的指令

範例:

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]
名稱:pstree
使用權限:所有使用者
使用方式:
pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
pstree -V
說明:將所有行程以樹狀圖顯示, 樹狀圖將會以 pid (如果有指定) 或是以 init 這個基本行程爲根 (root) ,如果有指定使用者 id , 則樹狀圖會只顯示該使用者所擁有的行程
參數:
-a 顯示該行程的完整指令及參數, 如果是被記憶體置換出去的行程則會加上括號
-c 如果有重覆的行程名, 則分開列出 (預設值是會在前面加上 *
範例:

pstree

init-+-amd
|-apmd
|-atd
|-httpd---10*[httpd]
%pstree -p
init(1)-+-amd(447)
|-apmd(105)
|-atd(339)
%pstree -c
init-+-amd
|-apmd
|-atd
|-httpd-+-httpd
| |-httpd
| |-httpd
| |-httpd
名稱:renice
使用權限:所有使用者

使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]

說明:重新指定一個或多個行程(Process)的優先序(一個或多個將根據所下的參數而定)

把計

-p pid 重新指定行程的 id 爲 pid 的行程的優先序
-g pgrp 重新指定行程羣組(process group)的 id 爲 pgrp 的行程 (一個或多個) 的優先序
-u user 重新指定行程擁有者爲 user 的行程的優先序
範例:
將行程 id 爲 987 及 32 的行程與行程擁有者爲 daemon 及 root 的優先序號碼加 1 :
renice +1 987 -u daemon root -p 32

注意 : 每一個行程(Process)都有一個唯一的 (unique) id



名稱:top
使用權限:所有使用者

使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

說明:即時顯示 process 的動態

把計

d : 改變顯示的更新速度,或是在交談式指令列( interactive command)按 s
q : 沒有任何延遲的顯示速度,如果使用者是有 superuser 的權限,則 top 將會以最高的優先序執行
c : 切換顯示模式,共有兩種模式,一是隻顯示執行檔的名稱,另一種是顯示完整的路徑與名稱S : 累積模式,會將己完成或消失的子行程 ( dead child process ) 的 CPU time 累積起來
s : 安全模式,將交談式指令取消, 避免潛在的危機
i : 不顯示任何閒置 (idle) 或無用 (zombie) 的行程
n : 更新的次數,完成後將會退出 top
b : 批次檔模式,搭配 "n" 參數一起使用,可以用來將 top 的結果輸出到檔案內

範例:
顯示更新十次後退出 ;
top -n 10

使用者將不能利用交談式指令來對行程下命令 :
top -s

將更新顯示二次的結果輸入到名稱爲 top.log 的檔案裏 :
top -n 2 -b < top.log

名稱:skill

使用權限:所有使用者

使用方式: skill [signal to send] [options] 選擇程序的規則

說明:

送個訊號給正在執行的程序,預設的訊息爲 TERM (中斷) , 較常使用的訊息爲 HUP , INT , KILL , STOP , CONT ,和 0

訊息有三種寫法:分別爲 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的訊息。

一般參數:

-f 快速模式/尚未完成

-i 互動模式/ 每個動作將要被確認

-v 詳細輸出/ 列出所選擇程序的資訊

-w 智能警告訊息/ 尚未完成

-n 沒有動作/ 顯示程序代號

參數:選擇程序的規則可以是, 終端機代號,使用者名稱,程序代號,命令名稱。

-t 終端機代號 ( tty 或 pty )

-u 使用者名稱

-p 程序代號 ( pid )

-c 命令名稱 可使用的訊號:

以下列出已知的訊號名稱,訊號代號,功能。

名稱 (代號) 功能/ 描述

ALRM 14 離開

HUP 1 離開

INT 2 離開

KILL 9 離開/ 強迫關閉

PIPE 13 離開

POLL 離開

PROF 離開

TERM 15 離開

USR1 離開

USR2 離開

VTALRM 離開

STKFLT 離開/ 只適用於i386, m68k, arm 和 ppc 硬體

UNUSED 離開/ 只適用於i386, m68k, arm 和 ppc 硬體

TSTP 停止 /產生與內容相關的行爲

TTIN 停止 /產生與內容相關的行爲

TTOU 停止 /產生與內容相關的行爲

STOP 停止 /強迫關閉

CONT 從新啓動 /如果在停止狀態則從新啓動,否則忽略

PWR 忽略 /在某些系統中會離開

WINCH 忽略

CHLD 忽略

ABRT 6 核心

FPE 8 核心

ILL 4 核心

QUIT 3 核心

SEGV 11 核心

TRAP 5 核心

SYS 核心 /或許尚未實作

EMT 核心 /或許尚未實作

BUS 核心 /核心失敗

XCPU 核心 /核心失敗

XFSZ 核心 /核心失敗

範例:

停止所有在 PTY 裝置上的程序
skill -KILL -v pts/*

停止三個使用者 user1 , user2 , user3
skill -STOP user1 user2 user3



其他相關的命令: kill



名稱:expr

使用權限:所有使用者
### 字串長度

shell>> expr length "this is a test"
14

### 數字商數

shell>> expr 14 % 9
5

### 從位置處抓取字串

shell>> expr substr "this is a test" 3 5
is is

### 數字串 only the first character

shell>> expr index "testforthegame" e
2

### 字串真實重現

shell>> expr quote thisisatestformela
thisisatestformela




名稱: tr

### 1.比方說要把目錄下所有的大寫檔名換爲小寫檔名?

似乎有很多方式,"tr"是其中一種:

#!/bin/sh

dir="/tmp/testdir";
files=****find $dir -type f****;
for i in $files
do
dir_name=****dirname $i****;
ori_filename=****basename $i****
new_filename=****echo $ori_filename | tr [:upper:] [:lower:]**** > /dev/null;
#echo $new_filename;
mv $dir_name/$ori_filename $dir_name/$new_filename
done


### 2.自己試驗中...lowercase to uppercase

tr abcdef...[del] ABCDE...[del]
tr a-z A-Z
tr [:lower:] [:upper:]

shell>> echo "this is a test" | tr a-z A-Z > www
shell>> cat www
THIS IS A TEST

### 3.去掉不想要的字串

shell>> tr -d this ### 去掉有關 t.e.s.t
this

man
man
test
e

### 4.取代字串

shell>> tr -s "this" "TEST"
this
TEST
th
TE




指令:clear
用途:清除螢幕用。

使用方法:在 console 上輸入 clear。


名稱: reset, tset
使用方法: tset [-IQqrs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]

使用說明:

reset 其實和 tset 是一同個命令,它的用途是設定終端機的狀態。一般而言,這個命令會自動的從環境變數、命令列或是其它的組態檔決定目前終端機的型態。如果指定型態是 ? 的話,這個程式會要求使用者輸入終端機的型別。

由於這個程式會將終端機設回原始的狀態,除了在 login 時使用外,當系統終端機因爲程式不正常執行而進入一些奇怪的狀態時,你也可以用它來重設終端機o 例如不小心把二進位檔用 cat 指令進到終端機,常會有終端機不再回應鍵盤輸入,或是迴應一些奇怪字元的問題。此時就可以用 reset 將終端機回覆至原始狀態。選項說明:


-p
將終端機類別顯示在螢幕上,但不做設定的動作。這個命令可以用來取得目前終端機的類別。
-e ch
將 erase 字元設成 ch
-i ch
將中斷字元設成 ch
-k ch
將刪除一行的字元設成 ch
-I
不要做設定的動作,如果沒有使用選項 -Q 的話,erase、中斷及刪除字元的目前值依然會送到螢幕上。
-Q
不要顯示 erase、中斷及刪除字元的值到螢幕上。
-r
將終端機類別印在螢幕上。
-s
將設定 TERM 用的命令用字串的型式送到終端機中,通常在 .login 或 .profile 中用
範例:
讓使用者輸入一個終端機型別並將終端機設到該型別的預設狀態。
# reset ?



將 erase 字元設定 control-h
# reset -e ^B



將設定用的字串顯示在螢幕上
# reset -s
Erase is control-B (^B).
Kill is control-U (^U).
Interrupt is control-C (^C).
TERM=xterm;

名稱:compress

使用權限:所有使用者


使用方式:compress [-dfvcV] [-b maxbits] [file ...]


說明:
compress 是一個相當古老的 unix 檔案壓縮指令,壓縮後的檔案會加上一個 .Z 延伸檔名以區別未壓縮的檔案,壓縮後的檔案可以以 uncompress 解壓。若要將數個檔案壓成一個壓縮檔,必須先將檔案 tar 起來再壓縮。由於 gzip 可以產生更理想的壓縮比例,一般人多已改用 gzip 爲檔案壓縮工具。


參數:
c 輸出結果至標準輸出設備(一般指熒幕)
f 強迫寫入檔案,若目的檔已經存在,則會被覆蓋 (force)
v 將程式執行的訊息印在熒幕上 (verbose)
b 設定共同字串數的上限,以位元計算,可以設定的值爲 9 至 16 bits 。由於值越大,能使用的共同字串就 越多,壓縮比例就越大,所以一般使用預設值 16 bits (bits)
d 將壓縮檔解壓縮
V 列出版本訊息


範例:


將 source.dat 壓縮成 source.dat.Z ,若 source.dat.Z 已經存在,內容則會被壓縮檔覆蓋。



compress -f source.dat



將 source.dat 壓縮成 source.dat.Z ,並列印出壓縮比例。
-v 與 -f 可以一起使用



compress -vf source.dat



將壓縮後的資料輸出後再導入 target.dat.Z 可以改變壓縮檔名。



compress -c source.dat > target.dat.Z



-b 的值越大,壓縮比例就越大,範圍是 9-16 ,預設值是 16 。



compress -b 12 source.dat



將 source.dat.Z 解壓成 source.dat ,若檔案已經存在,使用者按 y 以確定覆蓋檔案,若使用 -df 程式則會自動覆蓋檔案。由於系統會自動加入 .Z 爲延伸檔名,所以 source.dat 會自動當作 source.dat.Z 處理。



compress -d source.dat
compress -d source.dat.Z
名稱: lpd

使用權限: 所有使用者

使用方式:lpd [-l] [#port]
lpd 是一個常駐的印表機管理程式,它會根據 /etc/printcap 的內容來管理本地或遠端的印表機。/etc/printcap 中定義的每一個印表機必須在 /var/lpd 中有一個相對應的目錄,目錄中以 cf 開頭的檔案表示一個等待送到適當裝置的印表工作。這個檔案通常是由 lpr 所產生。

lpr 和 lpd 組成了一個可以離線工作的系統,當你使用 lpr 時,印表機不需要能立即可用,甚至不用存在。lpd 會自動監視印表機的狀況,當印表機上線後,便立即將檔案送交處理。這個得所有的應用程式不必等待印表機完成前一工作。

參數:


-l: 將一些除錯訊息顯示在標準輸出上。
#port: 一般而言,lpd 會使用 getservbyname 取得適當的 TCP/IP port,你可以使用這個參數強迫 lpd 使用指定的 port。

範例:
這個程式通常是由 /etc/rc.d 中的程式在系統啓始階段執行。

名稱 lpq
-- 顯示列表機貯列中未完成的工作 用法

lpq [l] [P] [user]

說明
lpq 會顯示由 lpd 所管理的列表機貯列中未完成的項目。

範例
範例 1. 顯示所有在 lp 列表機貯列中的工作


# lpq -PlpRank Owner Job Files Total Size1st root 238 (standard input) 1428646 bytes




相關函數
lpr,lpc,lpd



名稱: lpr

使用權限: 所有使用者

使用方式:lpr [ -P printer ]
將檔案或是由標準輸入送進來的資料送到印表機貯列之中,印表機管理程式 lpd 會在稍後將這個檔案送給適當的程式或裝置處理。lpr 可以用來將料資送給本地或是遠端的主機來處理。

參數:


-p Printer: 將資料送至指定的印表機 Printer,預設值爲 lp。

範例:
將 www.c 和 kkk.c 送到印表機 lp。
lpr -Plp www.c kkk.c




名稱: lprm
-- 將一個工作由印表機貯列中移除 用法

/usr/bin/lprm [P] [file...]

說明
尚未完成的印表機工作會被放在印表機貯列之中,這個命令可用來將常未送到印表機的工作取消。由於每一個印表機都有一個獨立的貯列,你可以用 -P 這個命令設定想要作用的印列機。如果沒有設定的話,會使用系統預設的印表機。

這個命令會檢查使用者是否有足夠的權限刪除指定的檔案,一般而言,只有檔案的擁有者或是系統管理員纔有這個權限。

範例
將印表機 hpprinter 中的第 1123 號工作移除
lprm -Phpprinter 1123


將第 1011 號工作由預設印表機中移除


lprm 1011

名稱: fdformat

使用權限: 所有使用者

使用方式:fdformat [-n] device

使用說明 :
對指定的軟碟機裝置進行低階格式化。使用這個指令對軟碟格式化的時候,最好指定像是下面的裝置:


/dev/fd0d360 磁碟機 A: ,磁片爲 360KB 磁碟
/dev/fd0h1440 磁碟機 A: ,磁片爲 1.4MB 磁碟
/dev/fd1h1200 磁碟機 B: ,磁片爲 1.2MB 磁碟
如果使用像是 /dev/fd0 之類的裝置,如果裏面的磁碟不是標準容量,格式化可能會失敗。在這種情況之下,使用者可以用 setfdprm 指令先行指定必要參數。

參數:


-n 關閉確認功能。這個選項會關閉格式化之後的確認步驟。

範例:

fdformat -n /dev/fd0h1440

將磁碟機 A 的磁片格式化成 1.4MB 的磁片。並且省略確認的步驟。



名稱: mformat

使用權限: 所有使用者

使用方式:

mformat [-t cylinders] [-h heads] [-s sectors] [-l volume_label] [-F] [-I fsVer-sion] [-S sizecode] [-2 sectors_on_track_0] [-M software_sector_size] [-a] [-X] [-C] [-H hidden_sectors] [-r root_sectors] [-B boot_sector] [-0 rate_on_track_0] [-A rate_on_other_tracks] [-1] [-k] drive:

在已經做過低階格式化的磁片上建立 DOS 檔案系統。如果在編譯 mtools 的時候把 USE_2M 的參數打開,部分與 2M 格式相關的參數就會發生作用。否則這些參數(像是 S,2,1,M)不會發生作用。

參數:

-t 磁柱(synlider)數
-h 磁頭(head)數
-s 每一磁軌的磁區數
-l 標籤
-F 將磁碟格式化爲 FAT32 格式,不過這個參數還在實驗中。
-I 設定 FAT32 中的版本號。這當然也還在實驗中。
-S 磁區大小代碼,計算方式爲 sector = 2^(大小代碼+7)
-c 磁叢(cluster)的磁區數。如果所給定的數字會導致磁叢數超過 FAT 表的限制,mformat 會自動放大磁區數。
-s
-M 軟體磁區大小。這個數字就是系統回報的磁區大小。通常是和實際的大小相同。
-a 如果加上這個參數,mformat 會產生一組 Atari 系統的序號給這塊軟碟。
-X 將軟碟格式化成 XDF 格式。使用前必須先用 xdfcopy 指令對軟碟作低階格式化的動作。
-C 產生一個可以安裝 MS-DOS 檔案系統的磁碟影像檔(disk image)。當然對一個實體磁碟機下這個參數是沒有意義的。
-H 隱藏磁區的數目。這通常適用在格式化硬碟的分割區時,因爲通常一個分割區的前面還有分割表。這個參數未經測試,能不用就不用。
-n 磁碟序號
-r 根目錄的大小,單位是磁區數。這個參數只對 FAT12 和 FAT16 有效。
-B 使用所指定的檔案或是設備的開機磁區做爲這片磁片或分割區的開機磁區。當然當中的硬體參數會隨之更動。
-k 儘量保持原有的開機磁區。
-0 第 0 軌的資料傳輸率
-A 第 0 軌以外的資料傳輸率
-2 使用 2m 格式
-1 不使用 2m 格式

範例:
mformat a:

這樣會用預設值把 a: (就是 /dev/fd0)裏的磁碟片格式化。



名稱: mkdosfs

使用權限: 所有使用者

使用方式: mkdosfs [ -c | -l filename ]
[ -f number_of_FATs ]
[ -F FAT_size ]
[ -i volume_id ]
[ -m message_file ]
[ -n volume_name ]
[ -r root_dir_entry ]
[ -s sector_per_cluster ]
[ -v ]
device
[ block_count ]



說明: 建立 DOS 檔案系統。 device 指你想要建立 DOS 檔案系統的裝置代號。像是 /dev/hda1 等等。 block_count 則是你希望配置的區塊數。如果 block_count 沒有指定則系統會自動替你計算符合該裝置大小的區塊數。

參數:


-c 建立檔案系統之前先檢查是否有壞軌。
-l 從得定的檔案中讀取壞軌記錄。
-f 指定檔案配置表(FAT , File Allocation Table)的數量。預設值爲 2 。目前 Linux 的 FAT 檔案系統不支援超過 2 個 FAT 表。通常這個不需要改。
-F 指定 FAT 表的大小,通常是 12 或是 16 個位元組。12 位元組通常用於磁碟片,16 位元組用於一般硬碟的分割區,也就是所謂的 FAT16 格式。這個值通常系統會自己選定適當的值。在磁碟片上用 FAT16 通常不會發生作用,反之在硬碟上用 FAT12 亦然。
-i 指定 Volume ID。一般是一個 4 個位元組的數字,像是 2e203a47 。如果不給系統會自己產生。
-m 當使用者試圖用這片磁片或是分割區開機,而上面沒有作業系統時,系統會給使用者一段警告訊息。這個參數就是用來變更這個訊息的。你可以先用檔案編輯好,然後用這個參數指定,或是用
-m -
這樣系統會要求你直接輸入這段文字。要特別注意的是,檔案裏的字串長度不要超過 418 個字,包括展開的跳欄符號(TAB)和換行符號(換行符號在 DOS 底下算兩個字元!)
-n 指定 Volume Name,就是磁碟標籤。如同在 DOS 底下的 format 指令一樣,給不給都可以。沒有預設值。
-r 指定根目錄底下的最大檔案數。這裏所謂的檔案數包括目錄。預設值是在軟碟上是 112 或是 224 ,在硬碟上是 512。沒事不要改這個數字。
-s 每一個磁叢(cluster)的磁區數。必須是 2 的次方數。不過除非你知道你在作什麼,這個值不要亂給。
-v 提供額外的訊息
範例:
mkdosfs -n Tester /dev/fd0 將 A 槽裏的磁碟片格式化爲 DOS 格式,並將標籤設爲 Tester

RPM常用命令及RPM中文手冊

rpm 常用命令
1.安裝一個包
# rpm -ivh

2.升級一個包
# rpm -Uvh

3.移走一個包
# rpm -e

4.安裝參數
--force 即使覆蓋屬於其它包的文件也強迫安裝
--nodeps 如果該RPM包的安裝依賴其它包,即使其它包沒裝,也強迫安裝。

5.查詢一個包是否被安裝
# rpm -q < rpm package name>

6.得到被安裝的包的信息
# rpm -qi < rpm package name>

7.列出該包中有哪些文件
# rpm -ql < rpm package name>

8.列出服務器上的一個文件屬於哪一個RPM包
#rpm -qf

9.可綜合好幾個參數一起用
# rpm -qil < rpm package name>

10.列出所有被安裝的rpm package
# rpm -qa

11.列出一個未被安裝進系統的RPM包文件中包含有哪些文件?
# rpm -qilp < rpm package name>

<<RPM中文手冊>>
一、安裝

命令格式:

rpm -i ( or --install) options file1.rpm ... fileN.rpm

參數:

file1.rpm ... fileN.rpm 將要安裝的RPM包的文件名

詳細選項:

-h (or --hash) 安裝時輸出hash記號 (``#'')
--test 只對安裝進行測試,並不實際安裝。
--percent 以百分比的形式輸出安裝的進度。
--excludedocs 不安裝軟件包中的文檔文件
--includedocs 安裝文檔
--replacepkgs 強制重新安裝已經安裝的軟件包
--replacefiles 替換屬於其它軟件包的文件
--force 忽略軟件包及文件的衝突
--noscripts 不運行預安裝和後安裝腳本
--prefix 將軟件包安裝到由 指定的路徑下
--ignorearch 不校驗軟件包的結構
--ignoreos 不檢查軟件包運行的操作系統
--nodeps 不檢查依賴性關係
--ftpproxy 用 作爲 FTP代理
--ftpport 指定FTP的端口號爲

通用選項

-v 顯示附加信息
-vv 顯示調試信息
--root 讓RPM將指定的路徑做爲"根目錄",這樣預安裝程序和後安
裝程序都會安裝到這個目錄下
--rcfile 設置rpmrc文件爲
--dbpath 設置RPM 資料庫存所在的路徑爲

二、刪除

命令格式:

rpm -e ( or --erase) options pkg1 ... pkgN

參數

pkg1 ... pkgN :要刪除的軟件包

詳細選項

--test 只執行刪除的測試
--noscripts 不運行預安裝和後安裝腳本程序
--nodeps 不檢查依賴性

通用選項

-vv 顯示調試信息
--root 讓RPM將指定的路徑做爲"根目錄",這樣預安裝程序和後安裝
程序都會安裝到這個目錄下
--rcfile 設置rpmrc文件爲
--dbpath 設置RPM 資料庫存所在的路徑爲

三、升級

命令格式

rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm

參數

file1.rpm ... fileN.rpm 軟件包的名字

詳細選項

-h (or --hash) 安裝時輸出hash記號 (``#'')
--oldpackage 允許"升級"到一個老版本
--test 只進行升級測試
--excludedocs 不安裝軟件包中的文檔文件
--includedocs 安裝文檔
--replacepkgs 強制重新安裝已經安裝的軟件包
--replacefiles 替換屬於其它軟件包的文件
--force 忽略軟件包及文件的衝突
--percent 以百分比的形式輸出安裝的進度。
--noscripts 不運行預安裝和後安裝腳本
--prefix 將軟件包安裝到由 指定的路徑下
--ignorearch 不校驗軟件包的結構
--ignoreos 不檢查軟件包運行的操作系統
--nodeps 不檢查依賴性關係
--ftpproxy 用 作爲 FTP代理
--ftpport 指定FTP的端口號爲

通用選項

-v 顯示附加信息
-vv 顯示調試信息
--root 讓RPM將指定的路徑做爲"根目錄",這樣預安裝程序和後安裝程序都會安裝到這個目錄下
--rcfile 設置rpmrc文件爲
--dbpath 設置RPM 資料庫存所在的路徑爲

四、查詢

命令格式:

rpm -q ( or --query) options

參數:

pkg1 ... pkgN :查詢已安裝的軟件包

詳細選項

-p (or ``-'') 查詢軟件包的文件
-f 查詢屬於哪個軟件包
-a 查詢所有安裝的軟件包
--whatprovides 查詢提供了 功能的軟件包
-g 查詢屬於 組的軟件包
--whatrequires 查詢所有需要 功能的軟件包

信息選項

顯示軟件包的全部標識
-i 顯示軟件包的概要信息
-l 顯示軟件包中的文件列表
-c 顯示配置文件列表
-d 顯示文檔文件列表
-s 顯示軟件包中文件列表並顯示每個文件的狀態
--scripts 顯示安裝、卸載、校驗腳本
--queryformat (or --qf) 以用戶指定的方式顯示查詢信息
--dump 顯示每個文件的所有已校驗信息
--provides 顯示軟件包提供的功能
--requires (or -R) 顯示軟件包所需的功能

通用選項

-v 顯示附加信息
-vv 顯示調試信息
--root 讓RPM將指定的路徑做爲"根目錄",這樣預安裝程序和後安裝程序都會安裝到這個目錄下
--rcfile 設置rpmrc文件爲
--dbpath 設置RPM 資料庫存所在的路徑爲

五、校驗已安裝的軟件包

命令格式:

rpm -V ( or --verify, or -y) options

參數

pkg1 ... pkgN 將要校驗的軟件包名

軟件包選項

-p Verify against package file
-f 校驗所屬的軟件包
-a Verify 校驗所有的軟件包
-g 校驗所有屬於組 的軟件包

詳細選項

--noscripts 不運行校驗腳本
--nodeps 不校驗依賴性
--nofiles 不校驗文件屬性

通用選項

-v 顯示附加信息
-vv 顯示調試信息
--root 讓RPM將指定的路徑做爲"根目錄",這樣預安裝程序和後安裝程序都會安裝到這個目錄下
--rcfile 設置rpmrc文件爲
--dbpath 設置RPM 資料庫存所在的路徑爲

六、校驗軟件包中的文件

語法:

rpm -K ( or --checksig) options file1.rpm ... fileN.rpm

參數:

file1.rpm ... fileN.rpm 軟件包的文件名

Checksig--詳細選項

--nopgp 不校驗PGP簽名

通用選項

-v 顯示附加信息
-vv 顯示調試信息
--rcfile 設置rpmrc文件爲


七、其它RPM選項

--rebuilddb 重建RPM資料庫
--initdb 創建一個新的RPM資料庫
--quiet 儘可能的減少輸出
--help 顯示幫助文件
--version 顯示RPM的當前版本
附錄:
臺灣Linux方面高手VBird(鳥哥)所寫<<RPM 與 SRPM 套件管理>>
http://linux.ournb.net/index/article.php/310


我補充一下src.rpm包的安裝方法(假定使用root賬戶):

第一種方法 -- 將src.rpm包轉換成rpm包再進行安裝

代碼:
1. rpmbuild --rebuild filename.src.rpm        #生成rpm包
2. cd /usr/src/redhat/RPMS/i386             #在該目錄找到生成的rpm包
3. rpm -Uvh filename.rpm                 #安裝第二種方法 -- 直接生成源碼包再從源碼進行安裝

代碼:
1. rpm -ivh filename.rpm                #生成源碼包
2. cd /usr/src/redhat/SOURCES        #在該目錄找到生成的源碼包
3. cd srcdir                        #進入源碼目錄
4. ./configure && make && make install        #從源碼安裝

linux基本命令:

linux基本命令:
   掛接:單根文件系統使用多個設備的方法。
  mount 設備  掛接點
       dmesg  | grep cd  此命令可看光驅在哪
( 當老師講到這裏的時候機器出了點故障,鼠標不動了,老師用了一個命令就使鼠標復活,第一次感嘆linux的神奇啊~~~~~原來鼠標還可以重起(windows下還真沒想過)
  順便把老師用的命令也抄了下來,呵呵多學了個竅門
   重啓鼠標命令: /etc/rc.d/init.d/gpm restart

解除掛接:umount 掛接點    
軟盤寫法:  /dev/fd0
SCSI硬盤寫法:/dev/sd(a)括號內可以依次排爲b cd…….
USB硬盤SATA硬盤系統都做SCSI硬盤對待。
SCSI光驅寫法:/dev/scd(0)括號內爲數字零依次後派
USB口的光驅也被認爲SCSI光驅。
注:只有先解除掛接可移動設備纔可拿出來

shell和文件系統
shell命令: unix中絕大多數都是外部命令。內部命令常用的有cd  很少
dos      |      shell
dir      |       ls
type     |       cat
cd      |       cd
md      |      mkdir
rd       |      rmdir
del      |      rm
copy    |       cp
ds      |       dear
attrib    |       chown  charp   chmod

此上命令除了cd 全是外部命令


最重要的命令:  man  主題
主題可是shell命令也可是配置文件,還可是C語言函數,但有時shell命令和配置文件相同時打入命令怎麼辦呢,此時用參數
                   man 1.命令 2.系統函數 3.標準庫函數  5.配置文件
例:查passwd      默認   man passwd  會查到
                        man passwd(1)命令
               此時要用 man 5 passwd  可查配置文件

模糊查找(匹配)參數: -k  例 man –k  PPP      和大多數unix中一樣k爲小寫.
第二個重要命令: vi 文件名       (文本編輯器)
     它有三種工作模式,缺省爲”命令模式”
                   輸入I 進入”插入模式”   按ESC回到命令模式
   常見命令: 刪一個字符  x
              刪除一行   dd
              恢復操作   u
              複製       yy   (光標在哪一行將複製哪一行)
              粘貼       p    (粘貼在光標下面)
在vi重複輸入一些命令時,在前面加數字 如插入100個a  則在命令模式下先輸入100 按I輸入一個a 回到命令模式則會有100個a被插入  5行東西重複3次則輸入5yy3p  存盤退出用大寫ZZ  
“末行模式”常見是搜索字符.用”/”在命令模式下輸入
“/”加字符串.在手冊中也能用
“;”會引發末行模式.可用”;”跳到某一行”;”加數字可直接到那
“;”還可用與文件操作
“;q”可直接退出
“;q!”強制退出
“;w”存盤不退出
“;wq”存盤退出
“;recover”可在出現以外後修復文件
“;w 文件名”另存爲


                       
shell命令的敲法:
      命令   參數1   參數2
參數定界:用到” ‘  ‘”(單引號) 用單引號括起的如’abc  def ‘是告訴shell消除語法歧義
如要建一文件叫  jack’s  daily 卻不能用單引號了,此時得用”/”應寫爲: 例如:
touce  jack/’s/ daily
“/”爲轉意字符,取消反斜槓後一個字符的特殊含義

文件系統

在unix中”.”無特殊含義
  unix下區分文件類型的命令   file 
unix下是靠文件的頭部說明來區分文件格式,所以操作系統不會理會擴展名的
(exe文件頭兩字母是MZ)
 mount 直接回車是顯示當前所mount的狀態
df 察看磁盤利用狀態 磁盤分區
du –h +子文件名  檢測文件系統子目錄所佔空間
pwd查看當前子目錄

unix下一個文件可以不可讀而可執行,對於子目錄而言x就是另外一層含義了,稱之爲檢索。對子目錄而言r就是列表權
(經驗:不要安裝基於文本界面的多媒體應用程序)

如何修改權限
 修改屬主:   chown [-R] 新屬主  文件
-R: 將文件夾中的所有文件也更改掉
修改屬組:   charp  [-R]  先屬組  文件
修改權限:   chmod [-R]  新權限  文件
新權限有兩種表示方法:
(1) 直觀:  如  rw-r—r—
數字        6   4  4
            110100100
                   (2)字母法:  如  rw-r--r--
                                      u  g  o
修改文件的訪問權限不必非得是root,文件屬主也可以
windows文件權限策略是ACL,側重與靈活性;  unix文件系統策略是權限位,側重用效率;
linux所有權限都放於一個16位的短整數裏
linux特有功能(ext2 ext3所體現的):列出所有權限命令:lsattr
                                 設置特殊權限:    chattr

連接:
硬連接:硬連接本質使一個文件有兩個文件名和windows不同windows中文件屬性和文件名是放在一塊的,而linux文件名僅是文件名
  命令:ln 原文件名  新文件名 
    硬連接有兩限制:(1)不能給子目錄建硬連接
(2) 不能跨文件系統建硬連接(即不能跨分區)
在unix下刪除一文件的本質是斷開一個硬連接,系統會將硬連接數減一,只要不爲0則保留文件體。
   符號連接:(路徑跳轉)
命令: ln –s 跳轉去向 連接名

  注:建符號連接得用絕對路徑。寫絕對路徑此時可建成的在tem下看到的連接是紅色的。“à”後面指向的僅一個services但在當前目錄即tem下卻沒有這個文件此時便出錯了。
  注: 符號連接可跨分區建立
shell

shell 使用:  在unix下常用的是bash
 功能:(1)自動完成  按tab鍵支持路徑,在參數位置上按tab會補齊文件名,按兩下tab鍵便可看所有系統命令。
(3) 命令歷史:按↑↓ 可查看所打過的歷史命令。注:在用戶文件夾下有個bash-histroy保存有上次使用的命令。
非shell功能, 虛擬終端功能:按alt+f1~f6切換
鼠標粘貼:左鍵選擇右鍵粘貼,可跨終端。
*shell如何運行外部命令:
進程:一個正在運行的程序就是一個進程(不嚴密的解釋)
派生:系統的所有進程都是由一個進程派生出來的
shell有一個父進程當接到一個命令時會產生一個子進程,而shell則進入休眠狀態,等待子進程結束,子進程完後交給父進程一信息,父進程激活等待。
                 後臺運行命令:      命令 &
作業控制:ctrl+z 把前臺作業掛起(暫停)掛起後都會保存在內存中。
        怎麼知道有作業呢?用jobs命令
fg + 作業號 是把後臺暫停作業調回前臺
bg + 作業號 是把前臺作業換到後臺

shell的基本配置:
        bash的基本配置是由配置文件組成的./etc/profile稱之爲shell的全局配置文件。
另外一個文件在個人的目錄下  個人目錄/.bash-profile
還有個文件在個人的目錄下/etc/bashrc  是第二個全局配置文件,保存的是(函數別名等)在個人目錄下也有個配置文件~/.bashrc

  etc下的文件是全局文件,一經修改所有的用戶設置都改了
shell的具體概念:
環境變量:  變量名=變量值    例: LANG=en 是設置語言爲英文
                                  LANG=zh-CN.GB18030是設置語言爲中文
通過設置shell的變量來決定子進程繼承什麼樣的值。
                 {變量名=變量值
                  export  變量名
可簡化爲   export 變量名=變量值   注:export 不能省略,另外此時定義的變量是當前shell的值,一旦註銷便沒有了,想固化得修改profile文件
命令env 可查看所有環境變量裏面有個path非常重要,它定義了shell命令執行的路徑。
Linux下命令執行僅搜索path路徑,不會搜索當前目錄的外部命令,所以在當前目錄下要執行當前目錄中的命令需要加”./”命令。
3.引用變量的值: $變量名  例:export  PATH= $PATH:/etc/xxx
  例如:echo $LANG  echo  回顯命令  可察看LANG的值
  例    export  CMD =ls
               $CMD –l  等於ls –l

shell管道與重定向
    一個進程的缺省標準輸入輸出分爲標準輸入;標準輸出;標準錯誤輸出三個管子。
控制終端:缺省情況下進程的三個管子通向控制端
輸入重定向:命名  <    文件名    解釋:原來要從終端讀取的命令改成從文件讀取。
        例如:cat   <   /etc/hosts    則cat讀取的文件不是從鍵盤而是從hosts文件,cat不知道所要讀取的標準輸入輸出被換成/etc/hosts和cat /etc/hosts不一樣,此時是cat直接讀取hosts
輸出重定向:(1)命名   >     文件名  原來要輸出到終端的命令改成輸出到文件
             (此時叫覆蓋式重定向)
          (2)命名 >>  文件名
               (追加式重定向)
  例如: gcc 命令 0:標準的輸入
                  1:標準輸出
                  2:標準錯誤輸出

解釋linux最精簡的一句話是:linux下一切都是文件。
   管道:匿名管道,unix傳統進程間通信。
寫法: 命令1 | 命令2
命令2處經常出現的是more 或  grep
例如: cat /etc/services  | grep  ‘http’ 意思是包含有http的輸出

磁盤的分區格式化
    分區:  fdisk    -l 列出分區表
            fdisk   磁盤而不是某分區  (/dev/had)
      command  :p 看分區
                  n 新建分區
                  d 刪除分區
                  q 不保存退出
                  w 保存退出
生成文件系統(格式化)
      mkfs  (make file system)
      mkfs  -t  ext2  /dev/hda5
      mkfs  -t  ext2 –j /dev/hda5       :格式化成ext3格式
掛接:mount /dev/hda5

 

shell  腳本本身就是程序,是用shell命令構成的,小規模、結構化、模塊化、程序設計。
命令:  echo   輸出信息用
        read   輸入信息     read+ 變量名
        sleep   休眠        sleep+ 秒數

在終端上算數表達式寫法: echo $ ((1x2x3))這是整數運算不能帶小數點。
/  :除
% :餘
shell腳本格式:
第一行必須是     #!/bin/sh

有三種結構  順序結構   分支結構   循環結構

  順序結構
   wait 命令 保證進程同步 等待一個子進程結束 多個併發就用多個wait
例如:    #!/bin/sh
           echo “1”
           sleep 5&
           echo “3”
           echo “4”
           wait
           echo”5”
 分支結構
          if 判斷  ;  then
                  T塊
                Else
                  F塊
                fi
判斷        test語句   test 表達式 =  [表達式]
表達式進行文件判斷   -f  文件名(檢測該文件是否存在且爲普通文件
                     -d 目錄名
                     -r  可讀
                     -w 可寫
                     -x 可執行


例如:
        #!/bin/sh
        echo “file”
        read  FileName
        if  [-f $FileName]; then
             echo “yes”
          else
         echo “no”
  fi

字符串比較   相等    串A =串B
             不等    串A!=串B
             -z   判斷字符串是否爲零 空爲真 非空爲假
 數值比較: 大於 等於 小於  不等於
       a > b       $A –gt $B
       a≥b       $A –ge $B
       a≤b       $A –lt $B
       a=b        $A –le $B
       a≠b       $A –ne $B
 邏輯比較: 條件A –a  條件B(與)
            條件A-o 條件B  (或)
           !條件            (非)
例如:
        #!/bin/sh
        read MARK  <  /proc/sys/net/ipv4/ip_forward
        echo  $MARK
         if  [ $MARK = “0” ]; then
           else  echo “host”
                echo “GATEWAY”
         fi

‘ ‘ 反單引號: 如果反單引號後面有語句則將裏面的語句運行完後將結果替換此處
      例如:
       #!/bin/sh
       u=id –u
        if  [$u = ‘0’] ; then
                echo “hello”
         else
                echo “permission denied”
        fi

    

再例如:
      #!/bin/sh
      echo  “username”
      read  userNAME
     MARK = ‘cat /etc/passwd | grep ‘$userNAME:’
      積極if  [ -z $ MARE] ; then
                echo “NO”
             else
                echo “YES”
           fi

多分支結構
           case  字符串   in
串1) 塊1
       ;;
串2) 塊2
       ;;
 .
 .
 .
 *)
      esac
例如:
    #!/bin/sh
        echo  “command”
          read  CMD
         case $CMD  in
       start)
                 /etc/rc.d/init.d/named  start
                ;;
       stop)
                /etc/rc.d/init.d/named  stop
                ;;
       estart)
               /etc/rc.d/init.d/named stop
               /etc/rc.d/init.d/named start
                ;;
               *)
                echo  “usage : $0 {start|stop|restart}
                ;;
            esac

*知識點:  . 腳本  讓shell不打開子進程,在當前shell進程中運行腳本
     看腳本切忌一行一行的看,要一層一層的看,就像剝玉米.
                     Shell腳本
循環  1)當形循環
      2)條件循環
   while  判斷;  do
          循環體
   done
例如:
     #!/bin/sh
       i = 0
while  [ $i –lt $n] ; do
      j=0
      while [ $j –lt $ (($i+1))] ;  do
        echo “/*”
          j=$(($j+1))
        done
       echo
      i=$(($i+1))
    done
定時循環  00:00:00: 1970-01-01 utc   稱之爲unix元年
       data +%s 是取從unix元年至少過了多少秒
       date +%H:%M:%S    顯示時分秒格式


例如:
            #!/bin/sh
       intime = ‘date +%S’ –le $ [ (intime+5)] ; do
            echo “.”          ##echo後面加-n 輸出就不回車了,橫向輸出
        done
   利用date命令可以方便的實現定時循環
   


shell風格的循環     for 循環       (枚舉循環)
格式       for   變量名  in  值列表  ;  do
                 循環體
            done
##值列表:核心部分,一系列由空格分開的字符串
例如:   #!/bin/sh
         for n in asd 4r3 56h er34 657 tr ger ; do
            echo  $n
         done

 

 要自動下載列表中的東西編shell的
    #!/bin/sh
             cd /tmp/dl

      for url in  cat /etc/urls ; do
            wget $url
          done
            >/etc/urls

補充知識:     參數傳遞
      命令  參數1  參數2 …………
    例如:
          #!/bin/sh
             n=$1
              i=0
            while ($i-lt $n); do
               echo    “xxxx”
                ii= $ (($$+1))
                  done
      $0       $0就是命令本身

Linux系統管理
1. 用戶管理
添加賬戶   useradd 用戶名
           passwd 用戶名
groupadd   組名              usedel    -r    用戶名
  /etc/group          /etc/passwd            /etc/shadow            三個重要文件
group 文件  格式:  組名:x :組ID:組成員
passwd文件 格式:  用戶名:x:用戶ID:組ID::用戶目錄:shell
 用戶在passwd文件中體現的組關係稱爲用戶組屬組,而在group組中體現的是額外組。
   false:運行起來就是個恆假。正確利用false給用戶,將false添加到/etc/false下用戶名字後這樣用戶就被拒之門外。如mail用戶 通過修改用戶的shell來限制用戶登陸提高網絡安全性。
   top命令:察看機器負載情況
   which命令:查看外部命令的路徑
top被弄成用戶shell時切記在linux下可用,因在linux下top是安全模式的,而在其他unix中並不一定安全,通過敲擊熱鍵可能會打出一shell。

 shadow文件  shadow裏面的口令是散列,散列是不可逆的


批量添加150個用戶      u001—u150

#!/bin/sh
 i=1
  while [$i–le 150] ; do
                if [ $i -lt  10] ; then
                uname =u00$i
   else
                uname=u$i

     fi
             useradd $uname
      i = $(($i+1))
done

   passwd 命令規定只能在終端上手動輸入,只有用stdin參數便可解決
作業: 從一表中將已知用戶名導入useradd

 

 

                 網絡配置
linux 下有兩套網絡配置,第一套爲BSD方式,另一套是linux方式。linux中高級網絡功能只能用linux方式。
   BSD方式:1.查看  ifconfig   網卡名     BSD中必須指定網卡名
              註釋:
                   collisions 衝突             txqueuden  發送包的長度
                網卡工作模式       mii-tool   媒體無關接口
   ethtool+網卡名    查看命令更詳細(需要網卡驅動支持)
   netstat –r  查看路由
查看網絡連接狀態
              netstat    -ant   查看TCP的所有網絡連接
                         -anu   查看UDP的所有套接字

 一條TCP連接會產生兩個套接字,兩臺機器均開。
 ARP  -n    -n意思是不要進行反解 不轉成名字
  查看DNS  cat /etc/resolv.conf
 
         2.配置IP 
                ifconfig  網卡名   ip地址


配置路由   route add   -net  網絡地址  netmast x.x.x.x  gw 網關
           route add   -host 網絡地址  netmast x.x.x.x  dev 網卡
           route del   -net  網絡地址  netmast x.x.x.x  gw 網關
           route del   -net  網絡地址  netmast x.x.x.x  dev 網卡
缺省寫法: route add  default gw 網關
           route add  default dev網卡
   靜態ARP     arp  -s  IP地址  MAC地址

 


linux 方式:    
ip 命令
 
         ip addr show  查看IP地址 簡寫爲 ip ad sh
         ip route sh    查看路由    簡寫爲 ip ro sh
         ip neigh sh    查看靜態ARP  簡寫爲 ip ne  sh
ipv6中取消了ARP  改用ICMP


具體配置:
         ip  ad add dev ip地址/掩碼長度
         ip route add ip地址/掩碼長度  dev 網卡
      ip route  add ip地址/掩碼長度   via  網關地址

 激活/禁止某網卡
        ifconfig  dev   down/up
   linux下的:
         ip link  set up dev eth0
         ip link  set down dev eth0


此設置都是臨時的,固化網絡配置,在linux下 主機名/缺省網關: 修改路徑
/etc/sysconfig/network
        如果修改主機名順便把hosts文件也得改    /etc/hosts否則有時服務會啓動時掛起死等~~~~~~~~~~~~~~~~


   固化IP 地址   /etc/sysconfig/network-scripts下的ifcfg-網卡名

例如: /etc/sysconfig/network-scripts/ifcfg-eth0
         bootprotocol= static  ##如果用動態IP則改成DHCP
         ONBOOT=yes           ##啓動時激活,設置思想:作爲外網網卡應該爲NO,因防火牆啓動之前將網卡先期啓動會有被攻擊的危險
        


靜態ARP固化 
         /etc/ethers
        寫法:    mac  ip   例如 : 01:02:03:04:05:06  10.0.0.2
  (小知識點:
萬用腳本:/etc/rc.local 不管什麼命令只要加在此,下次開機後便會自動運行,相當於autoexec.bat。在用戶登陸之前便已經運行,注:在此文件中加命令時不可阻塞,如果命令執行時間過長則加“$”將其弄到後臺執行。

 

 

 

 

 

 

三.計劃任務  在linux和unix下是cron服務來實現的,每隔一分鐘檢查一次任務列表。
 
/etc/crontab
 

crontab 命令  -l (list)
-e (edit)
寫時間格式:時分日月周  命令 

例如:
      05 5 * * 1,3,5 ##每週一三五運行
技巧:計劃任務可用”,”“_””/”給分開
如果計劃任務不執行此時主要原因是路徑不對,看crontab便可知,PATH寫的便是,第二原因是終端:不能讀標準輸入和寫標準輸出,但可用重定向往文件中寫可以,不能使用終端如果要修改crontab文件則需要先停止cron服務。
       /etc/rc.d/init.d/crond stop
      修改~~~~~~~~~~~~~~~~~
      /etc/rc.d/init.d/crond  start
linux配置: 四 top 命令詳解&進程管理
        
top 命令查看系統的資源狀況
   load average  表示在過去的一段時間內有多少個進程企圖獨佔CPU
   zombie  進程 :不是異常情況。一個進程從創建到結束在最後那一段時間遍是殭屍。留在內存中等待父進程取的東西便是殭屍。任何程序都有殭屍狀態,它佔用一點內存資源,僅僅是表象而已不必害怕。如果程序有問題有機會遇見,解決大批量殭屍簡單有效的辦法是重起。kill是無任何效果的
   stop模式:與sleep進程應區別,sleep會主動放棄cpu,而stop是被動放棄cpu ,例單步跟蹤,stop(暫停)的進程是無法自己回到運行狀態的。
   cpu states :
nice: 讓出百分比           irq :中斷處理佔用
idle:空間佔用百分比        iowait:輸入輸出等待(如果它很大說明外存有瓶頸,需要升級硬盤(SCSI))

   Mem: 內存情況 
          設計思想:把資源省下來不用便是浪費,如添加內存後free值會不變,buff值會增大。    判斷物理內存夠不夠,看交換分區的使用狀態。


ps命令  列進程。列出所有進程
 ps ax     :tty值爲“?”是守護進程,叫deamon 無終端,大多系統服務是此進程,內核態進程是看不到的,例木馬
看進程樹,以樹形方式現實進程列表敲  ps  axf   
         init是1號進程,系統所有進程都是它派生的,殺不掉
  ps axm   :會把線程列出來
  在linux下進程和線程是統一的,是輕量級進程的兩種方式。
  ps axu  :顯示進程的詳細狀態。
         vsz:說此進程一共佔用了多大物理內存。
         rss:請求常駐內存多少
 終止進程:   kill  pid       本質是協商退出!(並不是強制退出)
              全:     kill  -信號    pid
kill –KILL  pid    是強制退出。
 例如編寫一kill殺不掉的程序
#!/bin/sh
     while true j do
           echo –n “.”
           sleep 1
   done
#!/bin/sh
    trap “”15    ##捕獲15號進程,kill就是15號進程
   while true j do
    echo  -n “.”
    sleep 1
    done
修改進程優先級:
    nice 命令  每個進程都有優先權,權值越小優先級越高。
    nice –調整值  命令               ##範圍“-20~19”
linux圖形界面的優先級並不是最高的,它僅是一進程
  nice命令在root下可隨意調整,在普通用戶狀態下只能調低不能提高,不過還是可以恢復回去的。
  侷限性:必須敲命令之前敲nice ,它無法更改已經運行的程序的優先級。
如果要更改已經運行的用     renice   調整值   pid 
   即在線調整。
killall 命令:  殺死一系列進程,即殺死一系列由一個相同命令產生的進程例如killall   fam
killall是根據命令名來殺的,kill以pid 來區別。
    在top 裏面可以直接殺死進程,按“K“輸入PID可殺
     按“R“可調整優先級
 

     BSDunix 定義了32個信號         linux定義了64個信號。

 

 

 


 
五 啓動管理      
        啓動順序:  BIOS à MBR -> 啓動扇區
MBR : 掃描分區表看哪個是可啓動分區,再將那個扇區放入內存。
GRUB有兩種裝法: 1. MBR 2.啓動扇區


GRUB有兩個基本技巧:
        1. 單用戶啓動模式:  見到GRUB啓動菜單時按“e“選”“kernel“打頭的那一行,再按“e”,然後在/  rhg後面加空格+“1” 再按“b”便以單用戶模式啓動了,輸入init 3便進入正常啓動模式。
在單用戶模式下可以更改root口令,有很大危險。
防護方法: 給grub加口令
      vi   /etc/grub.conf     ##在timeout後添加一行
         password=1234567     ##密碼
使生效:敲grub回車   等待一會  再敲quit
2. GRUB—> linux內核 -> init進程 ->1.進程指令運行級
2./etc/rc.local
3.虛擬終端

         init配置文件     /etc/inittab
裏面有一說明  0 –halt
1- single
3- full mutiluser
5- X11
        id:5:initdefault     ##缺省進入5   X11模式
        si::sysinit:/etc/rc.d/rc.sysinit               ##系統啓動以後調用的第一個腳本,即init進程所調用的
         trap           ctrl – alt –delete
ca:ctrlaltdel:/bin/   
在文字界面下敲init –q 來使配置 立即生效

注:屏蔽三鍵熱啓動是非常重要的
虛擬終端的添加/減少也在此修改(數量修改)
如果想把linux弄成指紋識別的替換掉getty和bgin即可。

 

 

 

 

六文件包管理
   
文件包有    RPM包    源碼包    二進制包

rpm包格式:  軟件名-版本.平臺.rpm
http://rpmfind.net幾乎可以搜索到所有的rpm包

rpm包的安裝:   rpm  - i  軟件名.rpm  
rpm  -i –nodeps  軟件名.rpm  ##不考慮依賴關係的安裝
檢查某個rpm包是否安裝用此命令: rpm –qa | grep 包名
刪除已安裝rpm   rpm  -e
強制刪除:       rpm –e –nodeps  軟件名

 源碼包:
格式:  軟件名-版本.tar.gz/軟件名-版本.tar.bz2
在進行源碼處理的時候都要將源碼拷在此處:/usr/load/src
解包:
       tar –zxf  名稱    ##gz解壓
       tar –jxf  名稱    ##bz2的解壓
運用:
 進源碼包 à第一步      ./configure    ##配置
            第二步      make           ##編譯
            第三步      makeinstall    ##安裝
大多書軟件都安裝到了/usr/local下
二進制包:
大多數都給製成一可執行文件,直接運行即可,而大多數都要求在X11下安裝
例:java虛擬機的安裝     (不是開放源碼的包)

 

 

 

 

 

 

 

 

GUI
linux下的圖形界面和windows圖形界面的區別有哪些
linux X是一協議,規定了unix下圖形終端,至今爲X11R6  用XFree86軟件包來實現的,分爲圖形終端和圖形主機,圖形終端爲X服務器
大寫X回車便啓動一個圖形終端,監聽6000端口
X協議是可以基於TCP工作的,也可不基於TCP工作
XFree86提供了一個完整的服務器和幾個常用的基本程序
主機配置à在系統設置->登陸屏幕->把XDMCP啓用,註銷一次
主機   netstat –anu  查看177/udp
終端上敲: X –query 10.0.0.1回車
如廣播域中有好幾臺X主機則用X –broadcast
在文字界面想進如圖形界面敲 init5
 快捷鍵
       ctrl + alt + “ +”
                 “-”可動態調整分辨率
    ctrl + alt + “←”可強制退出圖形界面,在linux下X也僅僅是一個進程。
    ctrl + alt + “F1~~~F6”回到文字界面

 

 

 

 

 

 

 

 

 

 

 

 

 

8硬件管理
  查看CPU類型:   /proc/cpuinfo
  查看pci設備:   lspci  表中能看到但linux不一定能驅動
  查看usb設備:   lsusb   -v  顯示詳細列表,甚至電壓都有
  設備驅動情況: dmesg
在proc目錄下有很多常用命令,在此還有以進程號爲名的目錄,可在目錄中查看進程路徑,在純unix中僅有以進程名的子目錄,在linux中多些系統配置
9.磁盤配額
基本要點:1.針對某個分區(ext2、ext3、reiser、…fat不支持)2.對於塊的使用/文件個數限額
步驟:1.不考慮限額情況下把分區掛好
      2.進入掛接點 做 : 目的: 對u1限10M  1000個文件。
對兩個文件    touch  aquota.user    aquota.group  加個“a”即高級
將兩個文件屬性改成600    chmod 600 aquota.user aquota.group
     3.修改etc下的fstab   vi /etc/fstab
    在hda5這一行的defaults後面加一逗號寫上usrquota,grpquota ##基於用戶和組的限額。
     4.重新掛接該點  mount  -  o remount /home ##不關機的前提下重新掛接一次
     5.啓用限額    quotacheck –u –g /home  ##意思是啓用之前檢查此點的使用情況(經驗:做限額要拿新分區來做)
                    quotaon   -u –g /home(前五步是一次性的做完即好)
     6.設置限額     edquota –u u1  回車後出現一表
         解釋表:
                block – 以塊爲單位,已用了多少        
 soft/hard   軟/硬限額
 inodes    文件實體
修改後存盤退出即可。

edquota命令還有一種非交互性的
        edquota –p 原型用戶  -u 用戶名  ##即將原型擁護的限額複製給新用戶。

 

 

 

 

 


10.日誌管理
1./var/bg/messages  此爲主日誌文件。注:出現服務器異常時要去看日誌文件,調試服務器失敗第一反應應去查看日誌,而不是重裝系統
2.syslog服務   命令:  logger   例如:logger hello 便向日志文件添加一行“hello”
日誌配置文件:/etc/syslog.conf
   格式:   消息分類     消息去向
來源.級別    /var/log/
常用技巧:就地打印日誌  將日誌寫到/dev/lp0    行式打印機打印出去
  *遠程日誌:       syslog服務器
配置syslog服務器
例如:  10.0.0.1爲syslog服務器        10.0.0.111 爲客戶機
步驟: 1.服務端配置
vi /etc/sysconfig/syslog       
          sysLOGD_OPTIONS = “-r –m 0”   ## -r 意思是接受遠程的日誌
        重起/etc/rc.d/init.d/syslog    restart
       2.客戶端配置
          vi /etc/syslog.conf
          在消息去向處添加  @10.0.0.1 
          存盤退出重起服務
          /etc/rc.d/init.d/syslog  restart
       (知識點:直接查看日誌尾部:    tail   /var/log/messages)


日誌服務使用的端口是:514/udp
syslog日誌服務器端不能根據源地址過濾,爲了防止外網向日志服務器寫垃圾信息要在網絡拓撲中解決,網關上做限制外網訪問514端口。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章