90年代,那會我還是一枚初中生,對新事物的熱愛,仿佛是流淌在男孩子血液里的;那時候就開始接觸計算機,2018年2月,正式開始聽馬哥Linux的課程,卻發現曾經耳熟能詳的計算機基礎知識都已經讓丟棄在記憶的灰塵里了,在此寫下這篇博客,為了加深自己的理解跟記憶;下面,我先簡單說說我理解中的計算機:
1.計算機的構成與之功能
計算機(computer),也稱電腦,是有運算器、控制器、存儲器、輸入設備、輸出設備五大硬件部分組成;
中央處理器,也稱CPU(Central Processing Unit),由運算器跟控制器組成;
其中:控制器為計算機的指揮系統,由控制器來獲取、分析指令完成復雜任務;(理解力、分析力)
運算器來完成其中算術及邏輯運算;即對數據進行加工;(心算能力)
存儲器,又稱內存儲器,簡稱內存;內存為易失性存儲器,為計算機運行時存儲數據。(記憶力)
輸入、輸出設備合稱I/O設備,輸入設備如鍵盤(Input),用于下達指令;(眼睛、耳朵)輸出設備如顯示器(Output),用于數據加工完的數據。(嘴巴)
以上,我將計算機的各個部分形象的比做人體的某些部位或者能力,不一定準確,但比較形象,容易理解與記憶。
都說一入IT深似海,此話真的很有道理;這次,因為工作原因,接觸到了Linux,不得不說,那一次次遇見問題時的抓狂,和解決問題的喜悅,讓我深深的想系統的學習并了解Linux。
2、Linux簡史及發行版
當unix商業化,不將源碼提供給學術研究,真正惹惱了很多人,首先理查·斯托曼在麻省理工學院發起,要創建一套完全自由的操作系統;他發起《GNU宣言》,其理由之一就是“要重現當年軟件界合作互助的團結精神”,這其實就是軟件界的共產主義運動,稱為“GNU計劃”;
GNU是“GNU is not Unix”的遞歸縮寫;它開發了大批的自由軟件;為保證GNU軟件可以自由的“使用、復制、修改和發布”;所有GNU軟件都包含一份在禁止其他人添加任何限制的情況下,授權所有權利給任何人的協議條款,GNU通用公共許可證(GNU General Public License,GPL協議); 但在操作系統上,卻一直使用著Unix系統,這就使得GNU迫切需要一款操作系統;
Minix系統,一個迷你版的Unix,是安德魯·斯圖爾特·塔能鮑姆教授在Unix商業化以后,為了教學開發的一款操作系統;此系統給了他的學生林納斯·托瓦茲靈感,他開始設計并開發了一款操作系統內核,后被起名為:Linux。
因GNU GPL協議的源代碼可以自由使用,使得林納斯決定使用GPL協議來代替他原先使用的協議。這大大加速了Linux的流行。
Linux發行版
這里先簡單解釋一下操作系統的狹義跟廣義之分:狹義的操作系統:Kernel(內核);廣義的操作系統:Kernel+Application(應用);
GNU/Linux里,Linux是kernel,GNU提供了各種外圍軟件;但GNU提供的軟件是源代碼格式的,在Linux上安裝,需要編譯成二進制格式(因計算機只能識別二進制格式),而大多數普通用戶是沒有自行編譯的能力的,所以就有些商業公司或者社區通過自己的理解方式將源碼編譯成二進制格式,對外發布;這就發行版;目前Linux現在三大主流發行版:Debian、RedHat、S.U.S.E。
Debian是目前唯一沒有商業公司支持,以社區的形式出現,因在里面安裝軟件,需要自行編譯,難度較大,比較適合高水平用戶;基于Debian的著名二次發行版,如Ubantu;
Redhat是美國一家以開發,販售Linux包并提供技術服務的商業公司;其著名的產品有Red Hat Enterprise Linux,簡稱RHEL;流行于北美跟中國;著名的二次發行版有Fedora、CentOS;
S.U.S.E是Slackware的二次發行版,流行于歐洲;S.U.S.E的著名二次發行版有OpenSUSE;
3、Linux的哲學思想
①:一切皆文件、一切皆文件、一切皆文件(重要的事情說三遍);Linux把幾乎所有資源統統抽象為文件形式:包括硬件設備、通信接口等;(這里,譬如設備文件存儲在/dev目錄下)
②:由眾多功能單一的程序組成;一個程序只做一件事,并將其做好;組合小程序完成復雜任務;(如,用管道的方式,將命令1的輸出結果傳遞給命令2當作命令的輸入條件)
③:盡量避免跟用戶交互;目標:易于以編程的方式實現自動化任務;(如shell腳本編程,設定好計劃任務,可以做到譬如自動巡檢、自動備份等功能)
④:使用文本文件保存配置信息;
4、Linux命令介紹之一:
①:命令使用格式 命令 [選項][參數]
例:ls -lh /var/log
命令 [選項][參數],其中[]里,是可選項;以上面的例子說明:
命令ls:列出目錄中的內容
[選項]-lh:-是固定格式,下面具體解釋;l是顯示文件的詳細屬性信息;h是對文件大小進行單位換算(注:換算后可能會失去精確)
[參數]/var/log:路徑/var/log
命令的具體意思:列出/var/log目錄下具體目錄及文件的詳細屬性信息;
下面解釋一下選項的兩種表現形式:
短選項: -C,例如上面的-l, -h
注意:有些命令的選項沒有-:
如果一個命令里同時使用多個短選項,多數可以合并:-l -h = -lh
長選項:–word,例如:–help,–stdin
注意:長選項不能合并;
有些選項可以帶參數,此稱為選項參數;如:tail -n 20 /etc/passwd,這里的20就是 選項參數;
②:命令介紹
命令ifconfig:查看當前的網絡接口 ip,類似于windows里的ipconfig命令;
上圖中,紅框里就是當前的ip;
命令echo:回顯命令;簡單的說,就是輸入命令echo “hello”,會把hello打印在屏幕上;第一次接觸 到此命令的時候,心中一直有一個疑問,這個命令到底有啥用?其實,這個命令是有很大的作用的;
如:顯示變量值:
[root@magedu ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
上面的就是$PATH變量的具體值;
編輯文件;如需要在某文件中追加一行,但又不想使用編輯器進行編輯,這個時候echo命令配合上輸出重定向,就有了大用場;如:我想把ip與主機名添加到hosts文件中
echo “10.10.10.150 `hostname`” >> /etc/hosts
結果見下圖:

命令tty:顯示連接標準輸入的終端的文件名;
串行終端:ttyS
偽終端:pty
命令使用方法
[root@magedu ~]# tty
/dev/pts/1
命令startx:啟動圖形界面(GUI)
命令exprot:用于設置或顯示環境變量
exprot [-fnp][變量名稱]=[變量設置值]
-f 代表【變量名稱】中為函數名稱
-n 刪除指定的變量,變量實際上并未刪除,只是不會輸出到后續指令的執行環境中。
-p 列出所有shell賦予程序的環境變量
命令pwd:顯示出當前活動目錄的名稱
pwd [OPTION]
命令history:命令歷史
history [OPTION]
history #:顯示最近的#條命令;
-c:清空命令歷史;
-d offset:刪除指定命令歷史;
-r: 從文件讀取命令歷史至歷史列表中;
-w:把歷史列表中的命令追加至歷史文件中;
技巧:!#:再一次執行歷史列表中的第#條命令
?。。涸僖淮螆绦猩弦粭l命令(同向上箭頭鍵)
!STRING:再一次執行命令歷史列表中最近一個以STRING開頭的命令;(非常有用)
注意:命令的重復執行時有時候需要依賴于冪等性;
命令:shutdown:關機,安全關機(只有管理員可以使用)
shutdown [OPTION] [TIME]
OPTION:
-h:halt(關機)
-r:reboot(重啟)
-c:cancel(取消)
TIME:
now(立即執行)
hh:mm(幾點幾分執行)
+m(幾分鐘后執行)
命令poweroff:關機、切斷電源(只有管理員可以使用)
命令reboot:重啟(只有管理員可以使用)
命令date:查詢或設定日期
date [OPTION] [+FORMAT]
FORMAT:格式符
~]# date +%F YYYY-MM-DD
+%T hh:mm:ss
+%Y YYYY
+%m MM
+%d DD
+%H hh
+%M mm
+%S ss
+%s: 從1970年1月1號(unix元年)0點0分0秒到命令執行那一刻經過的秒數;
-s:根據STRING設定時間,[MMDDhhmm[[CC]YY][.ss]]
命令hwclock, clock: 硬件時鐘
顯示或設定硬件時鐘
-s, –hctosys: 以硬件為準,把系統時間調整為與硬件時間相同;
-w, –systohc: 以系統為準,把硬件時間調整為與系統時間相同;
5、獲取幫助
Linux命令分為內建命令跟外部命令兩種:
內建命令:shell自帶的命令
外部命令:不包含在shell中,在需要使用時才會被調入內存
命令type:用來查詢一個命令是內建命令還是外部命令
用法:type COMMAND
內建命令獲取幫助的方式:help COMMAND
外部命令獲取幫助的方式①:COMMAND –help(命令自帶的簡要幫助)
②:man COMMAND(manual手冊)
man章節劃分:①:使用者在shell中可以操作的指令或可執行檔
②:系統調用
③:一些常用的函數(function)與函數庫(library),大部分是C的函數庫(libc)
④:裝置檔案的說明,通常在/dev下的檔案
⑤:設定檔或者是某些檔案的格式
⑥:游戲使用幫助
⑦:雜項
⑧:系統管理員可用的管理指令
⑨:跟kernel有關的文件
6、Linux發行版的基礎目錄名稱及功用
目錄名 功用
/bin 所有用戶可用的基本命令程序文件;
/sbin 共系統管理使用的工具程序;
/boot 引導加載器必須用到的各靜態文件:kernel,initramfs(initrd),grub等;
/dev 存儲設備文件或特殊文件;
/etc 系統程序的配置文件,只能為靜態;
/home 普通用戶的家目錄;/home/USERNAME;
/root 管理員家目錄;
/lib 庫文件;
/lib64 64位系統特有的共享庫;
/media 便攜式設備掛載點;
/mnt 其它文件系統臨時掛載點;
/opt 附加應用程序的安裝位置;
/srv 當前主機為服務提供的數據;
/tmp 臨時文件目錄;
/usr 全局共享的只讀數據路徑;
/usr/local 安裝本地應用或第三方程序;
/var 存儲常發生變化的數據的目錄;
/proc 基于內存的偽文件系統,用于存儲內核及進程存儲相關信息;
/sys 管理Linux設備提供一種統一模式的接口;
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91691