操作系統發展史
Unix
- 1970年,美國貝爾實驗室的Ken Thompson,以BCPL語言為基礎,設計出很簡單且很接近硬件的B語言(取BCPL的首字母),並且他用B語言寫了第一個UNIX操作系統。
- 因為B語言的跨平台性較差,為了能夠在其他電腦上也能夠運行這個Unix操作系統Dennis Ritchie和Ken Thompson從B語言的基礎上准備研究一個更好的語言
- 1972年,美國貝爾實驗室的Dennis Ritchie在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。
- 1973年初,C語言的主體完成。Thompson和Ritchie迫不及待地開始用它完全重寫了現在大名鼎鼎的Unix操作系統。
Minix
- 意為小型UNIX(mini-UNIX)
Linux
- 創始人Torvalds
發展史
- Unix(只針對大型主機或服務器)
- BSD
- FreeBSD
- Sun Solaris
- IBM AIX
- AT&T System V
- Minix
- Linux(適用於x86的個人計算機)
- Ubuntu
- Redhat
- SUSE
- Fedora
- Linux(適用於x86的個人計算機)
- Minix
- BSD
Linux不同版本以及應用領域
1. Linux內核及發行版介紹
Linux內核版本
-
內核(kernel)是系統的心臟,是運行程序和管理像磁盤和打印機等硬件設備的核心程序,它提供了一個在裸設備與應用程序間的抽象層。
-
Linux內核版本
- 穩定版:具有工業級強度,可以廣泛的應用和部署。新的穩定版相對於較舊的只是修正一些bug或加入一些新的驅動。
- 開發板:由於要試驗各種解決方案,所以變化很快。
Linux發行版本
- Linux發行版(也被叫做GNU/Linux發行版)通常包含了包括桌面環境、辦公套件、媒體播放器、數據庫等應用軟件。
-
- Linux Mint
- Debian
- Ubuntu
- openSUSE
- Redhat
- Fedora
- Manjaro
- Mageia
- CentOS
- Arch
- Elementary
2. 應用領域
個人桌面領域的應用
- 典型代表:Ubuntu、Fedora、openSUSE
服務器領域
- 典型代表
- RedHat公司的AS系列
- 完全開源的debian系列
- suse EnterPrise 11系列等
嵌入式領域(如智能家居)
- 主要應用:機頂盒、數字電視、網絡電視、程控交換機、手機、PDA等都是其應用領域,得到了摩托羅拉、三星、NEC、Google等公司的大力推廣
文件和目錄
類Unix系統的目錄結構
-
Ubuntu沒有盤符這個概念,只有一個根目錄 “/”,所有文件都在它下面
-
/
- /bin
- /sbin
- /usr
- bin
- local
- include
- lib
- /lib
- …
Linux目錄
- /:根目錄,一般根目錄下只存放目錄,在Linux下有且只有一個根目錄。所有的東西都是從這里開始。當你在終端里輸入“/home”,你其實是在告訴電腦,先從/(根目錄)開始,再進入到home目錄。
- /bin:/usr/bin:可執行二進制文件的目錄,如常用的命令ls、tar、mv、cat等。
- /boot:放置Linux系統啟動時用到的一些文件,如Linux的內核文件:/boot/vmlinuz,系統引導管理器:/boot/grub
- /dev:存放Linux系統下的設備文件,訪問該目錄下的某個文件,相當於訪問某個設備,常用的是掛載光驅mount /dev/cdrom/mnt
- /etc:系統配置文件存放的目錄,不建議在此目錄下存放可執行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etx/X11、/etc/sysconfig、/etc/xinetd.d
- /home:系統默認的用戶家目錄,新增用戶賬號時,用戶的家目錄都存放在此目錄下,表示當前用戶的家目錄,edu表示用戶edu的家目錄。
- /lib:/usr/lib:/usr/local/lib:系統使用的函數庫的目錄,程序在執行過程中,需要調用一些額外的參數時需要函數庫的協助。
- /lost+fount:系統異常產生錯誤時,會將一些遺失的片段放置於此目錄下。
- /mnt:/media:光盤默認掛載點,通常光盤掛載於/mnt/cdrom下,也不一定,可以選擇任意位置進行掛載。
- /opt:給主機額外安裝軟件所擺放的目錄。
- /proc:此目錄的數據都在內存中,如系統核心、外部設備、網絡狀態,由於數據都存放在內存中,所以不占用磁盤空間,比較重要的目錄有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
- /root:系統管理員root家目錄。
- /sbin:/usr/sbin:/usr/local/sbin:防止系統管理員使用的可執行命令,如fdisk、shutdown、mount等。與/bin不同的是,這幾個目錄是給系統管理員root使用的命令,一般用戶只能“查看”而不能設置和使用。
- /tmp:一般用戶或正在執行的程序臨時存放文件的目錄,任何人都可以訪問,重要數據不可防止在此目錄下。
- /srv:服務啟動之后需要訪問的數據目錄,如www服務需要訪問的網頁數據存放在/srv/www內。
- /usr:應用程序存放目錄,/usr/bin存放應用程序,/usr/share存放共享數據,/usr/lib存放不能直接運行的,卻是許多程序運行所必需的一些函數庫文件。/usr/local:存放軟件升級包。/usr/share/doc:系統說明文件存放目錄。/usr/share/man:程序說明文件存放目錄。
- /var:放置系統執行過程中經常變化的文件,如隨時更改的日志文件/var/log,/var/log/message:所有登錄文件存放目錄,/var/spool/mail:郵件存放目錄,/var/run:程序或服務啟動后,其PID存放在該目錄下 。
用戶目錄
相對路徑和絕對路徑
絕對路徑
-
從 / 目錄開始描述的路徑為絕對路徑,如:
-
cd /home ls /usr
-
相對路徑
-
從當前位置開始描述的路徑為相對路徑,如:
-
cd ../../ ls abc/def
-
. 和 ..
- 每個目錄都有. 和 ..
- . 表示當前目錄
- .. 表示上一級目錄,即父目錄
- 根目錄下的. 和 ..都表示當前目錄
訪問權限
- 讀權限(r)
- 寫權限(w)
- 可執行權限(x)
Linux命令
1. 命令使用方法
-
Linux命令的格式:
-
command [-options] [parameter1] ...
-
command:命令名,相應功能的英文單詞或單詞的縮寫
-
[options]:選項,可用來對命令進行控制,也可以省略
-
[parameter1]:傳給命令的參數,可以是零個、一個或多個
-
2. 查看幫助文檔
- --help
- 一般是Linux命令自帶的幫助信息
- man(manual)
- man是Linux提供的一個手冊,包含了絕大部分的命令、函數使用說明。
- man中各個section意義如下:
- Standard commands(標准命令)
- System calls(系統調用,如open、write)
- Library functions(庫函數,如printf、fopen)
- Special devices(設備文件的說明,/dev下各種設備)
- File formats(文件格式,如passwd)
- Games and toys(游戲和娛樂)
- Miscellaneous(雜項、慣例與協定等,例如Linux檔案系統、網絡協定、ASCII碼、environ全局變量)
- Administrative Commands(管理員命令,如ifconfig)
3. 自動補全
- 在敲出命令的前幾個字母的同時,按下tab鍵,系統會自動幫我們補全命令
4. 歷史命令
- 當系統執行過一些命令后,可按上下鍵翻看以前的命令,history將執行過的命令列舉出來
文件、磁盤管理
文件管理
1. 查看文件信息:ls
- ls是英文單詞list的簡寫,其功能為列出目錄的內容,是用戶最常用的命令之一,它類似於DOS下的dir命令。
- Linux文件或者目錄名稱最長可以有265個字符,. 代表當前目錄,.. 代表上一級目錄,以 . 開頭的文件為隱藏文件,需要用 -a 參數才能顯示。
- ls常用參數:
- -a:顯示指定目錄下所有子目錄與文件,包括隱藏文件
- -l:以列表方式顯示文件的詳細信息
- -h:配合-l以人性化的方式顯示文件大小
2. 輸出重定向命令:>
3. 分屏顯示:more
4. 管道:|
- 一個命令的輸出可以通過管道作為另一個命令的輸入。
5. 清屏:clear
6. 切換工作目錄:cd
- cd ~ :切換到當前用戶的家目錄(/home/用戶目錄)
- cd - :切換到上次所在的目錄
7. 顯示當前路徑:pwd
8. 創建目錄:mkdir
9. 刪除目錄:rmdir
10.刪除文件:rm
- rm -i:以進行交互式方式執行
- rm -f:強制刪除,忽略不存在的文件,無需提示
- rm -r:遞歸的刪除目錄下的內容,刪除文件夾時必須加此參數
11. 建立鏈接文件:ln
-
Linux鏈接文件類似於Windows下的快捷方式
-
鏈接文件分為軟鏈接和硬鏈接:
- 軟鏈接:軟鏈接不占用磁盤空間,源文件刪除則軟鏈接失效。
- 硬鏈接:硬鏈接只能鏈接普通文件,不能鏈接目錄。
-
使用格式:
-
ln 源文件 鏈接文件 ln -s 源文件 鏈接文件
-
-s 為創建軟鏈接,不加 -s 則創建硬鏈接
-
12. 查看或者合並文件內容:cat
13. 文本搜索:grep
-
Linux系統中grep命令是一種強大的文本搜索工具,grep允許對文本文件進行模式查找。如果找到匹配模式,grep打印包含模式的所有行。
-
一般格式為:
-
grep [-選項] '搜索內容串'文件名
-
-
常用選項說明:
- -v:顯示不包含匹配文本的所有行(相當於求反)
- -n:顯示匹配行及行號
- -i:忽略大小寫
-
grep搜索內容串可以是正則表達式
14. 查找文件:find
- find命令功能非常強大,通常用來在特定的目錄下搜索符合條件的文件,也可以用來搜索特定用戶屬性的文件。
15. 拷貝文件:cp
16. 移動文件/重命名: mv
- 移動文件:mv 文件名 移動目錄
- 使用方法:mv 原文件名 新文件名
17. 歸檔管理:tar
- 計算機中的數據經常需要備份,tar是Unix/Linux中最常用的備份工具,此命令可以把一系列文件歸檔到一個大文件中,也可以把檔案文件解開以恢復數據。
- tar 使用格式:tar [參數] 打包文件名 文件
- tar 命令很特殊,其參數前面可以使用 ”-“,也可以不使用
- 常用參數:
- -c:生成檔案文件,創建打包文件
- -v:列出歸檔解檔的詳細過程,顯示進度
- -f:指定檔案文件名稱,f后面一定是.tar文件,所以必須放選項最后
- -t:列出檔案中包含的文件
- -x:解開檔案文件
- 注意:除了f需要放在參數的最后,其他參數的順序任意
18. 文件壓縮解壓:gzip
-
tar與gzip命令結合使用實現文件打包、壓縮。tar只負責打包文件,但不壓縮,用gzip壓縮tar打包后的文件,其擴展名一般用xxxx.tar.gz
-
gzip使用格式:
-
gzip [選項] 被壓縮文件
-
-
常用選項:
- -d:解壓
- -r:壓縮所有子目錄
-
也可使用 tar -zcvf ... 與 tar -zxvf ... 進行打包壓縮與解壓解包
19. 文件壓縮解壓:bzip2
- tar與bzip2命令結合使用實現文件打包、壓縮(用法和gzip一樣)。
- tar只負責打包文件,但不壓縮,用bzip2壓縮tar打包后的文件,其擴展名為xxxx.tar.gz2
- 在tar命令中增加一個選項(-j)可以調用bzip2實現一個壓縮的功能,實行先打包后壓縮的過程
- 壓縮用法:tar jcvf 壓縮包包名 文件 ...
- 解壓用法:tar jxvf 壓縮包包名
20. 文件壓縮解壓:zip、unzip
- 通過zip壓縮文件的目標文件不需要指定擴展名,默認擴展名為zip
- 壓縮文件:zip [-r] 目標文件 源文件
- 解壓文件:unzip -d 解壓后目錄文件 壓縮文件
21. 查看命令位置:which
系統管理
1. 查看當前日歷:cal
2. 顯示或設置時間:date
3. 查看進程信息:ps
- 進程是一個具有一定獨立功能的程序,它是操作系統動態執行的基本單元。
- ps命令可以查看進程的詳細狀況
- 常用選項(選項可以不加”-“)
- -a:顯示終端上的所有進程,包括其他用戶的進程
- -u:顯示進程的詳細狀態
- -x:顯示沒有控制終端的進程
- -w:顯示加寬,以便顯示更多信息
- -r:只顯示正在運行的進程
4. 動態顯示進程:top
- top命令用來動態顯示運行中的進程。top命令能夠在運行后,在指定的時間間隔更新顯示信息。可以使用top命令時加上-d來指定顯示信息更新的時間間隔。
5. 終止進程:kill
- 結束進程:kill PID,有些進程不能直接殺死,使用kill -9 PID進行強制結束。
6. 關機重啟:reboot、shutdown、init
7. 檢測磁盤空間:df
- df命令用於檢測文件系統的磁盤空間占用和空余情況,可以顯示所有文件系統對節點和磁盤塊的使用情況。
- 參數選項:
- -a:顯示所有文件系統的磁盤使用情況
- -m:以1024字節為單位顯示
- -t:顯示各指定文件系統的磁盤空間使用情況
- -T:顯示文件系統
8. 檢測目錄所占磁盤空間:du
- du命令用於統計目錄或我呢見所占磁盤空間的大小,使用命令的執行結果與df類似,du更側重於磁盤的使用狀況。
- 使用格式:du [選項] 目錄或文件名
- -a:遞歸顯示指定目錄中各文件和子目錄中文件占用的數據塊
- -s:顯示指定文件或目錄占用的數據塊
- -b:以字節為單位顯示磁盤占用情況
- -l:計算所有文件大小,對硬鏈接文件計算多次
9. 查看或配置網卡信息:ifconfig
10. 測試遠程主機連通性:ping
用戶、權限管理
1. 查看當前用戶:whoami
2. 查看登錄用戶:who
3. 遠程登陸:ssh
- ssh 用戶名@ip地址
4. 添加用戶賬號:useradd
- 在Unix/Linux中添加用戶賬號可以使用adduser或useradd命令,因為adduser命令是指向useradd命令的一個鏈接,因此,這兩個命令使用格式完全一樣。
- 使用格式:useradd [參數] 新建用戶賬號
- -d:指定用戶登錄系統時的主目錄,如果不使用該參數,系統自動在/home目錄下建立與用戶名同名目錄為主目錄
- -m:自動建立目錄
- -g:指定組名稱
5. 設置用戶密碼:passwd
6. 刪除用戶:userdel
- 同時刪除用戶目錄:userdel -r 用戶名
7. 切換用戶:su
8. 查看有哪些用戶組
- 方法一:cat /etc/group
- 方法二:groupmod + 三次Tab鍵
9. 添加、刪除組賬號:groupadd、groupdel
- groupadd 新建的組賬號
- groupdel 刪除的組賬號
- cat /etc/group 查看用戶組
10. 修改用戶所在組:usermod
- usermod -g 用戶組 用戶名
- -g為修改用戶默認組,-a -G為追加
11. 查看用戶在哪些組:groups
12. 為創建的普通用戶添加sudo權限
-
新創建的用戶,默認不能sudo,需要進行下面的操作:
-
sudo usermod -a -G adm 用戶名 sudo usermod -a -G sudo 用戶名
13. usermod -g 與 -G 的區別
- -g:用來指定這個用戶默認的用戶組
- -G:一般配合 -a 來完成向用戶添加其他組
14. 修改文件權限:chmod
- chmod:修改文件權限有兩種格式:字母法與數字法
- 字母法:chmod u/g/o/a +/-/= rwx 文件
- u:user 表示該文件的所有者
- g:group 表示與該文件的所有者屬於同一組(group)者,即用戶組
- o:other 表示其他以外的人
- a:all 表示這三者皆是
- +:增加權限
- -:撤銷權限
- =:設定權限
- r:可讀
- w:可寫
- x:可執行
- 數字法:“rwx” 這些權限也可以用數字來代替
- r:讀取權限,數字代號為 4
- w:寫入權限:數字代號為 2
- x:執行權限,數字代號為 1
- -:不具任何權限,數字代號為 0
15. 修改文件所有者:chown
- 使用方法:chown 用戶名 文件或目錄名
16. 修改文件所屬組:chgrp
- 使用方法:chgrp 用戶組名 文件或目錄名
17. 遠程拷貝:scp
- 遠程上傳:scp 上傳文件名 用戶名@ip地址:上傳的服務器路徑
- 遠程下載:scp 用戶名@IP地址:文件路徑 下載的本地路徑
- 上傳/下載目錄時,需要在scp后增加 -r 參數