Linux 系統操作與管理
VBird
2003/03/21
報告內容
• Linux 是什麼?如何學習?
• Linux 與硬體的關係?
• Linux 的操作:Shell 與線上說明文件
• Linux 帳號管理
• Linux 檔案系統管理
• Linux 開機管理軟體(LILO, Grub)
• Linux 程序管理與工作排程
• Linux 套件管理員
• Linux 問題的檢驗程序
Linux 是什麼?如何學習?
• 作業系統
Linux 是什麼?如何學習?
• Linux = 核心 (Kernel) + 套件(Packages)
– 核心在控制整個系統(軟、硬體)
– 核心的功能不同,支援的硬體就不同
– 各個 distributions 都使用
www.kernel.org 提供的 kernel,
– 可以支援外掛模組(想像驅動程式)
– packages 可以隨時抽換安裝
Linux 是什麼?如何學習?
• Shell 的類型
– 圖形介面 (X-Window System)
• KDE, GNOME…..
• 最大的優點是親和、中文化
– 文字介面 (BASH Shell)
• 功能強大、但學習歷程較長
• 最大的優點是,更深入系統,適合
系統管理員
Linux 是什麼?如何學習?
• 建議學習的心態
– 想玩一玩 Linux 而已:
• 使用 X-Window 爽一爽即可
• 但不要架站喔!
– 為了生活、為了興趣、為了管理:
• 可以理解為什麼要這樣做?
• 問題發生了,會知道哪裡可能出錯?
• 整個流程的檢驗程序清晰!
Linux 與硬體的關係
• 硬體的架構:X86 系統
– CPU 的等級
– 硬體裝置的 I/O 位址
– 裝置溝通的 IRQ 通道
– IDE 介面的硬碟
– 實體與虛擬的 RAM
– USB 介面
Linux 與硬體的關係
• 核心與硬體
– 核心需支援該硬體,硬體方可運作
– 可以利用類似驅動程式(模組)啟用硬體
– 硬體驅動模組設計是『硬體廠商』的
責任--每人一信、開發才會快!^_^
Linux 與硬體的關係
• 關於硬碟的裝置代號
– MBR?
– Partition table ?
– Primary, Extended, Logical ?
– /dev/hda1, … /dev/hda5
Linux 的操作
• Shell
– 指令的操作
• # ls /home
• # ls -l /home
• # ls -al /home
• # ls --help
• # ls -al / /home /var /etc \
> /tmp /usr .
Linux 的操作
• Shell
– 指令的操作
• 每行指令均以 Enter 為『開始執行』
的依據,不過可以 \ 延續下達
• 指令可接續參數(Options)來達成多樣
化的工作
• 大小寫是完全不同的
• 藉由輸出訊息可瞭解問題、解決之
Linux 的操作
• Shell
– 變數的功能
• 環境當中,一些必要指令的用途
–HOME 家目錄
–MAIL 用 mail 時取得的 mailbox
–PS1 提示字元囉!
–PATH 執行檔的搜尋路徑
–? 上個指令的執行結果回傳值
Linux 的操作
• Shell
– 變數的功能
• 簡化與優化指令或 scripts
–例如常使用的字串取代、
–常使用的路徑取代….
–Shell scripts 當中的變數取代(最常
見)
Linux 的操作
• Shell
– 進階指令操作--資料流重導向
• 將指令執行後,應該由螢幕輸出的
的訊息導向到裝置或檔案當中;
• # ls /home /vbird >> right 2>> error
• 最常見在『背景』工作中!例如系
統的一堆背景工作紀錄(syslogd)
Linux 的操作
• Shell
– 進階指令操作--管線命令 pipe
• 將輸出的訊息繼續進行處理
Linux 的操作
• Shell
– 進階指令操作--管線命令 pipe
• # last | grep root | wc -l
• # cat /etc/passwd | cut -d ‘:’ -f1 > accout
• 重點在於『僅』取得所需的資料,這
與正規表示法常常離不開!
Linux 的操作
• 文書處理器 vi
– 管理員至少一定要會一種編輯器
– vi 的使用:
• 一般模式:移動、複製、刪除、貼上
• 編輯模式:插入與取代文件
• 指令列模式:搜尋、自動取代、檔案
存取等
Linux 的操作
• 線上查詢 man page
– 是否一定要『背』指令?
• man command
• man 5 configuration
• info command (尤其 GNU 提供的工具)
• /etc/man.conf (尤其自行安裝軟體)
• whatis filename
Linux 帳號與身份管理
• Linux 僅認識 ID 數字:UID, GID
• 三種身份:owner, group, others
• 與 Linux 檔案權限相關性很高!
• /etc/passwd, /etc/shadow, /etc/group
• 密碼的設定技巧
Linux 帳號與身份管理
• Linux 僅認識 ID 數字:UID, GID
• 兩種 UID: 0(root), 1~65534(一般身份)
• 三種身份:owner, group, others
• 與 Linux 檔案權限相關性很高!
• /etc/passwd, /etc/shadow, /etc/group
• 密碼的設定技巧
Linux 帳號與身份管理
• 使用者查尋:
– id
– finger
– groups
• 變換身份:
– su
– sudo
Linux 檔案系統管理
• 檔案類型: file type
– regular files: data, ascii, binary programs..
– Directory
– device files: Block, Character
• 檔案系統類型:filesystem type
– ext2, ext3, reiserfs
– vfat, ntfs…..
Linux 檔案系統管理
• 樹狀目錄
Linux 檔案系統管理
• 檔案權限
Linux 檔案系統管理
• 基本檔案與目錄管理操作
– ls, pwd, cd, mkdir, rmdir
– cp, mv, rm,
– cat, nl, head, tail, less, more,
– file, diff
Linux 檔案系統管理
• 檔案屬性的變換
– chown, chgrp, chmod
– # chmod 777 bar
Linux 檔案系統管理
• 檔案的搜尋
– which command (與 PATH 有關)
– whereis filename
– locate filename
– find path type arguments
Linux 檔案系統管理
• SetUID, SetGID, Sticky bite
– 執行者在執行 binary program 過程中,
會擁有 binary program owner 的權限,稱
為 SUID。
– 若目錄被設定有 sticky bite 時,該目錄
內的資料僅有檔案擁有者及 root 有權限
刪除
Linux 檔案系統管理
• 連結檔
– hard link
• 不可跨 filesystems, 不可連結 directory
• 所有的 link 為 0 時,檔案才會完蛋。
– Symbolic link
• 就是『捷徑』囉!
Linux 檔案系統管理
• 磁碟分割槽的掛載問題:
– 每個 partition 就是一個完整的 filesystem
– 使用 mount 來掛載每一個 partition ,
– 需要有 mount point 來掛載 (directory)
– # mount -t vfat /dev/hda5 /mnt/windows
– # mount -t ntfs /dev/hda6 /mnt/winnt
– # mount -t ext3 /dev/hdb1 /mnt/linux2
Linux 檔案系統管理
• 磁碟分割槽的分割問題:
– fdisk 的使用(需瞭解 MBR, partition 的基
本觀念)
– mke2fs 來格式化
– fsck 來檢驗磁區
– /etc/fstab 來開機掛載!
Linux 開機流程管理
• Loader:載入核心所必需
– MBR (Master Boot Recorder)
– Super Block
• Linux Loader:
– LILO (LInux LOader)
– Grub
Linux 開機流程管理
• BIOS
• Loader 載入 Kernel
• 執行 init 程式(/etc/inittab 取得 run-level)
• /etc/rc./* scripts
• 載入外掛式模組(/etc/modules.conf)
• 載入各 run-level 所需 scripts
• /etc/rc.d/rc.local
Linux 開機流程管理
• 更改核心、多重開機:
– 修改 Loader 的啦!
• 開機時載入、關機時關閉
– /etc/rc.d/rc[0-6].d/scripts (Kxx, Syy)
– /etc/rc.d/rc.local
Linux 程序管理與工作排程
• 什麼是程序?
– 任何觸發系統工作的事件,系統會給予
一個 process ID 來控制該事件的執行,
這個 PID 就是程序!
– 需要注意到,程序『屬於誰?他的權限
是不同的!』而程序執行後輸出的訊息
則與資料流有關!
Linux 程序管理與工作排程
• 如何觀察程序?
– top
– ps
• 常駐記憶體的程式(daemon, 服務)
– 在背景下執行
– 是系統正常運作所必需要的(syslog,cron)
– 是某些服務提供所必需要的(www, mail..)
Linux 程序管理與工作排程
• 程序的優先執行順序?
– Priority
– nice value
• nice 新的 PID
• renice 已存在的 PID
Linux 程序管理與工作排程
• 給予程序『訊號, signal』
– kill -signal PID
• -1 重新讀取設定檔
• -9 無條件強制驅離記憶體
• -15 正常方式關閉該 PID
Linux 程序管理與工作排程
• 重要的程序之一:syslog
– 系統在背景下工作的各項服務所產生的
『訊息』均統一由 syslog 這個服務
(daemon) 所管理
– /etc/syslog.conf
– /var/log/messages
– /var/log/secure ...
Linux 程序管理與工作排程
• 背景與前景之工作管理
– & 與 ctrl + z
– jobs
– fg, bg, kill %number
– 最常見在『單一工作視窗』當中!
Linux 程序管理與工作排程
• 工作排程
– 循環式工作排程:
• crontab
• /etc/crontab
– 單一工作排程:
• at
Linux 套件管理員
• RPM
– 具有資料庫:容易安裝、升級、移除
– 在查驗及搜尋方面極為有效率
– 漏洞修補速度快速
– 最大的缺點:屬性相依的問題(這包含了
版本、平台等等)
Linux 套件管理員
• Tarball
– 為原始碼 (open source)
– 大部分的 tarball 均支援跨平台
– 需要額外的套件支援:make, kernel
source, gcc 等等
– 升級、反安裝等較為不方便
Linux 套件管理員
• 沒有任何一套作業系統會『完全』滿足您,
所以使用者必需要至少學習一種套件管理
員,以提供自我程式資料庫的安裝!
Linux 問題的檢驗程序
• 先查看螢幕出現的錯誤訊息;
• 由螢幕出現的錯誤訊息以 man 來查尋該問
題的解決方法;
• 檢驗登錄檔 (logfile) 的錯誤記錄;
• 由錯誤記錄反查該套件的設定檔或者相關
指令的校正!
個人小建議
• 學會一種以上的 package manager
• 務必努力去找男人!
• 至少要會使用 vi 吧~~ ^_^
• 一定要瞭解 Linux 的目錄架構
• 一定要知道 User, Group, Others,以及
Process 之間的關係!
個人小建議
• 知道如何追查與克服問題:
– 養成日誌觀察的好習慣!
– 天助自助者!
• 科技永遠來自於人類的惰性:
– 知道 cron 的用途;
– 訓練執行 BASH 與編寫 scripts 的能力
個人小建議
• 『會用』比『會考試』應該要重要的多!
• 由『實作』去體驗會比冥想有效的多!
• 由『搜尋』取代『發問』會快速而有效
的多!