我的Linux 之路(轉)
我的Linux 之路(轉)[@more@]沒上上什麼好大學!選擇了計算機專業-學習WIN2003-畢業了-失望了(沒一個像樣的工作555)
WINDOWDS下人才已經過剩了,我選擇了LINUX枯燥的系統(以前是這麼想的).想學好LINUX 的給大家幾點建議!
首先希望想學Linux的朋友能夠忘記Windows2000,最起碼忘記Windows下的磁碟機代號、應用程式等基礎的東西,其次要深刻明白Linux 和Windows是2個不同的系統平臺,可以去對比著學習,但不要直接拿Windows那套東西直接套用到Linux學習中。
學習幾點方向(就業方向):
一、桌面系統
二、核心原始碼學習。
三、系統管理
四、應用開發
五、伺服器領域
六、系統整合
我的LINUX 之路!!!!!!!!!(二)
Linux 系統命令精通指南(初級)
隨著Linux在我國的持續升溫,想學習它的人也越來越多。但是絕大多數的人早已習慣了傻瓜式操作的Windows,要他們一下子就適應Linux的操作,確實有很大的困難。特別是無數的Linux命令,對於那些連DOS都沒有接觸過的人來說,實在是不可忍受,這就為Linux在我國的推廣帶來了很大的侷限性。因此在絕大多數情況下,Linux都是以一種高階作業系統的姿態出現在我們面前。好在近幾年我國政府的大力支援,以及世界各硬體和軟體廠商在我國對Linux的大力推廣,Linux已經取得了很大的成功。而且絕大多數版本的Linux都已經支援中文。更可喜的是它的X Windows也已經做得非常漂亮實用,這對於剛從Windows轉向Linux學習的人來說,不但降低了學習的門檻,而且有助於提高他們學習Linux 的積極性。在X Windows下我們已經可以完成大多數的操作,只需用命令來完成少量的工作。這對於Linux的學習有很大的幫助。本文就以使用最廣泛的RedHat Linux為例給大家講一講Linux的基本配置。
1、新增使用者
新安裝的Linux一般只有一個使用者,即根使用者,也就是系統管理員。他對系統有無限的權力,可以更改或刪除任意檔案,因此稍有不慎就可能破壞系統。比如root只要輸入一條簡單的命令“rm –fr /”就可以刪除系統內的所有檔案,其中“rm”即刪除檔案命令,“-f”引數即強制,“-r”用於刪除指定目錄中的檔案,“/”就是指根目錄,整條命令就是強制刪除系統中所有檔案,可見其破壞性之大。還有其他的誤操作也可能給系統造成嚴重的破壞,因此為了安全起見,平常的操作我們最好不要以“root”身份登入,這就需要新建一個使用者。新建使用者可以在shell下用命令建立,也可以像Windows一樣在圖形視窗中建立。在shell下只要一條簡單的命令就可以建立一個使用者。比如新建使用者為text,我們只要按如下步驟操作即可:在桌面單擊右鍵,選擇“新建終端”即進入shell,然後輸入 “adduser text”按Enter鍵後,再輸入“passwd text”回車,按提示鍵入密碼即建立了新使用者“text”。
如果要在圖形化視窗中建立新使用者,雙擊桌面上的“從這裡開始”圖示,在開啟的視窗中點選“系統設定”,然後點選“使用者和組群”,在彈出的“RedHat 使用者管理器”中點選“新增使用者”就可以新建使用者了。建好使用者以後,就可以用新建的“text”帳戶登入了。以後如果在 shell下需要用到 root許可權,只要輸入“su”命令再回車,然後輸入root的密碼,就可以暫時以root身份進行操作了。
2.掛載軟盤和光碟
Linux在使用軟盤和光碟之前,必須先掛載它。現在大多數版本的Linux都可以自動掛載軟盤和光碟,如果版本比較老,不支援自動掛載軟盤和光碟的話,就需手動掛載它。掛載我們用“mount”命令。在桌面點選右鍵,選擇“新建終端”開啟shell,輸入“su”命令和 root 密碼取得root許可權後,再鍵入“mount /mnt/floppy”命令就將軟盤掛載到了“/mnt”目錄下。之所以選擇掛載在“/mnt”目錄下,是因為Linux將“/mnt”目錄用來存放臨時映像檔案。掛載軟盤後,我們就可以進入到“/mnt”目錄下對軟盤進行讀寫操作了。光碟的掛載只要鍵入“mount /mnt/cdrom”即可。但初學者必須注意的是,此處掛載的是光碟和軟盤,而不是光碟機和軟碟機,如果要更換光碟就必須先解除安裝,否則光碟就會被系統鎖住,哪怕藉助緊急出創孔也彈不出光碟。要解除安裝光碟,只需鍵入“umount /mnt/cdrom”命令即可。
3.通用命令
從技術上講,Uname、diff、date、sort 和 uniq 應該看作檔案命令,但由於它們經常用於診斷和維護例程的系統管理方面,在這裡解釋它們更有意義。
Uname
Uname 提供了常規系統資訊。當指定 -a 選項時,顯示所有可用資訊:
$ uname -a
Linux linux 2.4.18-4GB #1 Wed Mar 27 13:57:05 UTC 2002 i686 unknown
在這裡我們從左向右看到常規的系統資訊。每條資訊都有自己的選項(在下面的圓括號中),可以單獨顯示:
作業系統名稱為 Linux(-s)。
本機的網路節點名為 linux (-n)。
作業系統釋出版本為 4.5.18-4GB (-r)。
作業系統版本為 #1 Wed Mar 27 13:57:05 UTC 2002 (-v)。
機器型別為 i686 (-m)。
這裡的處理器型別 (-p) 為未知。
Diff 和 Date。顧名思義,Diff 比較兩個檔案。它返回那些導致檔案不同的行,並返回關於如何使檔案變得相同的一些含義隱晦的輸出:
$ diff test.out test2.out
0a1
> Another test.
在這裡我們被告知,需要將 "Another test." 這一行新增到 test.out,以便使它與 test2.out 相似。第一個字元 "0" 是要在 test.out 中編輯的行號;"a" 表示該行應該被新增到 test.out,以便與 test2.out 的第一行 "1" 相匹配。如果我們需要更改 test.out,則第二個字元也可以是 "c",而如果我們需要從 test.out 中刪除一些內容,則第二個字元是 "d"。
您可能希望使一個檔案與另一個檔案相似,以便為某些程式碼提供補丁。diff 還經常作為分析工具,用於驗證程式或指令碼 — 例如 sed 指令碼 — 的輸出是否是所預期的輸出。
date 命令可用於顯示或設定日期。如果使用者具有超級使用者許可權,則他或她可以透過在以下命令中提供一個數字型字串來設定日期:
$ date 0101010004
此命令將日期設定為 2004 年 (04) 1 月 1 日 (0101) 凌晨 1 時 (0100)。
但是,任何使用者可以用所需的格式來顯示日期。注意在格式序列之前需要一個加號 "+"。如果沒有出現此命令的預期輸出,則嘗試將它包含在單引號中:
$ date +'%H%M%S'
204748您可以在序列中包含空格,這時您需要使用雙引號:
$ date +"%H %M %S"
20 47 51
Sort 列可以用兩種不同的格式指定。如果使用 -k 選項,則列的位置從 1 開始進行編號。您還可以使用 +POS1 格式,從第一列編號為零開始進行列的編號。以下兩個命令產生相同的輸出:
$ ls -l *.out | sort +5 -7
$ ls -l *.out | sort -k 6,8
-rw-r--r-- 1 bluher users 375 Dec 5 2002 fdisk.out
-rw-r--r-- 1 bluher users 2447 Dec 28 20:15 ls.out
-rw-r--r-- 1 bluher users 590 Jan 4 21:24 greps.out
-rw-r--r-- 1 bluher users 78 Jan 4 21:25 sgrep.out
我的LINUX 之路!!!!!!!!!(三)!
磁碟資訊
無論您是維護自己的系統還是支援具有很多使用者的企業,監視磁碟空間都是系統管理員更重要的職責之一。du、df 和 fdisk 命令提供了可用磁碟空間的不同檢視。
du 命令提供對每個目錄的檔案空間使用情況的評估。在預設情況下,測量的單位是塊的數目,塊的大小通常在安裝您的系統時確定。
在以下的示例中,系統是使用
1024 位元組的塊安裝的。如果沒有指定目錄,則 du 開始對當前目錄進行計算。-h 選項以易於讀懂的形式提供大小的值:
$ du -h Documents
105k Documents/jj
573k Documents/John
682k Documents
可以使用 -a 選項更改輸出,該選項指示 du 顯示檔案和目錄的塊數。選項 --block-size=SIZE 指示 du 以 SIZE 所指定位元組大小的塊的數目來顯示輸出。
$ du --block-size=512 Documents
209 Documents/jj
1146 Documents/John
1363 Documents
在預設情況下,du 還為每個子目錄遞迴地列印資訊。透過使用 max-depth=N 選項可以限制這種操作,其中 N 等於被報告的最大級數:
$ du --max-depth=2 .
$ du --max-depth=2 | sort -n
4 ./.xemacs
4 ./public_html
105 ./Documents/jj
573 ./Documents/Ian
682 ./Documents
2420 ./jdevhome/system
8350 ./jdevhome/system9.0.3.1035
13483 ./jdevhome/mywork
24252 ./jdevhome
...
du 報告目錄和子目錄的空間使用情況,而 df 報告已安裝檔案系統的磁碟空間使用情況:
$ df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda6 4195632 1983656 2211976 48% / /dev/hda5 14607 3778 10075 28% /boot
/dev/hda9 937372 494028 443344 53% /home
/dev/hda8 6297248 3876880 2420368 62% /opt
shmfs 256220 0 256220 0% /dev/shm
在這裡,df 報告了五個檔案系統的狀態。與 du 類似,df 利用 -h 選項提供人類可讀的輸出:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda6 4.0G 1.9G 2.1G 48% / /dev/hda5 14M 3.7M 9.8M 28% /boot
/dev/hda9 915M 476M 440M 52% /home
/dev/hda8 6.0G 3.7G 2.3G 62% /opt
shmfs 250M 0 250M 0% /dev/shm
df 命令還允許您利用 -block-size=SIZE 選項來指定塊的大小。
fdisk 命令是 Linux 的分割槽表操作命令。與 du 和 df 不同,沒有 root 使用者許可權時不能執行該命令。如果指定了 -l 選項,則可以將它僅用於報告的目的。它提供了您的整個分割槽表的完整檢視,而不僅僅是您使用 df 所看到的擴充套件 Linux 分割槽:
# fdisk -l
Disk /dev/hda:240 heads, 63 sectors, 1940 cylinders
Units = cylinders of 15120 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 286 2162128+ c Win95 FAT32 (LBA)
/dev/hda2 * 288 1940 12496680 5 Extended
/dev/hda5 288 289 15088+ 83 Linux
/dev/hda6 290 844 4195768+ 83 Linux
/dev/hda7 845 983 1050808+ 82 Linux swap
/dev/hda8 984 1816 6297448+ 83 Linux
/dev/hda9 1817 1940 937408+ 83 Linux
程式監視
在繁忙的多使用者系統中,程式監視也是 Linux 系統管理員的一項重要職責。在這方面,ps 和 top 是兩個最有用的命令。
ps 命令提供了當前執行程式的快照。
以下是 ps 的最簡單形式:
$ ps
PID TTY TIME CMD
3884 pts/1 00:00:00 bash
3955 pts/2 00:00:00 more
3956 pts/5 00:00:05 sqlplus
PID 是程式的標識號。
TTY 是程式所屬的終端控制檯。
TIME 列是程式所使用的總的 CPU 時間。
CMD 列列出正在執行的命令列。
使用帶有 -ef 選項的 ps,返回系統中所有使用者的所有程式的完整列表。如果您將此 ps 命令的結果傳送到 grep 中,則該結果更易於檢視。例如:
$ ps -ef | grep oracle
UID PID PPID C STIME TTY TIME CMD
oracle 1633 1 0 13:58 ?00:00:00 ora_pmon_ora1
oracle 1635 1 0 13:58 ?00:00:00 ora_dbw0_ora1
oracle 1637 1 0 13:58 ?00:00:01 ora_lgwr_ora1
oracle 1639 1 0 13:58 ?00:00:02 ora_ckpt_ora1
oracle 1641 1 0 13:58 ?00:00:02 ora_smon_ora1
oracle 1643 1 0 13:58 ?00:00:00 ora_reco_ora1
oracle 1645 1 0 13:58 ?00:00:00 ora_cjq0_ora1
oracle 1647 1 0 13:58 ?00:01:18 ora_qmn0_ora1
oracle 1649 1 0 13:58 ?00:00:00 ora_s000_ora1
oracle 1651 1 0 13:58 ?00:00:00 ora_d000_ora1
注意,當您將 ps 的輸出傳送到 grep 命令時,列標題並不象在 ps 命令本身所使用時那樣正常地顯示。為便於說明,標題位於輸出的上方,以便清楚地顯示其聯絡。
雖然 uid 通常是指數字型的標識,但在第一列下指定的是使用者名稱,標記為 UID。
PPID 是父程式的標識號。對於 Oracle 程式,這裡的標識號為 1 — 它是 init 程式(所有程式的父程式)的 id,因為在本系統中安裝的 Oracle 是作為登入程式的一部分而啟動的。
標為 C 的列是由 CPU 用於計算執行優先順序的因子。
STIME 是指程式的啟動時間。
問號表示這些程式不屬於任何 TTY,因為它們是由系統啟動的。
以下是 ps 命令帶有某些不同選項的另一個示例。注意,其中很多列與執行帶有 -ef 選項的 ps 時的列相同:
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
bluh 4024 0.0 0.2 2240 1116 pts/1 S 20:59 0:00 su bluher
bluh 4025 0.0 0.3 2856 1668 pts/1 S 20:59 0:00 bash
bluh 4051 0.0 0.2 2488 1504 pts/1 R 21:01 0:00 ps aux
bluh 4052 0.0 0.1 1636 600 pts/1 S 21:01 0:00 grep bluher
除了提供重要的診斷資訊,ps 命令還經常用於找出失控程式的 PID。例如,您的一個使用者在 SQL*Plus 會話中輸入一個笛卡爾聯接。您可以執行以下的 ps 命令來找出其 PID:
$ ps -ef | grep bluher
...
bluher 4068 4064 0 21:14 pts/6 00:00:00 less
bluher 4112 3945 0 21:28 pts/5 00:08:42 sqlplus
...
然後您可以使用以下命令將其終止:
$ kill 4112
常規使用者可以看到所有的系統程式,但他們只能終止他們自己擁有的程式。
Ps 只為您提供當前程式的快照。要即時檢視最活躍的程式,可使用 top。Top 實時地提供程式資訊。它還擁有互動式的狀態,允許使用者輸入命令,如 n 後面跟有 5 或 10 等數字。其結果是指示 top 顯示 5 或 10 個最活躍的程式。Top 持續執行,直到您按 "q" 退出 top 為止。
以下是 top 的部分顯示:
8:14pm up 51 min, 7 users, load average: 0.02, 0.03, 0.05
96 processes:87 sleeping, 2 running, 0 zombie, 7 stopped
CPU states:6.4% user, 3.5% system, 0.0% nice, 89.9% idle
Mem:512440K av, 392288K used, 120152K free, 0K shrd, 55668K buff
Swap:1050800K av, 0K used, 1050800K free 236128K cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
1289 root 18 0 78008 11M 1796 R 3.7 2.2 0:49 X
1965 bluher 20 0 12244 11M 10456 S 1.9 2.3 0:01 kdeinit
1986 bluher 18 0 996 996 768 R 1.5 0.1 0:00 top
1803 bluher 20 0 16960 16M 13508 S 0.9 3.3 0:03 kdeinit
1804 bluher 20 0 16964 16M 13508 S 0.9 3.3 0:03 kdeinit
1800 bluher 19 0 12260 11M 10076 S 0.1 2.3 0:04 kdeinit
1 root 20 0 220 220 188 S 0.0 0.0 0:04 init
...
關閉
看來應該以 shutdown 命令來結束本次討論。與本文以及上一篇文章中所討論的許多命令一樣,通常有一種 GUI 形式的替代方法可以關閉您的系統。但是,當您需要手動關閉時,您可以使用以下命令立即進行關閉:
$ shutdown -h now
您可以使用以下命令手動地重新啟動系統:
$ shutdown -r now
注意這兩個命令都需要指定時間。您可以指定 "now" 或使用帶有時間秒數的 -t 選項。
我的LINUX 之路!!!!!!!!!(四) 命令詳細介紹!
其實學習LINUX 就是學習命令,看LINUX玩的怎麼樣就看你命令打的怎麼樣!
cat cd
chmod chown
cp cut
名稱: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 ]
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
WINDOWDS下人才已經過剩了,我選擇了LINUX枯燥的系統(以前是這麼想的).想學好LINUX 的給大家幾點建議!
首先希望想學Linux的朋友能夠忘記Windows2000,最起碼忘記Windows下的磁碟機代號、應用程式等基礎的東西,其次要深刻明白Linux 和Windows是2個不同的系統平臺,可以去對比著學習,但不要直接拿Windows那套東西直接套用到Linux學習中。
學習幾點方向(就業方向):
一、桌面系統
二、核心原始碼學習。
三、系統管理
四、應用開發
五、伺服器領域
六、系統整合
我的LINUX 之路!!!!!!!!!(二)
Linux 系統命令精通指南(初級)
隨著Linux在我國的持續升溫,想學習它的人也越來越多。但是絕大多數的人早已習慣了傻瓜式操作的Windows,要他們一下子就適應Linux的操作,確實有很大的困難。特別是無數的Linux命令,對於那些連DOS都沒有接觸過的人來說,實在是不可忍受,這就為Linux在我國的推廣帶來了很大的侷限性。因此在絕大多數情況下,Linux都是以一種高階作業系統的姿態出現在我們面前。好在近幾年我國政府的大力支援,以及世界各硬體和軟體廠商在我國對Linux的大力推廣,Linux已經取得了很大的成功。而且絕大多數版本的Linux都已經支援中文。更可喜的是它的X Windows也已經做得非常漂亮實用,這對於剛從Windows轉向Linux學習的人來說,不但降低了學習的門檻,而且有助於提高他們學習Linux 的積極性。在X Windows下我們已經可以完成大多數的操作,只需用命令來完成少量的工作。這對於Linux的學習有很大的幫助。本文就以使用最廣泛的RedHat Linux為例給大家講一講Linux的基本配置。
1、新增使用者
新安裝的Linux一般只有一個使用者,即根使用者,也就是系統管理員。他對系統有無限的權力,可以更改或刪除任意檔案,因此稍有不慎就可能破壞系統。比如root只要輸入一條簡單的命令“rm –fr /”就可以刪除系統內的所有檔案,其中“rm”即刪除檔案命令,“-f”引數即強制,“-r”用於刪除指定目錄中的檔案,“/”就是指根目錄,整條命令就是強制刪除系統中所有檔案,可見其破壞性之大。還有其他的誤操作也可能給系統造成嚴重的破壞,因此為了安全起見,平常的操作我們最好不要以“root”身份登入,這就需要新建一個使用者。新建使用者可以在shell下用命令建立,也可以像Windows一樣在圖形視窗中建立。在shell下只要一條簡單的命令就可以建立一個使用者。比如新建使用者為text,我們只要按如下步驟操作即可:在桌面單擊右鍵,選擇“新建終端”即進入shell,然後輸入 “adduser text”按Enter鍵後,再輸入“passwd text”回車,按提示鍵入密碼即建立了新使用者“text”。
如果要在圖形化視窗中建立新使用者,雙擊桌面上的“從這裡開始”圖示,在開啟的視窗中點選“系統設定”,然後點選“使用者和組群”,在彈出的“RedHat 使用者管理器”中點選“新增使用者”就可以新建使用者了。建好使用者以後,就可以用新建的“text”帳戶登入了。以後如果在 shell下需要用到 root許可權,只要輸入“su”命令再回車,然後輸入root的密碼,就可以暫時以root身份進行操作了。
2.掛載軟盤和光碟
Linux在使用軟盤和光碟之前,必須先掛載它。現在大多數版本的Linux都可以自動掛載軟盤和光碟,如果版本比較老,不支援自動掛載軟盤和光碟的話,就需手動掛載它。掛載我們用“mount”命令。在桌面點選右鍵,選擇“新建終端”開啟shell,輸入“su”命令和 root 密碼取得root許可權後,再鍵入“mount /mnt/floppy”命令就將軟盤掛載到了“/mnt”目錄下。之所以選擇掛載在“/mnt”目錄下,是因為Linux將“/mnt”目錄用來存放臨時映像檔案。掛載軟盤後,我們就可以進入到“/mnt”目錄下對軟盤進行讀寫操作了。光碟的掛載只要鍵入“mount /mnt/cdrom”即可。但初學者必須注意的是,此處掛載的是光碟和軟盤,而不是光碟機和軟碟機,如果要更換光碟就必須先解除安裝,否則光碟就會被系統鎖住,哪怕藉助緊急出創孔也彈不出光碟。要解除安裝光碟,只需鍵入“umount /mnt/cdrom”命令即可。
3.通用命令
從技術上講,Uname、diff、date、sort 和 uniq 應該看作檔案命令,但由於它們經常用於診斷和維護例程的系統管理方面,在這裡解釋它們更有意義。
Uname
Uname 提供了常規系統資訊。當指定 -a 選項時,顯示所有可用資訊:
$ uname -a
Linux linux 2.4.18-4GB #1 Wed Mar 27 13:57:05 UTC 2002 i686 unknown
在這裡我們從左向右看到常規的系統資訊。每條資訊都有自己的選項(在下面的圓括號中),可以單獨顯示:
作業系統名稱為 Linux(-s)。
本機的網路節點名為 linux (-n)。
作業系統釋出版本為 4.5.18-4GB (-r)。
作業系統版本為 #1 Wed Mar 27 13:57:05 UTC 2002 (-v)。
機器型別為 i686 (-m)。
這裡的處理器型別 (-p) 為未知。
Diff 和 Date。顧名思義,Diff 比較兩個檔案。它返回那些導致檔案不同的行,並返回關於如何使檔案變得相同的一些含義隱晦的輸出:
$ diff test.out test2.out
0a1
> Another test.
在這裡我們被告知,需要將 "Another test." 這一行新增到 test.out,以便使它與 test2.out 相似。第一個字元 "0" 是要在 test.out 中編輯的行號;"a" 表示該行應該被新增到 test.out,以便與 test2.out 的第一行 "1" 相匹配。如果我們需要更改 test.out,則第二個字元也可以是 "c",而如果我們需要從 test.out 中刪除一些內容,則第二個字元是 "d"。
您可能希望使一個檔案與另一個檔案相似,以便為某些程式碼提供補丁。diff 還經常作為分析工具,用於驗證程式或指令碼 — 例如 sed 指令碼 — 的輸出是否是所預期的輸出。
date 命令可用於顯示或設定日期。如果使用者具有超級使用者許可權,則他或她可以透過在以下命令中提供一個數字型字串來設定日期:
$ date 0101010004
此命令將日期設定為 2004 年 (04) 1 月 1 日 (0101) 凌晨 1 時 (0100)。
但是,任何使用者可以用所需的格式來顯示日期。注意在格式序列之前需要一個加號 "+"。如果沒有出現此命令的預期輸出,則嘗試將它包含在單引號中:
$ date +'%H%M%S'
204748您可以在序列中包含空格,這時您需要使用雙引號:
$ date +"%H %M %S"
20 47 51
Sort 列可以用兩種不同的格式指定。如果使用 -k 選項,則列的位置從 1 開始進行編號。您還可以使用 +POS1 格式,從第一列編號為零開始進行列的編號。以下兩個命令產生相同的輸出:
$ ls -l *.out | sort +5 -7
$ ls -l *.out | sort -k 6,8
-rw-r--r-- 1 bluher users 375 Dec 5 2002 fdisk.out
-rw-r--r-- 1 bluher users 2447 Dec 28 20:15 ls.out
-rw-r--r-- 1 bluher users 590 Jan 4 21:24 greps.out
-rw-r--r-- 1 bluher users 78 Jan 4 21:25 sgrep.out
我的LINUX 之路!!!!!!!!!(三)!
磁碟資訊
無論您是維護自己的系統還是支援具有很多使用者的企業,監視磁碟空間都是系統管理員更重要的職責之一。du、df 和 fdisk 命令提供了可用磁碟空間的不同檢視。
du 命令提供對每個目錄的檔案空間使用情況的評估。在預設情況下,測量的單位是塊的數目,塊的大小通常在安裝您的系統時確定。
在以下的示例中,系統是使用
1024 位元組的塊安裝的。如果沒有指定目錄,則 du 開始對當前目錄進行計算。-h 選項以易於讀懂的形式提供大小的值:
$ du -h Documents
105k Documents/jj
573k Documents/John
682k Documents
可以使用 -a 選項更改輸出,該選項指示 du 顯示檔案和目錄的塊數。選項 --block-size=SIZE 指示 du 以 SIZE 所指定位元組大小的塊的數目來顯示輸出。
$ du --block-size=512 Documents
209 Documents/jj
1146 Documents/John
1363 Documents
在預設情況下,du 還為每個子目錄遞迴地列印資訊。透過使用 max-depth=N 選項可以限制這種操作,其中 N 等於被報告的最大級數:
$ du --max-depth=2 .
$ du --max-depth=2 | sort -n
4 ./.xemacs
4 ./public_html
105 ./Documents/jj
573 ./Documents/Ian
682 ./Documents
2420 ./jdevhome/system
8350 ./jdevhome/system9.0.3.1035
13483 ./jdevhome/mywork
24252 ./jdevhome
...
du 報告目錄和子目錄的空間使用情況,而 df 報告已安裝檔案系統的磁碟空間使用情況:
$ df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda6 4195632 1983656 2211976 48% / /dev/hda5 14607 3778 10075 28% /boot
/dev/hda9 937372 494028 443344 53% /home
/dev/hda8 6297248 3876880 2420368 62% /opt
shmfs 256220 0 256220 0% /dev/shm
在這裡,df 報告了五個檔案系統的狀態。與 du 類似,df 利用 -h 選項提供人類可讀的輸出:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda6 4.0G 1.9G 2.1G 48% / /dev/hda5 14M 3.7M 9.8M 28% /boot
/dev/hda9 915M 476M 440M 52% /home
/dev/hda8 6.0G 3.7G 2.3G 62% /opt
shmfs 250M 0 250M 0% /dev/shm
df 命令還允許您利用 -block-size=SIZE 選項來指定塊的大小。
fdisk 命令是 Linux 的分割槽表操作命令。與 du 和 df 不同,沒有 root 使用者許可權時不能執行該命令。如果指定了 -l 選項,則可以將它僅用於報告的目的。它提供了您的整個分割槽表的完整檢視,而不僅僅是您使用 df 所看到的擴充套件 Linux 分割槽:
# fdisk -l
Disk /dev/hda:240 heads, 63 sectors, 1940 cylinders
Units = cylinders of 15120 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 286 2162128+ c Win95 FAT32 (LBA)
/dev/hda2 * 288 1940 12496680 5 Extended
/dev/hda5 288 289 15088+ 83 Linux
/dev/hda6 290 844 4195768+ 83 Linux
/dev/hda7 845 983 1050808+ 82 Linux swap
/dev/hda8 984 1816 6297448+ 83 Linux
/dev/hda9 1817 1940 937408+ 83 Linux
程式監視
在繁忙的多使用者系統中,程式監視也是 Linux 系統管理員的一項重要職責。在這方面,ps 和 top 是兩個最有用的命令。
ps 命令提供了當前執行程式的快照。
以下是 ps 的最簡單形式:
$ ps
PID TTY TIME CMD
3884 pts/1 00:00:00 bash
3955 pts/2 00:00:00 more
3956 pts/5 00:00:05 sqlplus
PID 是程式的標識號。
TTY 是程式所屬的終端控制檯。
TIME 列是程式所使用的總的 CPU 時間。
CMD 列列出正在執行的命令列。
使用帶有 -ef 選項的 ps,返回系統中所有使用者的所有程式的完整列表。如果您將此 ps 命令的結果傳送到 grep 中,則該結果更易於檢視。例如:
$ ps -ef | grep oracle
UID PID PPID C STIME TTY TIME CMD
oracle 1633 1 0 13:58 ?00:00:00 ora_pmon_ora1
oracle 1635 1 0 13:58 ?00:00:00 ora_dbw0_ora1
oracle 1637 1 0 13:58 ?00:00:01 ora_lgwr_ora1
oracle 1639 1 0 13:58 ?00:00:02 ora_ckpt_ora1
oracle 1641 1 0 13:58 ?00:00:02 ora_smon_ora1
oracle 1643 1 0 13:58 ?00:00:00 ora_reco_ora1
oracle 1645 1 0 13:58 ?00:00:00 ora_cjq0_ora1
oracle 1647 1 0 13:58 ?00:01:18 ora_qmn0_ora1
oracle 1649 1 0 13:58 ?00:00:00 ora_s000_ora1
oracle 1651 1 0 13:58 ?00:00:00 ora_d000_ora1
注意,當您將 ps 的輸出傳送到 grep 命令時,列標題並不象在 ps 命令本身所使用時那樣正常地顯示。為便於說明,標題位於輸出的上方,以便清楚地顯示其聯絡。
雖然 uid 通常是指數字型的標識,但在第一列下指定的是使用者名稱,標記為 UID。
PPID 是父程式的標識號。對於 Oracle 程式,這裡的標識號為 1 — 它是 init 程式(所有程式的父程式)的 id,因為在本系統中安裝的 Oracle 是作為登入程式的一部分而啟動的。
標為 C 的列是由 CPU 用於計算執行優先順序的因子。
STIME 是指程式的啟動時間。
問號表示這些程式不屬於任何 TTY,因為它們是由系統啟動的。
以下是 ps 命令帶有某些不同選項的另一個示例。注意,其中很多列與執行帶有 -ef 選項的 ps 時的列相同:
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
bluh 4024 0.0 0.2 2240 1116 pts/1 S 20:59 0:00 su bluher
bluh 4025 0.0 0.3 2856 1668 pts/1 S 20:59 0:00 bash
bluh 4051 0.0 0.2 2488 1504 pts/1 R 21:01 0:00 ps aux
bluh 4052 0.0 0.1 1636 600 pts/1 S 21:01 0:00 grep bluher
除了提供重要的診斷資訊,ps 命令還經常用於找出失控程式的 PID。例如,您的一個使用者在 SQL*Plus 會話中輸入一個笛卡爾聯接。您可以執行以下的 ps 命令來找出其 PID:
$ ps -ef | grep bluher
...
bluher 4068 4064 0 21:14 pts/6 00:00:00 less
bluher 4112 3945 0 21:28 pts/5 00:08:42 sqlplus
...
然後您可以使用以下命令將其終止:
$ kill 4112
常規使用者可以看到所有的系統程式,但他們只能終止他們自己擁有的程式。
Ps 只為您提供當前程式的快照。要即時檢視最活躍的程式,可使用 top。Top 實時地提供程式資訊。它還擁有互動式的狀態,允許使用者輸入命令,如 n 後面跟有 5 或 10 等數字。其結果是指示 top 顯示 5 或 10 個最活躍的程式。Top 持續執行,直到您按 "q" 退出 top 為止。
以下是 top 的部分顯示:
8:14pm up 51 min, 7 users, load average: 0.02, 0.03, 0.05
96 processes:87 sleeping, 2 running, 0 zombie, 7 stopped
CPU states:6.4% user, 3.5% system, 0.0% nice, 89.9% idle
Mem:512440K av, 392288K used, 120152K free, 0K shrd, 55668K buff
Swap:1050800K av, 0K used, 1050800K free 236128K cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
1289 root 18 0 78008 11M 1796 R 3.7 2.2 0:49 X
1965 bluher 20 0 12244 11M 10456 S 1.9 2.3 0:01 kdeinit
1986 bluher 18 0 996 996 768 R 1.5 0.1 0:00 top
1803 bluher 20 0 16960 16M 13508 S 0.9 3.3 0:03 kdeinit
1804 bluher 20 0 16964 16M 13508 S 0.9 3.3 0:03 kdeinit
1800 bluher 19 0 12260 11M 10076 S 0.1 2.3 0:04 kdeinit
1 root 20 0 220 220 188 S 0.0 0.0 0:04 init
...
關閉
看來應該以 shutdown 命令來結束本次討論。與本文以及上一篇文章中所討論的許多命令一樣,通常有一種 GUI 形式的替代方法可以關閉您的系統。但是,當您需要手動關閉時,您可以使用以下命令立即進行關閉:
$ shutdown -h now
您可以使用以下命令手動地重新啟動系統:
$ shutdown -r now
注意這兩個命令都需要指定時間。您可以指定 "now" 或使用帶有時間秒數的 -t 選項。
我的LINUX 之路!!!!!!!!!(四) 命令詳細介紹!
其實學習LINUX 就是學習命令,看LINUX玩的怎麼樣就看你命令打的怎麼樣!
cat cd
chmod chown
cp cut
名稱: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 ]
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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-947267/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我的 Java 轉 Go 之路JavaGo
- 我的C學習之路 (轉)
- 我的WebDesign之路--序 (轉)Web
- 畢業季,我的Linux求職之路Linux求職
- [轉載] 我的資料倉儲之路
- 我的WebDesign之路--提高篇[3] (轉)Web
- 我的WebDesign之路--提高篇[1] (轉)Web
- 我的WebDesign之路--提高篇[2] (轉)Web
- 我的WebDesign之路--完結篇 (轉)Web
- 我的css之路CSS
- 我的Oracle之路Oracle
- 而立之年——回顧我的前端轉行之路前端
- 我走過的學習之路(記我對技術的選擇) (轉)
- 我的前端之路(上)前端
- 1、我的PHP之路PHP
- 我的前端之路(中)前端
- 我和我的DBA之路
- 聊聊我的 Java 自學之路Java
- 我的程式設計之路程式設計
- 我的程式設計師之路程式設計師
- 感悟我的程式設計之路程式設計
- 我的Python成長之路Python
- 我的IT之路2013(二)
- 我的IT之路2013(一)
- 【原】我的專案管理之路專案管理
- 我的技術成長之路
- 從美術生到程式設計師轉型之路【我的故事】程式設計師
- 知無涯,行者之路莫言終(我的程式設計之路)程式設計
- 我的技術之路 | 掘金年度徵文
- 我的Java後端學習之路Java後端
- 開啟我的程式設計之路程式設計
- 我的C語言學習之路C語言
- 我的前端之路 | 掘金技術徵文前端
- 我的大資料學習之路大資料
- 我的 Vim 到 Emacs 到 Evil 之路Mac
- 聶微東:我的Web前端之路Web前端
- 我的PHP,Python和Ruby之路PHPPython
- 我的程式設計師之路(六)程式設計師