第 2 章 上機使用 Unix/Linux 內容: 操作介面 主機連線 登入主機 認識系統環境 使用者常用命令
2-1 Unix/Linux 操作介面 X-視窗操作
2-1 Unix/Linux 操作介面 命令行操作
進入Linux世界的注意事項 Linux指令輸入,大小寫有很大的差別
文字模式登入Linux 第一行顯示 - Linux distribution 與版本 第二行顯示 - Linux 核心版本 (2.6.11-1.27_FC3) ,及硬體等級 ( i686 ) 第三行顯是您的主機名稱 (linux) root 就是『系統管理員』,也就是『超級使用者, Super User』, 在 Linux 主機之內,這個帳號代表的是『無窮的權力!』
2-2 主機連線 RS-232C 終端機連線
2-2 主機連線 網路連線作業方式
telnet 連線 telnet 命令連線 NetTerm 軟體登入
SSH連線 Pietty或Putty連線
建立一個普通等級的帳號 (1/2) 建立帳號 useradd [新增的帳號名稱]
建立一個普通等級的帳號 (2/2) 給予新增帳號建立密碼 Passwd [帳號名稱] 注意事項: 只有root可以在不知道舊密碼的情況下設定密碼 只有root在驗證要求仍是警告時還可繼續設定 一般使用者,須知道舊密碼且通過系統驗證機制 密碼不能與帳號相同; 密碼盡量不要選用字典裡面會出現的字串; 密碼需要超過 8 個字元
刪除使用者 userdel [-r] 帳號 用 userdel 的時機通常是『 你真的確定不要讓該用戶在主機上面使用任何資料了!』
密碼管理的重要 主機若是遭到入侵, 對方的第一個入侵點 自然就是您主機上面帳號的『密碼』了 如果您的密碼定義的比較嚴格的話,那自然就不容易猜到你的密碼,就會比較有保障! Cracker 較常使用的密碼破解軟體,大抵是『字典攻擊法』 及所謂的『暴力破解法』 『字典攻擊法』是將字典裡面所查的到的任何單字或片語都輸入的程式中 『 暴力破解法』就是直接使用鍵盤上面任何可以使用的按鍵,然後依照組合 etc.
使用者身分切換 為了安全,操作 Linux 時,盡量以一般身份 使用者來操作,等到需要設定系統環境時, 才變換身份成為 root 來進行系統管理
使用su切換至root
使用su切換至一般使用者 su 指令可以讓你在不同使用者間切換身份 當 su 後面沒有加上使用者帳號時, 那麼預設就是以 root 作為你切換的那個身份啦 如果要切換成為某個身份,使用『 su - 』或者是『 su -l usename 』 會比較好
系統檔案屬性 檔案的權限與屬性是學習 Linux 的一個相當重要 的關卡,如果沒有這部份的概念,那麼您將老 是聽不懂別人在講什麼呢! 尤其是當您在您的螢幕前面出現了『Permission deny』的時候,不要擔心,『肯定是權限設定錯誤』啦!
列出目錄的指令 (ls) ls 是『list』的意思,與在DOS 年代的指令 dir 類似功能 參數『-al』則表示列出所有的檔案 ( 包含隱藏檔,就是檔名前面第一個字元為 . 的那種檔案 )
ls指令
ls –al 指令
檔案屬性 第一個屬性代表這個檔案是『目錄、檔案或 連結檔等等』: 當為[ d ]則是目錄,例如上表的第 11 行; 當為[ - ]則是檔案,例如上表的第 5 行; 若是[ l ]則表示為連結檔(link file); 若是[ b ]則表示為裝置檔可供儲存的周邊設備; 若是[ c ]則表示為裝置檔裡面的序列埠設備,例如鍵盤、滑鼠。
檔案與目錄管理 常見目錄管理指令 cd:變換目錄 pwd:顯示目前的目錄 mkdir:建立一個新的目錄 rmdir:刪除一個空的目錄 (Change Directory 的縮寫) pwd:顯示目前的目錄 (Print Working Directory 的縮寫) mkdir:建立一個新的目錄 rmdir:刪除一個空的目錄
變換目錄指令 cd cd 回到上一層目錄可以用『 cd .. 』 剛登入時會到自己的家目錄,而家目錄還有一個代碼,那就是『 ~ 』符號
變換目錄指令 cd
顯示目前所在的目錄 (pwd)
建立新目錄 (mkdir) 建立新的目錄 : mkdir 在預設的情況下, 你所需要的目錄得一層 一層的建立才行! 假如你要建立一個目錄為 /home/bird/testing/test1,那麼首先必須要有 /home 然後 /home/bird ,再來 /home/bird/testing 都必須要存在,才可以建立 /home/bird/testing/test1 這個目錄 加上 -p 這個參數喔!你可以直接下達: 『 mkdir -p /home/bird/testing/test1 』 系統會自動的幫你將 /home, /home/bird, /home/bird/testing 依序的建立起目錄
取得路徑的檔案名稱與目錄名稱 取得檔名或者是目錄名稱,一般的用途應 該是在寫程式的時候,用來判斷之用的
建立新目錄 (mkdir)
刪除『空』的目錄 (rmdir) rmdir指令 目錄 需要一層一層的刪除才行 被刪除的目錄裡面必定不能有其他目錄或檔案! 如果要將所有目錄下的東西都殺掉! 必須使用 rm -rf 檔名 (強制刪除) 可以嘗試以 -p 的參數加入,來刪除上層的目錄
刪除『空』的目錄 (rmdir)
檔案與目錄管理(cp) cp (複製檔案或目錄)
檔案與目錄管理(rm) rm (移除檔案或目錄)
檔案與目錄管理(rm) 通常在 Linux 系統下,為了怕檔案被誤殺, 所以很多 distributions 都已經預設有 -i 這個 參數, -i 是指每個檔案被殺掉之前都會讓 使用者確認一次,以預防誤殺檔案! 子目錄裡面還有子目錄時,那就要使用 -rf 這個參數 記得再三確認是否要刪除
檔案與目錄管理(mv) mv (移動檔案與目錄,或更名) 搬移 (move) !當你要移動檔案或目錄的時候,這個指令就很重要!
檔案內容查閱 cat 由第一行開始顯示檔案內容 tac 從最後一行開始顯示 nl 顯示的時候,順道輸出行號! 可以看出 tac 是 cat 的倒著寫! nl 顯示的時候,順道輸出行號! more 一頁一頁的顯示檔案內容 less 與 more 類似,但是比 more 更好的是 ,他可以往前翻頁! head 只看頭幾行 tail 只看尾巴幾行 od 以二進位的方式讀取檔案內容!
cat (concatenate)
tac (反向列示) 看一下 cat 與 tac ,tac 剛好是將 cat 反寫過 來,所以他的功能就跟 cat 相反
nl (添加行號列印) nl 可將輸出的檔案內容自動的加上行號! 其結果與 cat -n 有點不太一樣,
可翻頁檢視 前面提到的 nl 與 cat, tac 等等,都是一次性 的將資料顯示到螢幕上面 more 與 less讓我們可以一頁一頁的觀察
翻頁檢視(more) 如果 more 後面接的檔案長度大於螢幕輸出 的行數時,最後一行會顯示出目前顯示的 百分比, 而且還可以在最後一行輸入一些 有用的指令
翻頁檢視(more) 在 more 這個程式的運作過程中,你有幾個 按鍵可以按的: 空白鍵 (space):代表向下翻一頁; Enter :代表向下翻『一行』; /字串:代表在這個顯示的內容當中,向下搜尋『字串』; :f :立刻顯示出檔名以及目前顯示的行數; q :代表立刻離開 more ,不再顯示該檔案內容
要離開 more 這個指令的顯示工作,可以按 下 q 就能夠離開了。 而要向下翻頁,就使用空白鍵即可。 在該檔案內搜尋字串
一頁一頁翻動(less) more 的時候,我們並沒有辦法向前面翻, 只能往後面看 當使用了 less 時,就可以使用 [pageup] [pagedown] 等按鍵來往前往後翻看文件
空白鍵 :向下翻動一頁; [pagedown]:向下翻動一頁; [pageup] :向上翻動一頁; /字串 :向下搜尋『字串』的功能; ?字串 :向上搜尋『字串』的功能; n :重複前一個搜尋 (與 / 或 ? 有關!) N :反向的重複前一個搜尋 (與 / 或 ? 有 關!) q :離開 less 這個程式;
取出前面幾行(head) 若沒有加上 -n 這個參數時,預設只顯示十 行 若只要一行?那就加入『 head -n 1 filename 』
取出後面幾行(tail) tail 的用法跟 head 的用法差不多類似,只 是顯示的是後面幾行就是了! 預設也是顯示十行,若要顯示非十行,就加 -n number 的參數
非純文字檔 (od) 萬一我們想要查閱非文字檔,舉例來說, 例如 /usr/bin/passwd 這個執行檔的內容時 , 又該如何去讀出資訊呢? 事實上,由於執行檔通常是 binary file ,使 用上頭提到的指令來讀取他的內容時, 確 實會產生類似亂碼的資料 利用這個指令,可以將 data file 或者是 binary file 的內容資料給他讀出來喔 不過,我們還是可以透過 -t c 的參數來將資料內的字元以 ASCII 類型的字元來顯示
非純文字檔 (od)
修改檔案時間與建置新檔(touch) 在 linux 底下都會記錄三個主要的變動時間 modification time (mtime):當該檔案的『內容資料』變更時,就會更新這個時間! 內容資料指的是檔案的內容,而不是檔案的屬性status time (ctime):當該檔案的『狀態 (status)』改變時,就會更新這個時間,舉例來說, 像是權限與屬性被更改了,都會更新這個時間啊~! access time (atime):當『該檔案的內容被取用』時,就會更新這個讀取時間 (access)。 舉例來說,我們使用 cat 去讀取 ~/.bashrc ,就會更新 atime 了
修改檔案時間與建置新檔(touch) 預設的情況下, ls 顯示出來的是該檔案的 mtime ,也就是這個檔案的內容上次被更 動的時間。
修改檔案時間與建置新檔(touch) 該如何讓該檔案的時間變成『現在』的時 刻呢? 用『touch』這個指令即可
透過 touch 這個指令 可以輕易的修訂檔案的日期與時間。 也可以建立一個空的檔案 touch 這個指令最常被使用的情況是: 1. 建立一個空的檔案; 2. 將某個檔案日期修訂為目前 (mtime 與 atime) 關心的常常是這個檔案的『內容』 是什麼時候被更動
檔案的搜尋 我們常常需要知道那個檔案放在哪裡!在 Linux 底下也有相當優異的搜尋系統呦! which whereis locate find 通常我們都是先使用 whereis 或者是 locate 來檢查,如果真的找不到了,才以 find 來搜尋!因為 whereis 與 locate 是利用資料庫來搜尋資料,所以相當的快速,而且並沒有實際的搜尋硬碟,比較省時間
尋找『執行檔』(which) 根據『PATH』這個環境變數所規範的路徑 ,去搜尋『執行檔』的檔名
尋找特定檔案(whereis) whereis 到底是使用什麼呢?為何搜尋的速 度會比 find 快這麼多? 其實是因為 Linux 系統會將系統內的所有檔案都記錄在一個資料庫檔案裡面, 而當使用 whereis 或者是底下要說的 locate 時,都會以此資料庫檔案的內容為準 基本上 Linux 每天會針對 Linux 主機上所有 檔案的所在進行搜尋資料庫的更新, 更新 的程式就是 updatedb 可直接使用 /usr/bin/updatedb 更新資料庫檔案
尋找特定檔案(whereis)
locate 您會發現使用 locate 來尋找資料的時候特 別的快 有什麼限制呢? 這是因為 locate 尋找的資料是由『已建立的資料庫 /var/lib/slocate/』 裡面的資料所搜尋到的,所以不用直接在去硬碟當中存取資料 有什麼限制呢? 就是因為他是經由資料庫來搜尋的,而資料庫的建立預設是在每天執行一次 所以當新建立起來的檔案, 卻還在資料庫更新之前搜尋該檔案,那麼 locate 會告訴您『找不到!』因為必須要更新資料庫
find 如果你要尋找一個檔案的話,那麼使用 find 會是一個不錯的主意! 例如你要尋找一個檔名為 httpd.conf 的檔案 ,你知道他應該是在 /etc 底下 那就可以使用『 find /etc -name httpd.conf 』 不知道全名怎辦?!就用萬用字元 * 吧,如上以:『 find /etc -name '*httpd*' 』就可將檔名含有 httpd 的檔案都列出來 不過,由於 find 在尋找資料的時後相當的耗硬碟!所以沒事情不要使用 find
系統查詢命令 finger logname who uname date cal
finger finger 的結果最底下顯示『No mail. No Plan.』 finger 會主動去 /var/spool/mail 查詢看看有沒有該帳號的郵件信箱 (mailbox) 還會去查詢 ~/.plan 那個檔案,那就是計畫檔啦
logname、who logname 查看登錄系統的使用者 who 顯示完整的登錄時間與來源
uname 查詢系統資訊 uname -a
date、cal
Linux 系統上的線上求助 Linux 有多少指令呢? 文字模式下,你可以直接按下兩個 [Tab] 按鍵,看看總共有多少指令,少說也有 2000 多個以上的指令! 如何知道每個指令的詳細用法?還有,某些設定檔的內容到底是什麼? 可以直接在線上就能夠輕易的被使用者查詢出來 這就是『線上說明文件』
man page – 線上使用手冊 這個 man 是 manual (操作說明) 的簡寫 只要下達: 『man date』 馬上就會有清楚的說明出現在你面前
Man page內容說明 表格第一行,您可以看到的是:『DATE(1)』 DATE 我們知道是指令的名稱 (1) 代表的是『一般使用者可使用的指令』的意思
man page 大致分成底下幾個部分
查閱與查詢 如果要翻頁的話 同時,如果您知道某些關鍵字的話, 那麼 可以在任何時候輸入『 /word 』,來主動搜 尋關鍵字! 可以按下鍵盤的 空白鍵 , 也可以使用 [Page Up] 與 [Page Down] 來翻頁! 同時,如果您知道某些關鍵字的話, 那麼 可以在任何時候輸入『 /word 』,來主動搜 尋關鍵字!
按下『/』之後,游標應該就會移動到螢幕 的最下面一行, 並等待您輸入搜尋的字串 輸入 date 後, man page 就會開始搜尋跟 date 有關的字串, 並且移動到該區域
如果想知道更多 man 的訊息
正確的關機方法 如何關機呢? 很多人在 DOS 的年代已經有在玩電腦了! 在當時我們關掉 DOS 的系統時,常常是直 接關掉電源開關 Windows 則可以按著電源開關四秒也可以 關機! 但是在 Linux 則相當的不建議這麼做!
Linux關機 在 Linux 底下,由於每個程序(或者說是服 務) 都是在在背景下執行的 因此,在你看不到的螢幕背後其實可能有相當多人同時在你的主機上面工作, 例如瀏覽網頁、傳送信件啦以 FTP 傳送檔案等等 如果你直接按下電源開關來關機時, 則其他人的資料可能就此中斷 最大的問題是, 若不正常關機,則可能造成檔案系統的毀損 (因為來不及將資料回寫到檔案中,所以有些服務的檔案會有問題)。
觀察系統的使用狀態 判斷是否可以關機 看目前有誰在線上,可下達 who 這個指令 要看網路的連線狀態,可下達 netstat -a 這指令 要看背景執行的程序可以執行 ps -aux 這個指令 使用這些指令可以讓你稍微瞭解主機目前的使用狀態!
資料同步寫入磁碟:sync Linux 系統中,為了加快資料的讀取速度, 所以預設某些資料將不會直接被寫入硬碟,而是先暫存在記憶體當中 如此, 如果一個資料被你重複的改寫,那麼由於尚未被寫入硬碟中,因此可以直接由記憶體中讀取出來, 在速度上一定是快上相當多的! 但是萬一重新開機或者是關機,或者是不正常的斷電的情況下, 由於資料尚未被寫入硬碟當中,就會造成資料的更新不正常
資料同步寫入磁碟:sync 此時就需要 sync 這個指令來進行資料的寫 入動作啦! 所以,在系統關機或重新開機之前,執行此指令很重要 (註:這指令只有 root 可以執行! )
關機指令:shutdown 只有 root 有權力關機而已! 可以自由選擇關機模式:是要關機、重新開機或進入單人操作模式均可 可以設定關機時間:可以設定成現在立刻關機, 也可以設定某一個特定的時間才關機。 可以自訂關機訊息:在關機之前,可以將自己設定的訊息傳送給線上 user 。 可以僅發出警告訊息 可以選擇是否要 fsck 檢查檔案系統 。
關機指令:shutdown
關機指令:shutdown
重新開機,關機:reboot reboot 其實與 shutdown -r now 幾乎相同 建議在關機之前還是將資料回填的指令下 達一次再說 halt 與 poweroff 也具有相同的功能!不要 擔心,使用 man 去查詢一下吧!
使用者常用命令 檔案操作命令 系統查詢命令 通訊命令 身分替代命令 線上使用手冊 ls, cp, cat, more, rm logname, uname, who, finger, date, cal 通訊命令 write, mesg, talk, mail 身分替代命令 su 線上使用手冊 man