https://www.youtube.com/watch?v=p3tvtXOg5rg
什麼是linux?
1 Linux是一種自由和開放原始碼的類UNIX作業系統。也就是說Linux是可以自由的使用、複製、研究、修改原始碼,然後Linux是修改UNIX後創的作業系統。
2 Linus Torvalds是發明 Linux kernel的人
3 linux就是一種作業系統,平常在使用的linux作業系統,像是: Ubuntu、 openSUSE,稱為linux distribution,是由一些組織、公司或者個人製作並發行的linux作業系統,linux distribution的內容就像windows的混合核心(Hybrid kernel)和一些原本就安裝的軟體,像是:小畫家、小算盤,而linux distribution像是Ubuntu桌面版的linux kernel和圖形化的應用程式像:防火牆、文字編輯
4 電腦、伺服器、主機、智慧手機、嵌入式裝置都有linux作業系統
Unix和Linux哪裡不同?
主要分類就是開源和閉源
Unix像是蘋果的Mac電腦、IBM的AIX
Linux像是Canonical的Ubuntu、Fedora專案社群的Fedora
Linux桌面發布版:GUI(圖形化介面)+GNU
什麼是GNU project?
https://zh.wikipedia.org/wiki/GNU%E8%A8%88%E5%8A%83
GNU計劃(英語:GNU Project): 一個計劃。目標是建立一套完全自由的作業系統,稱為GNU。GNU是「GNU's Not Unix」的縮寫。所以很多的linux發行版就是在GNU計畫後有的。
https://zh.wikipedia.org/wiki/GNU
GNU則是一個作業系統,GNU的發展仍未完成,其中最大的問題是具有完備功能的內核尚未被開發成功。GNU的內核,稱為Hurd,是自由軟體基金會發展的重點,但是其發展尚未成熟。在實際使用上,多半使用Linux內核
但是GNU好像不等於GNU/Linux,GNU/Linux的意思是Linux內核與GNU組件和軟體,所以linux作業系統常被稱為GNU/Linux,但是很多人不同意,因為Linux不屬於GNU計劃
什麼是linux kernel?
https://ithelp.ithome.com.tw/articles/10199500
1 linux kernel是一個軟體,管理硬體資源的軟體
2應用層透過kernel到硬體,硬體透過kernel到應用層
什麼是shell?什麼是BASH?
https://ithelp.ithome.com.tw/articles/10203747
shell
1 從鍵盤或文字檔輸入的指令是透過shell傳到kernel,kernnel再傳到硬體,所以輸入的指令才有效
2 在CLI(命令列介面)shell是唯一的方法溝通kernel
BASH
1 Thompson shell是第一代的shell,Bourne shell則是取代Thompson shell的後代,BASH是修改Bourne shell的後代
2 BASH 是Bourne shell和一些新增的功能所組成的,所以更簡單、更方便
3 BASH通常都是default shell
指令:
cat /etc/shells 可以查看有哪些shell可以使用
echo $SHELL 可以查看default shell,通常都是/bin/bash
關於daemon:
https://www.youtube.com/watch?v=oWa3rPxxRTw
https://www.youtube.com/watch?v=_r5neSNEO98
影片舉了一個例子:冰箱是隨時都有電的,是一直開著的,但像微波爐是只有要用的時候才要啟動,才要電。像有些程式也像冰箱一樣,當電腦開機後就一直執行像是webserver的apache2,或防火牆的ufw,除非關掉,不然都是一開機就會有的程式;而像微波爐一樣的程式,像是mkdir、mv、ls,是當使用者輸入這些指令時才會執行,不然都是關掉的。
像冰箱一樣的程式就稱為服務或daemon,但服務和daemon是不同的。
Service就像是冰箱、網頁伺服器;而daemon就像是電、apache2
所有的service都在/etc/init.d/
指令: ls –l /etc/init.d/
可以看到ufw或是apache2
接下來來查看apache2的狀態
先cd /etc
然後 cd r 接著按tab鍵
可以看到:
比較常用的:
1單人維護模式、3純文字模式、5文字加圖形界面
這邊是用ubuntu桌面版rc3.d/和rc5.d/的內容是一樣的
如圖:發現apache2了,在/init.d/apache2前面有個S01apache2
S代表開機就會啟動,K就代表開機不會啟動
01代表啟動順序,這邊都是01,但是如果比較多service,可能就會有02、03
接著想辦法把apache2的S換成K
/etc/init.d/apache2 stop 是沒辦法把S換K的,因為開機還是會啟動apache2
而/etc/init.d/ 只有start、stop、restart、reload、status之類的,沒有disable
所以要執行 sudo systemctl disable apache2
接著 ps aux | grep apache2可以查看apache2有沒有在執行
大概了解ps是什麼意思:
http://linux.vbird.org/linux_basic/0440processcontrol.php#process_1
主要有兩種:
ps -l:只能查閱自己bash程序
ps aux:可以查閱所有系統運作的程序
ps aux | grep apache2會顯示如圖
代表ted5執行的 bash PID 為4909,使用掉的 CPU 資源0.0%,所佔用的實體記憶體0.0%,使用掉的虛擬記憶體量21824(Kbytes),佔用的固定的記憶體量1052,取得的終端機環境為pts/1,狀態為休眠(S+),該程序啟動的時間為22:46,實際使用 CPU 運作的時間0,該程序的實際指令grep --color=auto apache2
/etc/rc5.d/K01apache2 跟 /etc/init.d/apache2 意思一樣
接著講到alias
http://linux.vbird.org/linux_basic/0320bash.php#alias
就是命名,可以把指令命名
例如:
指令:alias lm=' ls -al | more '
lm就代表ls -al | more,所以以後輸入指令就可以lm
指令:alias :可以查看所有的命名
還有很多內容沒看,有空再補