程式猿必備的Linux基礎知識
一 從認識作業系統開始
1.1 作業系統簡介
我通過以下四點介紹什麼作業系統:
- 作業系統(Operation System,簡稱OS)是管理計算機硬體與軟體資源的程式,是計算機系統的核心與基石;
- 作業系統本質上是執行在計算機上的軟體程式 ;
- 為使用者提供一個與系統互動的操作介面 ;
- 作業系統分核心與外殼(我們可以把外殼理解成圍繞著核心的應用程式,而核心就是能操作硬體的程式)。
1.2 作業系統簡單分類
- Windows: 目前最流行的個人桌面作業系統 ,不做多的介紹,大家都清楚。
- Unix: 最早的多使用者、多工作業系統 .按照作業系統的分類,屬於分時作業系統。Unix 大多被用在伺服器、工作站,現在也有用在個人計算機上。它在建立網際網路、計算機網路或客戶端/伺服器模型方面發揮著非常重要的作用。
- Linux: Linux是一套免費使用和自由傳播的類Unix作業系統.Linux存在著許多不同的Linux版本,但它們都使用了 Linux核心 。Linux可安裝在各種計算機硬體裝置中,比如手機、平板電腦、路由器、視訊遊戲控制檯、臺式計算機、大型機和超級計算機。嚴格來講,Linux這個詞本身只表示Linux核心,但實際上人們已經習慣了用Linux來形容整個基於Linux核心,並且使用GNU 工程各種工具和資料庫的作業系統。
二 初探Linux
2.1 Linux簡介
我們上面已經介紹到了Linux,我們這裡只強調三點。
- 類Unix系統: Linux是一種自由、開放原始碼的類似Unix的作業系統
- Linux核心: 嚴格來說,Linux這個詞本身只表示Linux核心
- Linux之父: 一個程式設計領域的傳奇式人物。他是Linux核心的最早作者,隨後發起了這個開源專案,擔任Linux核心的首要架構師與專案協調者,是當今世界最著名的電腦程式設計師、黑客之一。他還發起了Git這個開源專案,併為主要的開發者。
2.2 Linux誕生簡介
- 1991年,芬蘭的業餘計算機愛好者Linus Torvalds編寫了一款類似Minix的系統(基於微核心架構的類Unix作業系統)被ftp管理員命名為Linux 加入到自由軟體基金的GNU計劃中;
- Linux以一隻可愛的企鵝作為標誌,象徵著敢作敢為、熱愛生活。
2.3 Linux的分類
Linux根據原生程度,分為兩種:
- 核心版本: Linux不是一個作業系統,嚴格來講,Linux只是一個作業系統中的核心。核心是什麼?核心建立了計算機軟體與硬體之間通訊的平臺,核心提供系統服務,比如檔案管理、虛擬記憶體、裝置I/O等;
- 發行版本: 一些組織或公司在核心版基礎上進行二次開發而重新發行的版本。Linux發行版本有很多種(ubuntu和CentOS用的都很多,初學建議選擇CentOS),如下圖所示:
三 Linux檔案系統概覽
3.1 Linux檔案系統簡介
在Linux作業系統中,所有被作業系統管理的資源,例如網路介面卡、磁碟驅動器、印表機、輸入輸出裝置、普通檔案或是目錄都被看作是一個檔案。
也就是說在LINUX系統中有一個重要的概念:一切都是檔案。其實這是UNIX哲學的一個體現,而Linux是重寫UNIX而來,所以這個概念也就傳承了下來。在UNIX系統中,把一切資源都看作是檔案,包括硬體裝置。UNIX系統把每個硬體都看成是一個檔案,通常稱為裝置檔案,這樣使用者就可以用讀寫檔案的方式實現對硬體的訪問。
3.2 檔案型別與目錄結構
Linux的目錄結構如下:
Linux檔案系統的結構層次鮮明,就像一棵倒立的樹,最頂層是其根目錄:
常見目錄說明:
- /bin: 存放二進位制可執行檔案(ls,cat,mkdir等),常用命令一般都在這裡;
- /etc: 存放系統管理和配置檔案;
- /home: 存放所有使用者檔案的根目錄,是使用者主目錄的基點,比如使用者user的主目錄就是/home/user,可以用~user表示;
- /usr : 用於存放系統應用程式;
- /opt: 額外安裝的可選應用程式包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這裡;
- /proc: 虛擬檔案系統目錄,是系統記憶體的對映。可直接訪問這個目錄來獲取系統資訊;
- /root: 超級使用者(系統管理員)的主目錄(特權階級^o^);
- /sbin: 存放二進位制可執行檔案,只有root才能訪問。這裡存放的是系統管理員使用的系統級別的管理命令和程式。如ifconfig等;
- /dev: 用於存放裝置檔案;
- /mnt: 系統管理員安裝臨時檔案系統的安裝點,系統提供這個目錄是讓使用者臨時掛載其他的檔案系統;
- /boot: 存放用於系統引導時使用的各種檔案;
- /lib : 存放著和系統執行相關的庫檔案 ;
- /tmp: 用於存放各種臨時檔案,是公用的臨時檔案儲存點;
- /var: 用於存放執行時需要改變資料的檔案,也是某些大檔案的溢位區,比方說各種服務的日誌檔案(系統啟動日誌等。)等;
- /lost+found: 這個目錄平時是空的,系統非正常關機而留下“無家可歸”的檔案(windows下叫什麼.chk)就在這裡。
四 Linux基本命令
下面只是給出了一些比較常用的命令。推薦一個Linux命令快查網站,非常不錯,大家如果遺忘某些命令或者對某些命令不理解都可以在這裡得到解決。
Linux命令大全:http://man.linuxde.net/
4.1 目錄切換命令
cd usr
: 切換到該目錄下usr目錄cd ..(或cd../)
: 切換到上一層目錄cd /
: 切換到系統根目錄cd ~
: 切換到使用者主目錄cd -
: 切換到上一個操作所在目錄
4.2 目錄的操作命令(增刪改查)
-
mkdir 目錄名稱
: 增加目錄 -
ls或者ll
(ll是ls -l的別名,ll命令可以看到該目錄下的所有目錄和檔案的詳細資訊):檢視目錄資訊 -
find 目錄 引數
: 尋找目錄(查)示例:
- 列出當前目錄及子目錄下所有檔案和資料夾:
find .
- 在
/home
目錄下查詢以.txt結尾的檔名:find /home -name "*.txt"
- 同上,但忽略大小寫:
find /home -iname "*.txt"
- 當前目錄及子目錄下查詢所有以.txt和.pdf結尾的檔案:
find . \( -name "*.txt" -o -name "*.pdf" \)
或find . -name "*.txt" -o -name "*.pdf"
- 列出當前目錄及子目錄下所有檔案和資料夾:
-
mv 目錄名稱 新目錄名稱
: 修改目錄的名稱(改)注意:mv的語法不僅可以對目錄進行重新命名而且也可以對各種檔案,壓縮包等進行 重新命名的操作。mv命令用來對檔案或目錄重新命名,或者將檔案從一個目錄移到另一個目錄中。後面會介紹到mv命令的另一個用法。
-
mv 目錄名稱 目錄的新位置
: 移動目錄的位置---剪下(改)注意:mv語法不僅可以對目錄進行剪下操作,對檔案和壓縮包等都可執行剪下操作。另外mv與cp的結果不同,mv好像檔案“搬家”,檔案個數並未增加。而cp對檔案進行復制,檔案個數增加了。
-
cp -r 目錄名稱 目錄拷貝的目標位置
: 拷貝目錄(改),-r代表遞迴拷貝注意:cp命令不僅可以拷貝目錄還可以拷貝檔案,壓縮包等,拷貝檔案和壓縮包時不 用寫-r遞迴
-
rm [-rf] 目錄
: 刪除目錄(刪)注意:rm不僅可以刪除目錄,也可以刪除其他檔案或壓縮包,為了增強大家的記憶, 無論刪除任何目錄或檔案,都直接使用
rm -rf
目錄/檔案/壓縮包
4.3 檔案的操作命令(增刪改查)
-
touch 檔名稱
: 檔案的建立(增) -
cat/more/less/tail 檔名稱
檔案的檢視(查)cat
: 檢視顯示檔案內容more
: 可以顯示百分比,回車可以向下一行, 空格可以向下一頁,q可以退出檢視less
: 可以使用鍵盤上的PgUp和PgDn向上 和向下翻頁,q結束檢視tail-10
: 檢視檔案的後10行,Ctrl+C結束
注意:命令 tail -f 檔案 可以對某個檔案進行動態監控,例如tomcat的日誌檔案, 會隨著程式的執行,日誌會變化,可以使用tail -f catalina-2016-11-11.log 監控 文 件的變化
-
vim 檔案
: 修改檔案的內容(改)vim編輯器是Linux中的強大元件,是vi編輯器的加強版,vim編輯器的命令和快捷方式有很多,但此處不一一闡述,大家也無需研究的很透徹,使用vim編輯修改檔案的方式基本會使用就可以了。
在實際開發中,使用vim編輯器主要作用就是修改配置檔案,下面是一般步驟:
vim 檔案------>進入檔案----->命令模式------>按i進入編輯模式----->編輯檔案 ------->按Esc進入底行模式----->輸入:wq/q! (輸入wq代表寫入內容並退出,即儲存;輸入q!代表強制退出不儲存。)
-
rm -rf 檔案
: 刪除檔案(刪)同目錄刪除:熟記
rm -rf
檔案 即可
4.4 壓縮檔案的操作命令
1)打包並壓縮檔案:
Linux中的打包檔案一般是以.tar結尾的,壓縮的命令一般是以.gz結尾的。
而一般情況下打包和壓縮是一起進行的,打包並壓縮後的檔案的字尾名一般.tar.gz。 命令:tar -zcvf 打包壓縮後的檔名 要打包壓縮的檔案
其中:
z:呼叫gzip壓縮命令進行壓縮
c:打包檔案
v:顯示執行過程
f:指定檔名
比如:加入test目錄下有三個檔案分別是 :aaa.txt bbb.txt ccc.txt,如果我們要打包test目錄並指定壓縮後的壓縮包名稱為test.tar.gz可以使用命令:tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt
或:tar -zcvf test.tar.gz /test/
2)解壓壓縮包:
命令:tar [-xvf] 壓縮檔案
其中:x:代表解壓
示例:
1 將/test下的test.tar.gz解壓到當前目錄下可以使用命令:tar -xvf test.tar.gz
2 將/test下的test.tar.gz解壓到根目錄/usr下:tar -xvf xxx.tar.gz -C /usr
(- C代表指定解壓的位置)
4.5 Linux的許可權命令
作業系統中每個檔案都擁有特定的許可權、所屬使用者和所屬組。許可權是作業系統用來限制資源訪問的機制,在Linux中許可權一般分為讀(readable)、寫(writable)和執行(excutable),分為三組。分別對應檔案的屬主(owner),屬組(group)和其他使用者(other),通過這樣的機制來限制哪些使用者、哪些組可以對特定的檔案進行什麼樣的操作。通過 ls -l
命令我們可以 檢視某個目錄下的檔案或目錄的許可權
示例:在隨意某個目錄下ls -l
第一列的內容的資訊解釋如下:
下面將詳細講解檔案的型別、Linux中許可權以及檔案有所有者、所在組、其它組具體是什麼?
檔案的型別:
- d: 代表目錄
- -: 代表檔案
- l: 代表軟連結(可以認為是window中的快捷方式)
Linux中許可權分為以下幾種:
- r:代表許可權是可讀,r也可以用數字4表示
- w:代表許可權是可寫,w也可以用數字2表示
- x:代表許可權是可執行,x也可以用數字1表示
檔案和目錄許可權的區別:
對檔案和目錄而言,讀寫執行表示不同的意義。
對於檔案:
許可權名稱 | 可執行操作 |
---|---|
r | 可以使用cat檢視檔案的內容 |
w | 可以修改檔案的內容 |
x | 可以將其執行為二進位制檔案 |
對於目錄:
許可權名稱 | 可執行操作 |
---|---|
r | 可以檢視目錄下列表 |
w | 可以建立和刪除目錄下檔案 |
x | 可以使用cd進入目錄 |
需要注意的是超級使用者可以無視普通使用者的許可權,即使檔案目錄許可權是000,依舊可以訪問。 在linux中的每個使用者必須屬於一個組,不能獨立於組外。在linux中每個檔案有所有者、所在組、其它組的概念。
-
所有者
一般為檔案的建立者,誰建立了該檔案,就天然的成為該檔案的所有者,用ls ‐ahl命令可以看到檔案的所有者 也可以使用chown 使用者名稱 檔名來修改檔案的所有者 。
-
檔案所在組
當某個使用者建立了一個檔案後,這個檔案的所在組就是該使用者所在的組 用ls ‐ahl命令可以看到檔案的所有組 也可以使用chgrp 組名 檔名來修改檔案所在的組。
-
其它組
除開檔案的所有者和所在組的使用者外,系統的其它使用者都是檔案的其它組
我們再來看看如何修改檔案/目錄的許可權。
修改檔案/目錄的許可權的命令:chmod
示例:修改/test下的aaa.txt的許可權為屬主有全部許可權,屬主所在的組有讀寫許可權, 其他使用者只有讀的許可權
chmod u=rwx,g=rw,o=r aaa.txt
上述示例還可以使用數字表示:
chmod 764 aaa.txt
補充一個比較常用的東西:
假如我們裝了一個zookeeper,我們每次開機到要求其自動啟動該怎麼辦?
- 新建一個指令碼zookeeper
- 為新建的指令碼zookeeper新增可執行許可權,命令是:
chmod +x zookeeper
- 把zookeeper這個指令碼新增到開機啟動項裡面,命令是:
chkconfig --add zookeeper
- 如果想看看是否新增成功,命令是:
chkconfig --list
4.6 Linux 使用者管理
Linux系統是一個多使用者多工的分時作業系統,任何一個要使用系統資源的使用者,都必須首先向系統管理員申請一個賬號,然後以這個賬號的身份進入系統。
使用者的賬號一方面可以幫助系統管理員對使用系統的使用者進行跟蹤,並控制他們對系統資源的訪問;另一方面也可以幫助使用者組織檔案,併為使用者提供安全性保護。
Linux使用者管理相關命令:
useradd 選項 使用者名稱
:新增使用者賬號userdel 選項 使用者名稱
:刪除使用者帳號usermod 選項 使用者名稱
:修改帳號passwd 使用者名稱
:更改或建立使用者的密碼passwd -S 使用者名稱
:顯示使用者賬號密碼資訊passwd -d 使用者名稱
: 清除使用者密碼
useradd命令用於Linux中建立的新的系統使用者。useradd可用來建立使用者帳號。帳號建好之後,再用passwd設定帳號的密碼.而可用userdel刪除帳號。使用useradd指令所建立的帳號,實際上是儲存在/etc/passwd文字檔案中。
passwd命令用於設定使用者的認證資訊,包括使用者密碼、密碼過期時間等。系統管理者則能用它管理系統使用者的密碼。只有管理者可以指定使用者名稱稱,一般使用者只能變更自己的密碼。
4.7 Linux系統使用者組的管理
每個使用者都有一個使用者組,系統可以對一個使用者組中的所有使用者進行集中管理。不同Linux 系統對使用者組的規定有所不同,如Linux下的使用者屬於與它同名的使用者組,這個使用者組在建立使用者時同時建立。
使用者組的管理涉及使用者組的新增、刪除和修改。組的增加、刪除和修改實際上就是對/etc/group檔案的更新。
Linux系統使用者組的管理相關命令:
groupadd 選項 使用者組
:增加一個新的使用者組groupdel 使用者組
:要刪除一個已有的使用者組groupmod 選項 使用者組
: 修改使用者組的屬性
4.8 其他常用命令
-
pwd
: 顯示當前所在位置 -
grep 要搜尋的字串 要搜尋的檔案 --color
: 搜尋命令,--color代表高亮顯示 -
ps -ef
/ps -aux
: 這兩個命令都是檢視當前系統正在執行程式,兩者的區別是展示格式不同。如果想要檢視特定的程式可以使用這樣的格式:ps aux|grep redis
(檢視包括redis字串的程式),也可使用pgrep redis -a
。注意:如果直接用ps((Process Status))命令,會顯示所有程式的狀態,通常結合grep命令檢視某程式的狀態。
-
kill -9 程式的pid
: 殺死程式(-9 表示強制終止。)先用ps查詢程式,然後用kill殺掉
-
網路通訊命令:
- 檢視當前系統的網路卡資訊:ifconfig
- 檢視與某臺機器的連線情況:ping
- 檢視當前系統的埠使用:netstat -an
-
net-tools 和 iproute2 :
net-tools
起源於BSD的TCP/IP工具箱,後來成為老版本Linux核心中配置網路功能的工具。但自2001年起,Linux社群已經對其停止維護。同時,一些Linux發行版比如Arch Linux和CentOS/RHEL 7則已經完全拋棄了net-tools,只支援iproute2
。linux ip命令類似於ifconfig,但功能更強大,旨在替代它。更多詳情請閱讀如何在Linux中使用IP命令和示例 -
shutdown
:shutdown -h now
: 指定現在立即關機;shutdown +5 "System will shutdown after 5 minutes"
:指定5分鐘後關機,同時送出警告資訊給登入使用者。 -
reboot
:reboot
: 重開機。reboot -w
: 做個重開機的模擬(只有紀錄並不會真的重開機)。
相關文章
- 前端&後端程式設計師必備的Linux基礎知識前端後端程式設計師Linux
- 程式必備區塊鏈基礎知識區塊鏈
- OpenStack必備基礎知識
- 前後端必備Linux基礎知識大科普後端Linux
- day04 必備基礎知識
- linux基礎知識整理(備忘)Linux
- 程式猿必知必會Linux命令之awkLinux
- 效能測試必備基礎知識(二)
- Python 基礎(一):入門必備知識Python
- Python 必備面試基礎知識-3Python面試
- Python 面試必備基礎知識-1Python面試
- 學習網路BGP必備基礎知識
- 網路基礎必備知識
- 後端程式設計師必備的 Linux 基礎知識+常見命令(近萬字總結)後端程式設計師Linux
- 安裝Linux之前必備知識Linux
- Web前端必備基礎知識點,百萬程式設計師:牛逼!Web前端程式設計師
- JVM必備基礎知識(一) -- 類的載入機制JVM
- linux基礎知識Linux
- 程式猿必須知道的關於 Tomcat 的知識點Tomcat
- JVM必備基礎知識(三)-- GC垃圾回收機制JVMGC
- SSH Config教程之基礎知識介紹-必備技巧
- Java初學者必備4大核心基礎知識Java
- MySQL必知必會筆記——查詢的基礎知識MySql筆記
- Linux基礎知識(Ubuntu)LinuxUbuntu
- 多執行緒面試必備基礎知識彙總執行緒面試
- 程式基礎知識
- python基礎必學的語法知識Python
- 你必須知道的Java基礎知識Java
- 【Xtrabackup】Xtrabackup備份基礎知識
- 學習網路安全,這些必備基礎知識不能少!
- 機器學習基礎知識梳理,新手必備!(附連結)機器學習
- linux 基礎知識彙總Linux
- linux基礎知識大綱Linux
- Java入門基礎學習,成為一個Java程式設計師的必備知識Java程式設計師
- 零基礎入門學習Python爬蟲必備的知識點!Python爬蟲
- 程式設計必備基礎 計算機組成原理+作業系統+計算機網路,計算機基礎——更適合程式設計師的程式設計必備基礎知識作業系統計算機網路程式設計師
- 外貿小白必須掌握的基礎知識
- 零基礎如何學好大資料?必備需要學習知識大資料