一、Linux命令
名稱: 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
名稱:locate 使用權限:所有使用者使用方式: locate [-q] [-d <path>] [--database=< path>] <search string> locate [-r <regeXP>] [--regexp=< regexp>] locate [-qv] [-o <file>] [--output=<file>] locate [-e <dir1,dir2,...>] [-f <fstype1,...>] <[-l <level>] [-c] <[-U ] [-u]> locate [-Vh] [--version] [--help] 說明:
locate 讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立一個包括系統內所有文件名稱及路徑的數據庫,之後當尋找時就只需查詢這個數據庫,而不必實際深入檔案系統之中了。
在一般的distribution 之中,數據庫的建立都被放在contab 中自動執行。一般使用者在使用時只要用
# locate your_file_name
的型式就可以了。參數:
-u -U <dir> 建立數據庫,-u 會由根目錄開始,-U 則可以指定開始的位置。
-e <dir> 將<dir> 排除在尋找的范圍之外。
-l <level> 如果<level> 是1.則激活安全模式。在安全模式下,使用者不會看到權限無法看到的檔案。這會始速度減慢,因為locate 必須至實際的檔案系統中取得檔案的權限資料。
-f <filetype> 將特定的檔案系統排除在外,例如我們沒有到理要把proc 檔案系統中的檔案放在數據庫中。
-q 安靜模式,不會顯示任何錯誤訊息。
-n <num> 至多顯示<num> 個輸出。
-r <reg> 使用正規表達式<reg> 做尋找的條件。
-o <file> 指定數據庫存的名稱。
-d <dir> 指定數據庫的路徑
-h 顯示輔助訊息
-v 顯示更多的訊息
-V 顯示程序的版本訊息范例:
locate chdrv : 尋找所有叫chdrv 的檔案locate -n 100 a.out : 尋找所有叫a.out 的檔案,但最多只顯示100 個locate -u : 建立數據庫
名稱: sync 使用權限: 系統管理者使用方式: sync 說明: Linux 系統中欲寫入硬盤的資料有的時候會了效率起見,會寫到 filesystem buffer 中,這個buffer 是一塊內存空間,如果欲寫入硬盤的資料存於此buffer 中,而系統又突然斷電的話,那麼資料就會流失了,sync 指令會將存於buffer 中的資料強制寫入硬盤中。
名稱:adduser 使用權限:系統管理員使用方式:adduser [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,...]] [-m [-k skeleton_dir] -M] [-p passwd] [-s shell] [-u uid [ -o]] [-n] [-r] loginid 或adduser -D [- g default_group] [-b default_home] [-f default_inactive] [-e default_expire_date] [-s default_shell] 附注:adduser 與useradd 指令為同一指令(經由符號連結symbolic link) 說明:新增使用者帳號或更新預設的使用者資料參數: -c comment 新使用者位於密碼文件(通常是/etc/passwd)的批注資料- d home_dir 設定使用者的家目錄為home_dir ,默認值為預設的home 後面加上使用者帳號loginid - e expire_date 設定此帳號的使用期限(格式為YYYY-MM-DD),默認值為永久有效-f inactive_time 范例:
adduser是增加使用者,相對的,也有刪除使用者的指令,userdel
語法:userdel [login ID]
名稱:su 使用權限:所有使用者使用方式:su [-fmp] [-c command] [-s shell] [--help] [-- version] [-] [USER [ARG]] 說明:變更為其它使用者的身份,除root 外,需要鍵入該使用者的密碼參數: -f 或-- fast 不必讀激活檔(如csh.cshrc 等),僅用於csh 或tcsh -m -p 或--preserve-environment 執行 su 時不改變環境變量-c command 或--command=command 變更為帳號為USER 的使用者並執行指令(command)後再變回原來使用者-s shell 或--shell=shell 指定要執行的shell (bash csh tcsh 等),默認值為 /etc/passwd 內的該使用者(USER) shell --help 顯示說明文件--version 顯示版本信息- -l 或-- login 這個參數加了之後,就好象是重新login 為該使用者一樣,大部份環境變量(HOME SHELL USER等等)都是以該使用者(USER)為主,並且工作目錄也會改變,如果沒有指定USER ,內定是root USER 欲變更的使用者帳號
ARG 傳入新的 shell 參數范例: su -c ls root 變更帳號為root 並在執行ls 指令後退出變回原使用者。su root -f 變更帳號為 root 並傳入-f 參數給新執行的shell。su - clsung 變更帳號為clsung 並改變工作目錄至clsung 的家目錄(home dir)。
名稱:sudo 使用權限:在/etc/sudoers 中有出現的使用者使用方式:sudo -V sudo - h sudo -l sudo -v sudo -k sudo -s sudo -H sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s sudo command 說明:以系統管理者的身份執行指令,也就是說,經由sudo 所執行的指令就好象是root 親自執行參數: -V 顯示版本編號-h 會顯示版本編號及指令的使用方式說明-l 顯示出自己(執行sudo 的使用者)的權限-v 因為sudo 在第一次執行時或是在N 分鐘內沒有執行(N 預設為五)會問密碼,這個參數是重新做一次確認,如果超過N 分鐘,也會問密碼-k 將會強迫使用者在下一次執行sudo 時問密碼(不論有沒有超過N 分鐘) -b 將要執行的指令放在背景執行-p prompt 可以更改問密碼的提示語,其中%u 會代換為使用者的帳號名稱, % h 會顯示主機名稱-u username/#uid 不加此參數,代表要以root 的身份執行指令,而加了此參數,可以以username 的身份執行指令(#uid 為該username 的使用者號碼) -s 執行環境變量中的SHELL 所指定的shell ,或是/etc/passwd 裡所指定的shell -H 將環境變量中的HOME (家目錄)指定為要變更身份的使用者家目錄(如不加-u 參數就是系統管理者root ) command 要以系統管理者身份(或以-u 更改為其它人)執行的指令范例: sudo -l 列出目前的權限sudo -V 列出sudo 的版本信息
名稱:init 使用權限:開機時使用方式:init [0123456Ss] 說明:init 是所有行程(process)的父行程(parent),開機時一定會先從這個指令開始(可以用ps -aux 看看第一個行程就是init),並參考/etc/inittab 檔來完成整個開機程序,共有八個執行層級(runlevel),而改變只能透過telinit 的指令來更改參數: 0 開機執行層級為0 ,用來關閉系統 1 開機執行層級為1 ,用來進行單一使用者模式(single user mode) 4 開機執行層級為4 ,表示進入X window 時的模式 6 開機執行層級為6 ,用來重新開機S 或s 不是直接使用的,配合開機執行層級1 時使用,當加上S 或s 表示開機後不參考 /etc/inittab 檔235 請參照/etc/inittab 檔案內容以及/etc/rc.d/rc2.d,/etc/rc.d/rc3.d, /etc/rc.d/rc5.d 等目錄范例: 由於這並不是讓使用者可以單獨下指令的執行文件,請參照/etc/inittab
名稱: reboot 使用權限:系統管理者使用方式:reboot [-n] [-w] [-d] [-f] [-i] 說明:若系統的runlevel 為 0 或6 ,則重新開機,否則以shutdown 指令(加上-r 參數)來取代參數: -n : 在重開機前不做將內存資料寫回硬盤的動作-w : 並不會真的重開機,只是把記錄寫到/var/log/wtmp 檔案裡-d : 不把記錄寫到/var/log/wtmp 檔案裡(-n 這個參數包含了- d) -f : 強迫重開機,不呼叫shutdown 這個指令-i : 在重開機之前先把所有網絡相關的裝置先停止范例: reboot 重開機。 reboot -w 做個重開機的仿真(只有紀錄並不會真的重開機)。
名稱:halt 使用權限:系統管理者使用方式:halt [-n] [-w] [-d] [-f] [-i] [-p] 說明:若系統的runlevel 為0 或6 ,則關閉系統,否則以shutdown 指令(加上-h 參數)來取代參數:
-n : 在關機前不做將內存資料寫回硬盤的動作-w : 並不會真的關機,只是把記錄寫到/var/log/wtmp 檔案裡-d : 不把記錄寫到 /var/log/wtmp 檔案裡(-n 這個參數包含了-d) -f : 強迫關機,不呼叫shutdown 這個指令-i : 在關機之前先把所有網絡相關的裝置先停止-p : 當關機的時候,順便做關閉電源(poweroff)的動作范例: halt -p 關閉系統後關閉電源。halt -d 關閉系統,但不留下紀錄。
名稱: shutdown
使用權限: 系統管理者
使用方式: shutdown [-t seconds] [-rkhncfF] time [message]
說明: shutdown 可以用來進行關機程序,並且在關機以前傳送訊息給所有使用者正在執行的程序,shutdown 也可以用來重開機。
參數:
-t seconds : 設定在幾秒鐘之後進行關機程序-k : 並不會真的關機,只是將警告訊息傳送給所有只用者-r : 關機後重新開機-h : 關機後停機-n : 不采用正常程序來關機,用強迫的方式殺掉所有執行中的程序後自行關機-c : 取消目前已經進行中的關機動作-f : 關機時,不做fcsk 動作(檢查 Linux 文件系統) -F : 關機時,強迫進行fsck 動作time : 設定關機的時間message : 傳送給所有使用者的警告訊息
名稱:mattrib 使用權限:所有使用者使用方式: mattrib [-a+a] [-h+h] [-r+r] [-s+s] [-/] [-X] msdosfile [ msdosfiles ... ]說明:本程序可用來修改MS_DOS 檔案的屬性。參數: -a/+a 除去/設定備份屬性。-h/+h 除去/設定隱藏屬性。-r/+r 除去/設定只讀屬性。-s/+s 除去/設定系統屬性。-/ 遞歸的處理包含所有子目錄下的檔案。-X 以較短的格式輸出結果。
范例: mattrib a: 列出A 槽MSDOS 格式磁盤上所有檔案的屬性。mattrib -h -s -r a:msdos.sys 除去A 槽磁盤上msdos.sys 檔案的隱藏、系統與只讀屬性。mattrib -r -/ a: *.* 除去A 槽磁盤上包含子目錄下所有檔案的只讀屬性。
名稱:mcopy 使用權限:所有使用者使用方式: mcopy [- b/ptnvmoQOsSrRA] sourcefile targetfile mcopy [-b/ptnvmoQOsSrRA] sourcefile [ sourcefiles... ] targetdirectory mcopy [-tnvm] MSDOSsourcefile 說明: 本程序可用來復制MSDOS 格式檔案到Linux 中,或是由Linux 中復制MSDOS 檔案到磁盤上。mcopy 可復制單一的檔案到所指定的文件名稱,或是復制數個檔案到所指定的目錄之中。來源與目的檔案可為MSDOS 或是Linux 檔案。參數: b 批次模式.這是為大量的檔案復制進行最佳化的選項,但是當在復制檔案過程中產生crash 時,會有安全性的問題產生。/ 遞歸的復制。包含目錄所含檔案與其下所有子目錄中的檔案。p 維持檔案原來的屬性。Q 當復制多個檔案產生錯誤時,盡快結束程序。t 復制純文本文件。將carriage return/line feeds 轉換成 line feeds 字符。n 在覆蓋Linux 檔案時不會出現警示訊息。o 在覆蓋MSDOS 檔案時不會出現警示訊息。m 維持檔案原來的修改時間。當目的檔案已存在,且使用-n 選項時,mcopy 會詢問是否要覆蓋或是另存新檔。范例: mcopy a:autoexec.bat . 將 A 槽磁盤根目錄中的autoexec.bat 復制到目前工作目錄之下。
指令名稱: 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
名稱:mdel 使用權限:所有使用者使用方式: mdel [-v] msdosfile [ msdosfiles ... ] 說明: 本程序可用來刪除MSDOS 格式的檔案。在刪除只讀文件之前會先有提示訊息產生。參數: -v 顯示更多的訊息。范例: mdel a: autoexec.bat . 將A 槽磁盤根目錄中的autoexec.bat 刪除。
名稱:mdeltree 使用權限:所有使用者使用方式: mdeltree [-v] msdosdirectory [msdosdirectories...] 說明: 本程序可用來刪除MSDOS 格式檔案及目錄。mdeltree 會將所指定的目錄與目錄之下的所有檔案與目錄都刪除掉。如果所指定的檔案或目錄不存在,則會傳回錯誤訊息。
參數: -v 顯示更多的訊息。范例: mcopy a:msdosdir . 將A 槽磁盤根目錄中的msdosdir 目錄以下的檔案與目錄都刪除掉。
名稱:mlabel 使用權限:所有使用者使用方式: mlabel [-vcs] drive:[new_label] 說明: 本程序可設定磁盤的卷標 (Label)。如果磁盤上設定過卷標,mlabel 會將他顯示給使用者。如果沒有指定新卷標並且沒有指定c 或s 選項,mlabel 會提示使用者輸入新的卷標。如果直接按下Enter ,就會將原本的卷標刪除。參數: -v 更多的訊息。-c 清除原有的卷標,不出現提示訊息。-s 顯示目前的卷標,不出現提示訊息。范例: mlabel a:newlabel。將A 槽磁盤的卷標更改為newlabel。
名稱:mcd 使用權限:所有使用者使用方式: mcd [msdosdirectory] 說明:可變更mtools 系列指令目前在MSDOS 磁盤上的工作目錄。與MSDOS 的CD 指令不同,mcd 亦可變更工作磁盤。參數: 沒有參數時會傳回目前的工作目錄。范例: mcd a: emp 變更目前工作目錄到a: temp 中。mcd 傳回目前工作目錄。
名稱: mkdir
使用權限:於目前目錄有適當權限的所有使用者
使用方式:mkdir [-p] dirName
說明:建立名稱為dirName 之子目錄。
參數:-p 確保目錄名稱存在,不存在的就建一個。
范例:
在工作目錄下,建立一個名為AAA 的子目錄:
mkdir AAA
在工作目錄下的BBB 目錄中,建立一個名為Test 的子目錄。若BBB 目錄原本不存在,則建立一個。(注:本例若不加-p,且原本BBB目錄不存在,則產生錯誤。)
mkdir -p BBB/Test
名稱: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
touch 也可以制造一個空檔(0 byte),例如DHCP Server 所需要的/etc.dbcpd.leases,dhcpd必須要有這個檔案才能運作正常。[root@/root]#touch /etc/dhcpd.leases [root@/root] #ls –l /etc/dhcpd.less -rw-r—r—l root root 0 Jul 3 05:50 /etc/dhcpd.leases
名稱: 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 :
t 5pm + 2 weeks /bin/ls
明天的17:20 執行/bin/date :
at 17:20 tomorrow /bin/date
1999 年的最後一天的最後一分鐘印出the end of world !
名稱: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 裡。
范例:
把textfile1 的檔案內容加上行號後輸入textfile2這個檔案裡
cat –n textfile1 > textfile2
把textfile1 和textfile2 的檔案內容加上行號(空白行不加)之後將內容附加到textfile3 裡
cat –b textfile1 textfile2 >>textfile3
名稱: crontab
使用權限: 所有使用者
使用方式:
crontab [ -u user ] file
crontab [ -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 即可。
名稱: sleep
使用權限: 所有使用者
使用方式: sleep [--help] [--version] number[smhd]
說明: sleep 可以用來將目前動作延遲一段時間
參數說明:
--help : 顯示輔助訊息--version : 顯示版本編號number : 時間長度,後面可接s、m、h 或d 其中s 為秒,m 為分鐘,h 為小時,d 為日數
例子:
顯示目前時間後延遲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:mm: ss [AP]M) %s : 從1970 年1 月1 日00:00:00 UTC 到目前為止的秒數
%S : 秒(00..61) %T : 直接顯示時間(24 小時制) %X : 相當於%H:%M:%S %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 中﹐這樣下次重新開機時系統時間才會持續抱持最新的正確值。
名稱: 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 來設定這個格式,如此一來就不必每次登入系統都要設定一次。一般設定上,你可以用
' '
表示跳欄,或者是用
'
'
表示換行。每一項資料要用% 做為前導。如果要在字符串中使用百分比符號,就用。(學過C 語言的人大概會覺得很熟悉) time 指令可以顯示的資源有四大項,分別是: Time resources Memory resources IO resources Command info 詳細的內容如下:
o Time Resources
E 執行指令所花費的時間,格式是:[hour]:minute:second。請注意這個數字並不代表實際的CPU 時間。
e 執行指令所花費的時間,單位是秒。請注意這個數字並不代表實際的CPU 時間。
S 指令執行時在核心模式(kernel mode)所花費的時間,單位是秒。
U 指令執行時在使用者模式(user mode)所花費的時間,單位是秒。
P 執行指令時CPU 的占用比例。其實這個數字就是核心模式加上使用者模式的CPU 時間除以總時間。
o 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。對同一個系統來說這是個常數
o IO Resources
F 此程序的主要內存頁錯誤發生次數。所謂的主要內存頁錯誤是指某一內存頁已經置換到置換檔(swap file)中,而且已經分配給其它程序。此時該頁的內容必須從置換檔裡再讀出來。
R 此程序的次要內存頁錯誤發生次數。所謂的次要內存頁錯誤是指某一內存頁雖然已經置換到置換檔中,但尚未分配給其它程序。此時該頁的內容並未被破壞,不必從置換檔裡讀出來
W 此程序被交換到置換檔的次數
c 此程序被強迫中斷(像是分配到的CPU 時間耗盡)的次數
w 此程序自願中斷(像是在等待某一個I/O 執行完畢,像是磁盤讀取等等)的次數
I 此程序所輸入的檔案數
O 此程序所輸出的檔案數
r 此程序所收到的Socket Message
s 此程序所送出的Socket Message
k 此程序所收到的信號( Signal 數量
o 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: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 使用權限: 所有使用者使用方式: uptime [-V] 說明: uptime 提供使用者下面的信息,不需其它參數:
1. 現在的時間
2. 系統開機運轉到現在經過的時間
3. 聯機的使用者數量
4. 最近一分鐘,五分鐘和十五分鐘的系統負載
參數: -V 顯示版本信息。范例: uptime 其結果為: 10:41am up 5 days, 10 min, 1 users, load average: 0.00, 0.00, 1.99
指令名稱: 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 *
名稱: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 [options] user[@address]
說明:finger 可以讓使用者查詢一些其它使用者的資料。會列出來的資料有:
1. Login Name
2. User Name
3. Home directory
4. Shell
5. Login status
6. mail status
7. .plan
8. .project
9. .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
名稱: 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
名稱:cp
使用權限:所有使用者
使用方式:
cp [options] source dest cp [options] source... directory
說明:將一個檔案拷貝至另一檔案,或將數個檔案拷貝至另一目錄。
參數:
-a 盡可能將檔案狀態、權限等資料都照原狀予以復制。-r 若source 中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地。-f 若目的地已經有相同檔名的檔案存在,則在復制前先予以刪除再行復制。
指令:mesg
使用權限: 所有使用者
使用方式: mesg [yn]
說明: 決定是否允許其它人傳訊息到自己的終端機接口
參數:
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 所能了解的數據庫。