Unix 系統設計 教學目標: This course will introduce the Unix operation system’s architectures and concurrent programming on Linux system. 教學大綱:教學內容大綱可分為以下5個部分 Unix的基本概念.

Slides:



Advertisements
Similar presentations
Linux 环境及 Shell 程序 操作系统实验 1. 二、 Shell 编程与进程通信 常用 shell 命令 文件及文件属性操作 ls 、 cp 、 mv 、 rm ln 、 ln –s 、 chmod 、 groupadd 、 useradd 输入输出操作 echo 、 cat >> 、
Advertisements

命令行操作 shell介绍 常见三种Shell ---Bourne shell(sh) ---C shell(csh)
Linux 網路教學 東南技術學院資訊工程系 職稱:講師 姓名: 曹茂勁 民國 92年 12月.
Linux 的历史、现状和未来 2011 《网管员世界》杂志社 副总编辑 孙浩峰.
第七章 操作系统接口 7.1 联机用户接口 7.2 Shell命令语言 7.3 系统调用 7.4 UNIX系统调用 7.5 图形用户接口.
红旗Linux认证培训 课程介绍.
第1章 Linux概述 马丽洁.
Linux 的檔案管理.
資訊安全與系統管理 2013/3/13 Chien wei lin.
UNIX系統與資料庫安裝 Why UNIX 常用的工具程式介紹 資料庫的安裝.
Hadoop 單機設定與啟動 step 1. 設定登入免密碼 step 2. 安裝java step 3. 下載安裝Hadoop
Linux.
Vi 編輯器的練習的說明 因為本課程的實習課是Unix 的工作環境。過去的經驗告訴我,如果你完全未用過Unix 的指令及其 vi 編輯器,你將很難跟上進度,希望學員一定要預先作練習。我們提供了Unix 指令的簡介,以及 vi 編輯器的介紹 ( 請参閱網站中的13&14-unix.pdf 為其講義;13-unix.exe、14-fortran.exe則為其課程錄影.
第 2 章 上機使用 Unix/Linux 內容: 操作介面 主機連線 登入主機 認識系統環境 使用者常用命令.
第 19 章 檔案系統與 權限設定.
臺北市立大學 資訊科學系(含碩士班) 賴阿福
台灣大學計算機及資訊網路中心 教學研究組 張傑生
Q101 在701 SDX Linux上的標準安裝與使用程序v2
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
檔案目錄結構.
JDK 安裝教學 (for Win7) Soochow University
Linux基本操作 實習1.
基礎linux指令說明 Part 1 資訊組 陳宜徽.
第1章 認識Arduino.
第二章 Linux基本指令與工具操作 LINUX 按圖施工手冊.
Linux 基础与常用命令简介 生物信息学培训班 杭州,2018年1月18日 周银聪.
第3章 Linux系统的基本操作 3.1 X Window图形化用户界面 3.2 GNOME的桌面环境 3.3 窗口和菜单操作
第二天 计算机基础技能培训 (一)linux基础知识
桌面環境簡介及IDE開發工具 Outline (一)什麼是Linux? (二)桌面環境系統簡介 (三)IDE開發工具.
R教學 安裝RStudio 羅琪老師.
網路資源的建立--LINUX系統 國立東華大學電算中心 陳鴻彬.
Linux基本操作 程設實習課 ( 2/25 ).
伺服器探索營 Day 1 指導老師: 張啟中 (JohnAxer) 教學助理:
安裝JDK 安裝Eclipse Eclipse 中文化
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A.
Chapter 6 Linux 檔案權限與目錄配置 VBird 2005/08/03
檔案與磁碟的基本介紹.
網路安全技術期末報告 Proxy Server
虛擬機器 下載QEMU Windows版 (0.9.1) 下載Kqemu Windows版 安裝QEMU 安裝Kqumu
Linux作業系統 電腦教室Linux使用說明.
系统管理员培训(I期) 浙江省基层人民法院 -V8版介绍及系统管理培训 二OO八年四月二十三日 法院事业部经理:周春宏
第二章 UNIX系统安装与常用命令.
如何有效率的學習Linux 培養組合能力 多用程式, 少寫程式 從錯誤訊息中學習 養成略讀 “各種文件” 加強英文基本閱讀能力 勤作筆記
雲端計算.
第三章 UNIX的文件与目录.
UNIX指令-檔案與目錄操作.
Unix 指令1.
Presenter: Chih-Hsun Wang Date: 2015/9/15
杨振伟 清华大学 第一讲:Linux环境下编程(1)
網路資源的建立--LINUX系統 系統管理
利用 EditorConfig 自訂文字編輯器設定
Lab01 工作站&Linux操作 日期:2011/03/07.
台灣大學計算機及資訊網路中心 教學研究組 張傑生
Unix 安裝過程 使用2個磁片 到 rawwrite bootnet.img drvnet.img 利用rawwrite 將image檔寫入磁片.
基本指令.
程序管理 蘇偉順助教.
Cloud Operating System - Unit 03: 雲端平台建構實驗
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
MultiThread Introduction
第12章 Linux與 嵌入式uClinux系統
粒子物理与核物理实验中的数据分析 杨振伟 清华大学 第1讲:Linux环境下的编程.
杨振伟 清华大学 第一讲:Linux环境下编程(1)
Linux文件系统.
Chapter 4 Multi-Threads (多執行緒).
劉庠宏、林合治編著 國立高雄大學應用數學系 2005年3月1日
第六章 文件系统与文件管理 6.4 Linux文件管理 1、比较MS DOS 与 Linux的目录结构 一、Linux文件系统的树形结构
Unix指令4-文字編輯與程式撰寫.
Develop and Build Drives by Visual C++ IDE
Presentation transcript:

Unix 系統設計 教學目標: This course will introduce the Unix operation system’s architectures and concurrent programming on Linux system. 教學大綱:教學內容大綱可分為以下5個部分 Unix的基本概念 Shell Programming Process Inter Process Communication Linux GUI

主要教材:Richard Stones、Neil Matthew, Beginning Linux Programming 3rd Edition. ISBN: 0-7645-4497-7

大綱 Unix 系統背景 開始使用Unix Unix 基本指令 Unix 檔案系統 Shell 命令 nano .bashrc export TERM=vt100 LANG=zh_TW.Big5 (zh_TW.UTF-8)

1969 年 Ken Thompson 在AT&T的 Bell Lab,利用一部閒置的 PDP-7 研究新的作業系統 . Dennis Ritchie 加入 Ken Thompson 一同開發這個新作業系統 . 4.x BSD (Berkeley Software Distribution) System IV 八十年代末有一些整合的動作,如 Sun Solaris Os 及 POSIX

Unix 的哲學是作業系統核心只提供少數不可或缺的功能,其它的功能則以使用者程式的型式加上去 . 1991 年,Linus Torvalds (波蘭)開始使用 MINIX,他對 MINIX 提供的功能不滿意,自行發展 Linux .

Slackware (4.0) 元老 RedHat (6.1) 安裝容易 .Debian 結構最嚴謹 SuSE (歐洲) Turbolinux (日本,大陸) OpenLinux(?) Caldera公司商用軟體 PowerLinux 網虎based on RH--?Xlinux 1.0萬國語言版 Mandrake Linux based on RH Corel Linux BluePoint Linux (大陸華南) CLE :中文延伸套件 0.9

Unix 作業系統的特點 多使用者/多工能力(Multi-user/Multi-tasking) 開放性系統(Open system) 網路環境(Network Environment)優良 公用程式(Utility)/外殼(Shell)功能強 可攜性(Portability)高

Unix 系統架構 整個 Unix 系統架構可區分為四個層次: 硬體(Hardware):包含各種週邊設備的驅動程式。 系統核心(Kernel):CPU 排序、記憶體管理、行程管理。 外殼(Shell):人機介面程式、各種系統操作命令。 使用者(User)/應用程式(Application Program)/ 檔案系統(File system)

開始使用 Unix 系統 使用 Unix 系統有兩種主要方法: X-windows:CDE 視窗介面操作,類似 Windows 操作方法。 The Common Desktop Environment (CDE) is an X Window environment that provides a consistent look and feel across multiple Unix platforms. Command-Line:控制命令行的輸入。 the shell interface

登入主機 login 使用者登入 password 使用者密碼輸入 Red Hat Linux release 9 (Shrike) Kernel 2.4.20-8 on an i686 login: cwang Password: Last login: Wed Sep 8 08:58:02 from 140.127.138.31 [tsnien@lab105805 tsnien]$

簡單操作系統 pwd 顯示目前工作位置 Every account has a home directory. man: 查詢指令用法 /home/tsnien $

認識系統的目錄 在安裝 Linux 的磁碟中會有許多系統預設的目錄, 這些目錄依照不同的用途而放置特定的檔案。以下將詳細說明各預設目錄的功用: /:根目錄, 包含整個 Linux 系統的所有目錄和檔案。 /bin:此目錄放置操作系統時, 所需使用的各種指令程式。例如 cp、rpm、kill、tar、mv、rm 與 ping 等等常用指令, 還有各種不同的 shell, 如 bash、bash2、tcsh 等等。

認識系統的目錄 /boot:系統啟動時必須讀取的檔案, 包括系統核心在內。 /dev:存放周邊設備代號的檔案。例如硬碟的 /dev/hda、終端機的 /dev/tty0 等等。這些檔案比較特殊, 它們實際上都指向所代表的周邊設備。 /etc:放置與系統設定、管理相關的檔案。例如記錄帳號名稱的 passwd 檔、投影密碼檔 shadow 都放在這裡。

認識系統的目錄 /etc/rc.d:這個目錄包含了開機或關機時所執行的 script 檔案。 /etc/X11:放置 X Window System各設定檔的目錄。 /home:此目錄預設用來放置使用者帳號的家目錄。 /lib:放置一些共用的函式庫。

認識系統的目錄 /lib/modules:存放系統核心的模組。某些可被模組化的部份, 並不需要在編譯系統核心時放入核心本體, 避免核心過大導致效率低落。 /lost+found:檔案系統發生問題時, Linux 會自動掃描磁碟試圖修正錯誤, 倘若找到遺失或錯誤的區段, 就會將這些區段轉成檔案存放於此目錄, 等候管理人員進一步處理。

認識系統的目錄 /misc:預設空無一物, 供管理者堆放公共雜物。預設權限是全部使用者都可以讀取和執行檔案, 但是只有管理者能夠寫入檔案。 /mnt:此目錄下預設有 /mnt/cdrom 和 /mnt/floppy 兩個目錄, 用來做為光碟與軟碟片的掛載點。 有些發行版 (如 SUSE Linux 、Fedora Core 3 ) 會另有 /media 目錄, 其預設的光碟及軟碟掛載目錄位於該目錄下。

認識系統的目錄 /proc:系統核心和執行程序之間的資訊, 比如說執行 ps、free 等指令時所看到的訊息, 就是從這裡讀取。這目錄內的檔案並非真的存在, 使用者看到的是如同幻影般的虛擬檔案。 /root:系統管理者專用的目錄, 亦即 root 帳號的家目錄。 /sbin:此目錄存放啟動系統需執行的程式, 例如 fsck、init、grub、lilo 與 swapon 等。

認識系統的目錄 /tmp:供全部使用者暫時放置檔案的目錄。系統預設可讓所有使用者讀取、寫入和執行檔案, 因此對於一般使用者來說, 若臨時覺得自己的磁碟空間不敷使用, 便能暫時利用此目錄存放檔案。這裡也是暫存檔的目錄, 某些程式在執行中所產生的臨時檔案, 會存放在這個目錄內。 /usr:此目錄包括許多子目錄, 用來存放系統指令、程式等資訊。

認識系統的目錄 /usr/bin:放置使用者可以執行的指令程式, 如 find、free、gcc 等等。 /usr/local:此目錄用來存放自行編譯的軟體, 以便與使用 RPM 安裝的軟體互相區隔, 避免兩個套件系統發生衝突的情況。 /usr/share/doc:存放各種文件的目錄。 /usr/share/man:放置多種線上說明文件。

認識系統的目錄 /usr/src:存放原始碼的地方, Linux 系統核心的原始碼就放在這裡。 /usr/X11R6: X Window System除了放在 /etc/X11 目錄中的設定檔外, 其他所有檔案都放在這個目錄下。

認識系統的目錄 /var:系統執行時, 內容經常變動的資料或暫存檔, 都會放置在這個目錄裡。包括使用者的郵件檔案、記載系統活動過程的記錄 (log) 檔、列印工作的佇列檔、暫存檔及系統執行程式的 PID (Process ID, 程序識別碼) 記錄等等。Apache 網頁目錄與 FTP 目錄等伺服器的專用目錄也位於此處。

認識系統的目錄 /var/tmp:前面介紹的 /tmp 目錄除了放置所有使用者暫時存放的檔案之外, 還提供程式存放其產生的暫存檔, 因此經常會因堆放許多檔案, 而顯得非常雜亂。管理者通常會定時清理 /tmp 目錄, 維護磁碟空間的整潔。假如不想將某些檔案淌入 /tmp 目錄的混水之中, 避免殃及池魚而遭管理者刪除, 可以選擇存放在這裡, 雖然還是一個暫存目錄, 至少環境清幽, 檔案比較不會被無辜砍殺。

13-2 Linux 下的路徑表示法 Linux 的目錄是一個樹狀結構, 所有的目錄都在根目錄下。在切換目錄, 或是儲存、複製、搬移檔案時都需要指定路徑, 讓系統知道您的目的地為何。在指定路徑的時候, 我們可以採用 "絕對路徑" 或 "相對路徑", 此兩者的區別如下:

Linux 下的路徑表示法 絕對路徑:所謂絕對路徑就是由根目錄開始, 逐一列出檔案或目錄的所在位置。例如使用者 tony 家目錄下, tmp 子目錄中 test.txt 檔的絕對路徑即為/home/tony/tmp/test.txt。 絕對路徑的好處在於清楚:使用者可以由路徑中清楚的看到目錄或檔案在目錄樹中的位置。缺點則在於麻煩:當檔案位於多層子目錄下時, 即使有指令補全功能的 鍵幫忙, 要列出詳細的路徑還是一件很累人的事。

Linux 下的路徑表示法 相對路徑:相對路徑是相對於某一個特定目錄的路徑表示法。例如: "." 代表現行目錄, "./tmp/test.txt" 即表示在現行目錄下 tmp 子目錄中的 test.txt 檔。 相對路徑的好處在於簡單且較具彈性:不需要長篇大論的由根目錄開始列出檔案或目錄的位置, 並且在某些不需要強制要求絕對位置的狀況下, 可以讓使用者彈性的決定要從哪個目錄開始放置相對路徑所描述的檔案或目錄。

Linux 下的路徑表示法 使用相對路徑之前, 必須要先知道常用的目錄符號及其代表的意義, 筆者表列如下:

Linux 下的路徑表示法 例如以 root 帳號登入, 目前位於 /etc/httpd 目錄下, 則可以如下使用上述目錄符號切換目錄:

檔案與目錄管理 ls [-ailS] 參數說明: -a       :全部的檔案都列出(連同隱藏檔) -i       :印出 inode 的值 -l       :長的列出,連同檔案大小的資料等等 -S       :以檔案大小排序

Linux 檔案 # ls –al

Linux 檔案種類 正規檔案( regular file ) 目錄 (directory): 連結檔 (link): 第一個屬性為 [ - ] 純文字檔(ascii) 二進位檔(binary)  目錄 (directory): 第一個屬性為 [ d ] 連結檔 (link): 第一個屬性為 [ l ] 設備檔 (device): 區塊 (block) 設備檔,第一個屬性為 [ b ]; 字元 (character) 設備檔,第一個屬性為 [ c ]。 p 表示有名稱的通道(Pipe)檔案

檔案存取特權 任何檔案可針對下列三種類別使用者規劃權限: 擁有者(Owner):第一個 rwx(rwx --- ---)。檔案擁有者存取此檔案的權利如何。 群組(Group):第二個 rwx(--- rwx ---)。檔案擁有者所屬群組的其他組員,存取該檔案的權限如何。 其他(Other):第三個 rwx(--- --- rwx)。任何人存取該檔案的權限如何。

更改檔案權限 修改檔案的模式(chmod):僅檔案擁有者才可以針對該檔案變更存取模式。 u 檔案的使用者(擁有者) g 群組(group) o 其他人(other) a 所有人(包含 u, g, o) = 指定權限 + 增加權限 - 移除權限

範例 範例一:增加擁有者執行(x)的權利 範例二:移除群組的讀與寫的權利 $ chmod u+x filename $ chmod g-rw filename 另外,chmod 也可以直接設定被執行的權利。設定方式如下: rwx rwx rwx (0~7 0~7 0~7) r =0/1,0 則表示沒有該權限,1 表示有該權限;譬如擁有者有讀取與寫入的權限,則表示為:110,以 8 進位表示則為 6。因此,每一群組的權限為 0 ~7。

檔案與目錄管理 cd pwd mkdir 變換目錄 cd /root 顯示目前的目錄 建立一個新目錄 mkdir –p /root/abc/123 rmdir 刪除一個裡面是空的空目錄 rmdir –p abc/123 環境變數PATH echo $PATH PATH=”$PATH”:/root

檔案與目錄管理 cp [-drsu] [來源檔] [目的檔] 參數說明: -d:在進行 copy 的時候,如果是 copy 到 link 檔案,若不加任何參數,則預設情況中會將 link 到的原始檔案copy 到目的地,若加 -d 時,則 link 檔案可原封不動的將 link 這個捷徑其拷貝到目的地 -r:可以進行目錄的 copy -s:做成連結檔,而不 copy 之意!與 ln 指令相同功能! -u, --update:如果來源檔比較新,或者是沒有目的檔,那麼才會進行 copy 的動作

檔案與目錄管理 rm [-fir] [檔名] 參數說明: -i     :提供使用者確認(這是預設值) -r     :遞迴刪除 -f     :強力刪除

檔案與目錄管理 mv [-u] [來源檔] [目的檔] 參數說明: -u   :同樣的,為 update 的簡寫,當來源檔比目的檔還新的時後才會動作

觀看檔案內容 cat 由第一行開始顯示檔案內容 tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫 more 一頁一頁的顯示檔案內容 less 與 more 類似,可以往前翻頁 head 只看頭幾行 tail 只看尾巴幾行 nl   顯示的時候,順道輸出 行號 od   以二進位的方式讀取檔案內容

檔案與目錄操作命令 cat 顯示檔案內容 $ cat file_1 $cat >file_2 將螢幕上所輸入的字元,複製到 file_2 檔案內。Ctrl+Z 結束輸入。 $ cat file_2 >file_3 將所顯示的 file_2,轉向複製到 file_3。 $ cat file_2 >>file_3將所顯示的 file_2,Append 到 file_3 上。 『<』轉向輸入。 『>』轉向輸出。 『>>』轉向 Append。 $ cal 10 2004 >oct.2004 $ cal 11 2004 >nov.2004

程序控制 ps顯示目前系統process狀況。 格式:ps [options] Option: -a 顯示全部的process。 -u 顯示process的使用者。 -l 顯示process更多的訊息。

程序控制 指令 & 將欲執行的命令(或程式),放到背景作業執行。 Example: %cc myprog.c & %who | sort > list & *如果在.chrc檔內有set notify的命令,則系統會以[Done]來顯示背景作業己執行完畢。

程序控制 jobs列出在此系統上所有的Background job。 [1] Stopped mail huang [2] - Running cat > file1 [3] + Stopped vi (1) (2) (3) (4) (1) job number 工作代號。 (2) + 表示current job。 - 表示next current。 (3)每個job目前執行的狀況。 (4) job的作業內容。

程序控制 kill刪除一個job。 格式:kill %job-number或kill pid Example: %kill %3 *如果尚無法清除此job,則可則改用以 %kill -9取代kill指令。 %kill -9 8122

FTP ftp hostname ? ls, dir get, put mget, mput lcd

grep grep : very useful command which looks for a particular string in all the files in the directory and tell you were it has found it grep –n : also returns the line number. For instance, grep –n string *.F searches for string in the files with an F extension and returns the line number

Other who/w查詢目前進入系統的使用者。 %who %whoami %who am i %w talk user talk to another user

Other fnger查詢目前進入系統的使用者。 %finger u8442019

Other nslookup 格式:nslookup 網站 examples: %nslookup www.ncue.edu.tw

Other ping 格式:ping 網站 examples: %ping bbs.ccu.edu.tw

Other traceroute 網站 格式:traceroute 網站 examples: %traceroute www.chinatimes.com.tw

Other passwd change password

六、vi 編輯 Unix/Linux 文字編輯工具,常見的有: 使用任何編輯工具都必須考慮到終端機型態的問題,設定方式如下: emacs:功能較 vi 強。 pico:郵件編輯工具。 xedit:X-Windows 編輯工具。 CDE 編輯工具:類似 Word 的操作方式。 使用任何編輯工具都必須考慮到終端機型態的問題,設定方式如下: $ TERM=vt100 $ export TERM

6-1 vi 模式 命令模式:『:』記號底下,允許輸入編輯 命令。 輸入模式:允許輸入文字。 模式切換: 命令模式 => 輸入模式:i, I, a, A, R, o, O。 輸入模式 => 命令模式:按『ESC』鍵。

6-1 vi 模式 單鍵命令功能: i:插入文字到游標右邊。 I:同上,但左邊。 a:附加文字到游標右邊。 A:附加文字到該行尾端。 o:目前行的下方開一行。 O:目前行的上方開一行。 x:刪除游標上文字。 dd:刪除游標上該行。 yy:將游標所在整行複製到緩衝區內。 p:將緩衝區內資料複製到游標所在位置。

6-1 vi 模式 游標移動: 上、下、左、右鍵。 Ctrl + h, j, k, l。

6-2 vi 文字命令 記號『:』:在命令模式下,由鍵盤輸入冒號。 : e file_1:編輯 file_1 檔案。 : w file_2:存檔寫入 file_2 檔案。 : q:離開。 : wq:寫入並離開。 : q!:強迫離開。 : ! ls -l:執行 Shell 命令。 : e:回到全螢幕編輯。 : /text:由游標位置開始,尋找 text 文字的所在位置。 : /:重複上一個尋找。

6-3 vi 範例練習 (1) 編寫一個 hello.c 程式 # include <stdio.h> int main() { printf("Good Lucky to you\n"); return 0; } C file 副檔名必須 *.c

# include <stdio.h> int main() { printf("Good Lucky to you\n"); return 0; }

6-3 vi 範例練習 編譯程式 執行程式 $ cc –o hello hello.c $ gcc –o hello hello.c $ g++ -o hello hello.c 執行程式 $ ./hello

% cc foobar.c 執行檔就是 a.out % cc -o foobar foobar.c 執行檔就是 foobar

int foo (int *p); int main (void) { int *p = 0; /* null pointer */ return foo (p); } foo (int *p) int y = *p; return y;

% cc -g foobar.c g 將會把一些給 gdb 用的除錯訊息包進去執行檔裡面

Segmentation fault (core dumped) 這個錯誤表示你的程式在記憶體中試著做一個嚴重的非法運作(illegal operation), UNIX 就是被設計來保護整個作業系統免於被惡質的程式破壞,所以才會告訴你這個訊息。 基本上當程式在很多情況下發生錯誤後, 作業系統會把 core memory 中的資訊寫入 core 這檔案中, 以便讓 programmer 知道程式到底是為何出錯。

ulimit -c 0 代表 core dump 被關掉 ulimit -c unlimited gdb a.out core Type where in gdb

# include <stdio.h> int main() { int i, j ; for(i=0; i < 500000; i++) for(j=0; j < 500000; j++) ; printf("Good Lucky to you\n"); return 0; }