概要
計算機與操作系統、linux發行版及他們之間聯系與區別、Linux的哲學思想、linux系統上命令使用格式及基礎命令介紹、linux命令幫助說明、FHS
一、計算機與操作系統
什么是計算機?
電子計算機(computer),亦稱電腦,是一種利用電子學原理,根據一系列指令對數據進行處理的工具。
電子計算機被人形象的稱之為電腦?,F代電子計算機之父”約翰-馮-諾依曼(John von Neumann,1903~1957)。盡管計算機技術自20世紀40年代第一部電子通用計算機誕生以來以來有了令人目眩的飛速發展,但是今天計算機仍然基本上采用的是存儲程序結構,即馮·諾伊曼結構,這個結構實現了實用化的通用計算機。
計算機系統組成
硬件
cpu:中央處理單元; ALU:算術/邏輯單元;PC:程序計數器;USB:通用串行總線
控制器、運算器、主存儲器、輸入設備、輸出設備 構成了計算機硬件系統五大核心部件
-
處理器(cpu):
中央處理單元(CPU),簡稱處理器,是解釋(執行)存儲在主存中的指令的引擎。處理器的核心是一個字長的存儲設備(或寄存器),稱為程序計數器(PC)。
它包含
-
運算器:負責計算機的算術運算和邏輯運算,而運算的最終結果和中間結果要送入內存中保存;
-
控制器:控制計算機各部分協調工作;
-
寄存器(Register):寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數據和地址;
-
緩存:指訪問速度比一般隨機存取存儲器(RAM)快的一種RAM,L1,L2,L3等三級。
-
主存(主存儲器):
-
主存是一個臨時存儲設備,在處理器執行程序時,用來存放程序和程序處理的數據。物理層面:動態隨機存取存儲器(DRAM)芯片組成。邏輯層面:存儲器是一個線性的字節數組,每個字節都有唯一的地址(數組索引),地址從零開始。
-
I/O設備:
-
輸入/輸出設備是系統與外部時間聯系的通道。每個I/O設備都通過一個控制器或適配器與I/O總線相連,控制器與適配器之間的區別在于他們的封裝方式。
總線:貫穿整個系統一個電子管道,稱作總線,它攜帶信息字節并負責在各個部件間傳遞。通??偩€被設計為傳送特定字長的字節快,也就是字,字中的字節數(即字長)是一個基本的系統參數,大多數機器字長位4個字節(32位),8個字節(64位)。
軟件
什么是操作系統?
操作系統(operating system,縮寫:OS)是管理計算機硬件與軟件資源的計算機程序,同時也是計算機系統的內核與基石。操作系統需要處理如管理與配置內存、決定系統資源供需的優先次序、控制輸入與輸出裝置、操作網絡與管理文件系統等基本事務。操作系統也提供一個讓使用者與系統互動的操作界面。
簡單來說完整的os基本結構:
Kernel+Application
-
1.把硬件虛擬,完成監控,把cpu按時序復用,把內存分片復用
-
2.在程序角度,它認為自己獨占cpu和內存,認為只有監控程序和自己
-
3.運行中的程序,放到電腦上不動,叫程序文件
-
狹義上的OS: kernel
我們可以把操作系統看成是應用程序與底層硬件之間插入的一層軟件,所有應用程序對硬件的操作嘗試都必須通過操作系統。
操作系統的2個基本功能:
-
防止硬件被失控的應用程序濫用。
-
向應用程序提供簡單一致的機制來控制復雜的低級硬件設備
用戶可以通過操作系統的用戶界面,輸入命令。操作系統則對命令進行解釋,驅動硬件設備,實現用戶要求。以現代標準而言,一個標準PC的操作系統應該提供以下的功能:
-
進程管理(Processing management)
-
內存管理(Memory management)
-
文件系統(File system)
-
網絡通信(Networking)
-
安全機制(Security)
-
用戶界面(User interface)
-
驅動程序(Device drivers)
二、linux基礎–發行版介紹
linux 發行版(Linux distribution,也被叫做GNU/Linux 發行版),為一般用戶預先集成好的Linux操作系統及各種應用軟件。一般用戶不需要重新編譯,在直接安裝之后,只需要小幅度更改設置就可以使用,通常以軟件包管理系統來進行應用軟件的管理。
發行版分類(數百種之多):
-
商業發行版
-
Fedora(Red Hat) Ubuntu(Canonical公司) openSUSE(Novell)
-
社區發行版
-
Debian : ubantu是基于Debian發行版和GNOME桌面環境,與Debian的不同在于它每6個月會發布一個新版本
-
gentoo
-
其他
-
Slackware :Slackware走了一條與其他的發行版本(Red Hat、Debian、Gentoo、SuSE、Mandriva、Ubuntu等)不同的道路,它力圖成為“UNIX風格”的Linux發行版
主流發行版之間的聯系與區別:
Debian:主流發行版之一唯一一個沒有商業公司支持的,技術要求高。
-
Ubuntu:基于debian的二次發行版
-
mint:是一份基于Debian和Ubuntu的Linux發行版。其目標是提供一種更完整的即刻可用體驗,這包括提供瀏覽器插件、多媒體編解碼器、對DVD播放的支持、Java等其他組件,界面華麗。
-
Knopix:基于debian的二次發行版,以自由軟體Linux的Debian套件為主干,不必安裝,免用硬碟,直接在光碟上執行完整的Linux作業系統,它既可以用來當桌上工作站用,也可以用來當網路伺服主機
Slackware 主流發行版
-
S.u.S.E 擁有界面友好的安裝過程,還有圖形管理工具,可方便地訪問Windows磁盤,對于終端用戶和管理員來說使用它同樣方便,這使它成為了一個強大的服務器平臺;歐洲主流
-
OpenSUSE: 基于s.u.S.E衍生版,界面華麗著稱。
RedHat 主流發行版
-
Fedora core:Fedora是基于RHEL,CentOS,Scientific Linux, 和Oracle Linux的社區版本。相比RHEL,Fedora打包了顯著的更多的軟件包-一般增加更多新功能特性的軟件,一般6個月跟新一次,喜歡嘗鮮的可嘗試。
-
RHEL:Red Hat Enterprise Linux(RHEL)是一個由 Red Hat 開發的商業市場導向的 Linux 發行版,只提供源碼包,技術支持的維護費用;
-
CentOS:Red Hat Enterprise Linux依照開放源代碼規定發布的源代碼所編譯而成;可以認為centos是RHEL的山寨版;
Gentoo:需了解的發行版
-
是Linux世界最年輕的發行版本,正因為年輕,所以能吸取在她之前的所有發行版本的優點。Gentoo最初由Daniel Robbins(FreeBSD的開發者之一)創建,首個穩定版本發布于2002年。由于開發者對FreeBSD的熟識,所以Gentoo擁有媲美FreeBSD的廣受美譽的ports系統 ——Portage包管理系統。
Arch Linux: 需了解的發行版
-
是起源于加拿大的一份致力于使用簡單、系統輕量、軟件更新速度快的GNU/Linux發行版。粉絲也很多,新貴;
centos與linux之間的關系:
centos是linux的發行版之一,linux其實完整意義叫(GUN/LINUX),他由linux內核和GUN組織的各種開源軟件聯合起來構成一個龐大完整的操作系統,官方提供的都是源碼,所以需要第三方組織代為提供成熟版本。明白他們的關系了吧??!
注:以上都是比較著名的版本,不著名有數百種至多。有興趣的童鞋可以查看:linuxtimeline< http://futurist.se/gldt/2012/10/29/gnulinux-distribution-timeline-12-10/>
三、linux哲學思想
官方思想:
1、一切皆文件 文件是就是存儲于磁盤上的一段流式數據(字節序列)
-
硬件設備也被描述成文件,包括鍵盤、顯示器、硬盤、網絡等,所有設備都抽象成文件提供統一接口給用戶
2、由眾多功能單一的程序組成: 一個程序只做一件事,并且做好;
-
目的,一個程序只做一件事,要做好,組合小程序,完成其他功能;
3、盡量避免與用戶交互,完成自動化交互。
4、配置文件保存為文本文件
注:
所有設備都抽象成文件提供統一接口給用戶,文件就是一段二進制代碼流;“一切皆是文件”是 Unix/Linux 的基本哲學之一。不僅普通的文件,目錄、字符設備、塊設備、 套接字等在 Unix/Linux 中都是以文件被對待;它們雖然類型不同,但是對其提供的卻是同一套操作界面。
系統為磁盤上的文本與圖像、鼠標與鍵盤等輸入設備及網絡交互等 I/O 操作設計了一組通用 API,使他們被處理時均可統一使用字節流方式。換言之,UNIX 系統中除進程之外的一切皆是文件,而 Linux 保持了這一特性。
為了便于文件的管理,Linux 還引入了目錄(有時亦被稱為文件夾)這一概念。目錄使文件可被分類管理,且目錄的引入使 Linux 的文件系統形成一個層級結構的目錄樹。下圖示的是普通 Linux 系統的頂層目錄結構,其中 /dev 是存放了設備相關文件的目錄。
Linux 系統的頂層目錄結構
/ 根目錄 ├── bin 所有用戶可用的基礎命令程序文件 ├── sbin 供系統管理使用的工具程序; ├── boot 引導加載器必須用到的各種靜態文件:kernel,initramfs(initrd),grub; ├── dev 存放設備文件 ├── etc 系統程序的配置文件,只能為靜態的,不能為二進制程序; ├── home 普通的用戶家目錄的集中位置;一般每個普通用戶的家目錄默認為此目錄下與用戶名 同名的子錄,/home/USERNAM ├── lib 為系統啟動或根文件系統上的應用程序(/bin,/sbin等)提供共享庫,以及為內核提供內核模 ├── lost+found 文件系統恢復時的恢復文件 ├── media 可卸載存儲介質掛載點 ├── mnt 文件系統臨時掛載點 ├── opt 附加的應用程序包,第三方應用程序;可選路徑; ├── proc 系統內存的映射目錄,提供內核與進程信息 ├── root root 用戶主目錄 ├── sbin 存放系統二進制文件 ├── srv 存放服務相關數據 ├── sys sys 虛擬文件系統掛載點 ├── tmp 存放臨時文件,可供所有用戶執行寫入操作,有特殊權限; ├── usr 讓系統管理員安裝本地應用程序;也通常用于安裝第三方程序 └── var 存放郵件、系統日志等變化文件
設備類型:
-
字符設備:(線性設備)存取的數據是以字符為單位的 顯示器 鍵盤 線性設備:有時序的,鍵入的是什么,就顯示是什么;
-
塊設備:(隨機設備)把所有字符設備打包 硬盤 把硬盤劃分成固定大小的塊 隨機設備:隨機訪問;
文件類型:
~]# ls -l /var/ drwxr-xr-x. 2 root root 4096 Jun 6 22:07 account -rw-r--r-- 1 root root 19 Sep 29 09:45 test.txt crw-rw---- 1 vcsa tty 7, 134 Nov 28 19:35 vcsa6 brw-rw---- 1 root disk 1, 3 Nov 29 2016 ram3 lrwxrwxrwx 1 root root 4 Nov 28 19:35 root -> sda3
-:常規文件;即f;
d:directory,目錄文件
b:block device,塊設備文件,支持一“block”為單位進程隨機訪問
c:character device,字符設備文件,支持以“character”為單位進行線性訪問
l:symbolic link 符號鏈接文件,快捷方式;
p:pipe,命名管道;
s:socket,套接字文件,2個進程通信時候套接;
四、linux系統上命令的使用格式
命令的語法通用格式
~]# COMMAND OPTIONS ARGUMENTS
COMMAND: 發起一命令:請求內核將某個二進制程序運行為一個進程
多數系統程序文件都存放在:/bin, /sbin, /usr/bin, /usr/sbin,/usr/local/bin, /usr/local/sbin
普通命令:/bin, /usr/bin, /usr/local/bin
管理命令:/sbin, /usr/sbin, /usr/local/sbin
共享庫:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
32bits的庫:/lib, /usr/lib, /usr/local/lib
64bits的庫:/lib64, /usr/lib64, /usr/local/lib64
OPTIONS:指定命令的運行特性;
選項有兩種表現形式:
短選項:-C, 例如-l, -d 注意:有些命令的選項沒有-; 如果同一命令同時使用多個短選項,多數可合并:-l -d = -ld 長選項:--word, 例如--help, --human-readable 注意:長選項不能合并; 注意:有些選項可以帶參數,此稱為選項參數;
ARGUMENTS:
命令的作用對象;命令對什么生效;
注意:不同的命令的參數;有些命令可同時帶多個參數,多個之間以空白字符分隔;
~]# ls -ld /var /etc
命令分為兩類: 外部命令:獨立的可執行程序文件,文件名即命令名,shell自身是外部命令 內置命令(builtin):由shell程序的自帶的命令
bash:包含很多自帶的命令
~]# type bash bash is /bin/bash
type COMMAND:查看命令類型 內部:builtion 外部:顯示為命令文件路徑;
~]# type mkdir mkdir is /bin/mkdir ~]# type cd cd is a shell builtin
注意:命令可以有別名;別名可以與原名相同,此時原名被隱藏;此時如果要運行原命令,則使用\CONMMAND
~]# type mv mv is aliased to `mv -i' ~]# alias NAME=”COMMAND” 定義別名 ~]# unalias NAME 撤銷別名 注意:別名定義只對當前shell進程有效;對其它shell無效;有時間限定:shell進程終止就失效了,有區域限定:隨進程的終止而終止 ~]# alias=cls # unalias NAME 撤銷別名
五、命令的使用幫助
獲取命令的使用幫助:
內部命令:
help COMMAND
外部命令:
1) 命令自帶簡要格式的使用幫助 # COMMAND --help (2) 使用手冊:manual 任何可被查看的手冊必須確保系統有這個手冊 位置:/usr/share/man 一般默認位置 # man COMMAND man手冊的組成部分: NAME:功能性說明 SYNOPSIS:語法格式 DESCRIPTION:描述 OPTIONS:選項 EXAMPLES:使用示例 AUTHOR: 作者 BUGS: 報告程序bug的方式 SEE ALSO: 參考 ... SYNOPSIS: []:可選內容; <>:必須提供的內容; a|b|c:多選一; ...:同類內容可出現多個; 使用手冊:壓縮格式的文件,有章節之分; man1]# ls :.1.gz mrd.1.gz [.1.gz mren.1.gz a2p.1.gz msgattrib.1.gz ab.1.gz msgcat.1.gz abrt-action-analyze-backtrace.1.gz msgcmp.1.gz abrt-action-analyze-c.1.gz msgcomm.1.gz man1,man2,。。。 1:用戶命令; 2:系統調用; 3:C庫調用; 4:設備文件及特殊文件; 5:文件格式;(配置文件格式) 6:游戲使用幫助; 7:雜項; 8:管理工具及守護進行 man命令打開手冊以后的操作方法: 翻屏: 空格鍵:向文件尾翻一屏; b: 向文件首部翻一屏; Ctrl+d:向文件尾部翻半屏; Ctrl+u:向文件首部翻半屏; 回車鍵:向文件尾部翻一行; k: 向文件首部翻一行; G:跳轉至最后一行; #G: 跳轉至指定行; 1G:跳轉至文件首部; 文本搜索: /keyword:從文件首部向文件尾部依次查找;不區分字符大小寫; ?keyword:從文件尾部向文件首部依次查找; n: 與查找命令方向相同; N: 與查找命令方向相反; man的選項: -M /PATH/TO/SOMEDIR:到指定目錄下查找命令手冊并打開之;
ifconfig命令:configure a network interface配置網絡接口命令
一個用來查看、配置、啟用或禁用網絡接口的工具
選項: up 啟動指定網絡設備/網卡 down 關閉指定網絡設備/網卡 -arp 設置指定網卡是否支持ARP協議 -promisc 設置是否支持網卡的promiscuous模式,如果選擇此參數,網卡將接收網絡中發給它所有的數據包 -allmulti 設置是否支持多播模式,如果選擇此參數,網卡將接收網絡中所有的多播數據包 -a 顯示全部接口信息 -s 顯示摘要信息(類似于 netstat -i) add 給指定網卡配置IPv6地址 del 刪除指定網卡的IPv6地址 <硬件地址> 配置網卡最大的傳輸單元 mtu<字節數> 設置網卡的最大傳輸單元 (bytes) netmask<子網掩碼> 設置網卡的子網掩碼 tunel 建立隧道 dstaddr 設定一個遠端地址,建立點對點通信 -broadcast<地址> 為指定網卡設置廣播協議 -pointtopoint<地址> 為網卡設置點對點通訊協議 multicast 為網卡設置組播標志 為網卡設置IPv4地址 txqueuelen<長度> 為網卡設置傳輸列隊的長度 ----------------------------------------------------------------------------- ~]# ifconfig -a eth0 Link encap:Ethernet HWaddr 00:0C:29:41:75:27 inet addr:192.168.110.130 Bcast:192.168.110.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe41:7527/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2138 errors:0 dropped:0 overruns:0 frame:0 TX packets:1445 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 .....
echo命令:display a line of text 回顯 顯示一行文本
echo [SHORT-OPTION]… [STRING]…
直接跟上字符串則顯示: ~]# echo "hello " hello -n 選項:不自動換行操作 -e:讓轉義符生效; \n:換行 \t:制表符 ~]# echo -n "hello " hello [root@mytest2 ~]# ~]# echo -e "hello\nman" hello man ~]# echo -e "hello\bman" hellman ~]# echo -e "hello\tman" hello man ~]# echo -e "\033[31mhello\033[0m tman" hello tma 顏色控制
注意:STRING可以使用引號,單引號和雙引號均可用;
單引號:強引用,變量引用不執行替換;
~]# echo '$SHELL' $SHELL
雙引號:弱引用,變量引用會被替換;
~]# echo "$SHELL" /bin/bash
tty命令 查看終端設備
終端分類:
物理終端:/dev/console
虛擬終端:/dev/tty# [1,6]
串行終端:/dev/ttyS#
偽終端:/dev/pts/#
~]# tty /dev/pts/1 偽終端
startx命令 啟動圖形界面
在某一虛擬終端接口運行命令:startx &
export命令 變量賦值
~]# export name=1 ~]# echo $name 1
pwd命令 打印工作目錄
~]# pwd/root
history命令 命令歷史
命令歷史:shell進程會在其會話中保存此前用戶提交執行過的命令
定制history的功能,可通過環境變量實現;
HISTSIZE:shell進程可保留的命令歷史的條數;
HISTFILE:持久保存命令歷史的文件;
~]# ls -a . anaconda-ks.cfg .bash_logout .bashrc install.log .tcshrc .viminfo.. .bash_history .bash_profile .cshrc install.log.syslog test.txt# .bash_history 登出的時候才會保存在文件中,登陸時,命令歷史會首先從該文件中加載到內存中,使用history命令是內存中的歷史,而文件是不會保留剛剛執行的命令; HISTFILESIZE:定義這個文件最多保留多少條,命令歷史文件的大小;
命令用法: history [-c] [-d 偏移量] [n] 或 history -anrw [文件名] 或 history -ps 參數 [參數...] -c: 清空命令歷史; -d offset:#刪除指定命令歷史 -r: #從文件讀取命令歷史至歷史列表中; -w:#把歷史列表中的命令追加至歷史文件中; history #:顯示最近的#條命令;
shutdown 關機 以一種安全的方式關閉系統。所有登陸用戶都可以看到關機信息提示
shutdown [OPTIONS...] [TIME] [WALL...] OPTIONS: -h: halt 關機 -r:reboot 重啟 -c:cancel 取消運行中的 shutdown 進程 TIME: now 現在 hh:mm 絕對時間,幾點幾分 +m 幾分鐘之后 +0 相當于now WALL send a message to everybody’s terminal 向所有終端發送廣播信息;shutdown會自己發送WALL 信息; -------------------------- ~]# shutdown –h now #關機 ~]# shutdown –h 23:00 #晚上11點關機 ~]# shutdown –r now #重啟 ~]# shutdown –r +30 'reboot now' #30分鐘后重啟,并且提示reboot now
poweroff命令命令用來關閉計算機操作系統并且切斷系統電源。
常用參數: -n:關閉操作系統時不執行sync操作; -w:不真正關閉操作系統,僅在日志文件“/var/log/wtmp”中; -d:關閉操作系統時,不將操作寫入日志文件“/var/log/wtmp”中添加相應的記錄; -f:強制關閉操作系統; -i:關閉操作系統之前關閉所有的網絡接口; -h:關閉操作系統之前將系統中所有的硬件設置為備用模式。
date命令 系統時鐘 顯示日期時間
date [OPTION]... [+FORMAT] FORMAT:格式符 %F %T 顯示時間,24小時制(hh:mm:ss) %Y 顯示年 %m 月份(01~12) %d 一個月的第幾天 %H 小時 %M 分鐘 %S 秒 %s: 從1970年1月1號(unix元年) --------------- ~]# date +%F 2016-11-29 ~]# date +%T 05:04:49 ~]# date +%Y-%m-%d-%H-%M-%S 2016-11-29-05-22-26 設定日期時間:date [MMDDhhmm[[CC]YY][.ss]] 格式月 日 小時 分鐘 年 秒 ~]# date 101008082013.08 Thu Oct 10 08:08:08 CST 2013 ~]# date 120412562016 Sun Dec 4 12:56:00 CST 2016
clock 命令 (hwclock)query and set the hardware clock (RTC) 顯示或設定硬件時鐘
~]# file /sbin/clock /sbin/clock: symbolic link to `hwclock' 用法: ~]# hwclock Sun 04 Dec 2016 01:05:44 PM CST -0.836339 seconds -s --hctosys :以硬件為準,把系統調整為與硬件時間相同 -w, --systohc:以系統為準,把硬件時間調整為與系統時鐘相同; ~]# hwclock -w ~]# date Sun Dec 4 13:07:02 CST 2016
原創文章,作者:讓優秀稱為一種習慣,如若轉載,請注明出處:http://www.www58058.com/61970
總結的很好,有例子有說明,加油