夯實基礎系列四:Linux 知識總結

前言

如今不少公司項目部署都使用的是 Linux 服務器,互聯網公司更是如此。對於大一些的互聯網公司,系統可能會很是複雜,本地沒法啓動,通常都會採用專門的開發機給開發人員開發測試使用。我實習期間接觸的項目沒一個能夠在本地啓動的,都須要寫好代碼,把代碼更新到開發機上,而後編譯部署,並查看部署過程當中是否有錯誤或是查看訪問這臺機器的日誌。而這些操做,都須要對基本的 Linux 命令熟悉。node

今天總結下 Linux 的相關概念和基本操做,若是想了解更多,能夠去看看《鳥哥的私房菜》。同時但願你們多動手實踐,這樣理解得更深入。shell

概要

Linux 知識總結如下部份內容:Linux 常見概念、Linux 經常使用命令、vi 操做和一個最簡單的 shell 腳本。數據庫

細節

1. Linux 常見概念

1.1 Linux 與 Windows 的不一樣
  • Linux 嚴格區分大小寫
  • Linux 中全部內容以文件形式保存,包括硬件。一切內容皆文件。
  • Linux 不靠擴展名區分文件類型,靠權限區分文件類型。帶後綴的文件名是約定俗成,方便管理
  • Windows下的程序不能在Linux中安裝和運行
1.2 Linux 採用字符界面有什麼優點
  • 字符界面佔用的系統資源更少
  • 字符界面減小了出錯、被攻擊的可能性
1.3 分區類型
  • 主分區:最多隻能有 4 個。
  • 擴展分區編程

    • 最多隻能有 1 個
    • 主分區加擴展分區最多有 4 個
    • 不能寫入數據,只能包含邏輯分區
  • 邏輯分區
1.4 掛載
  • 必須分區vim

    • / (根分區)
    • swap 分區(交換分區,內存 2 倍,不超過 2GB)
  • 推薦分區緩存

    • /boot(啓動分區,200 MB)
1.5 常見目錄的做用
  • / 根目錄
  • /bin 命令保存目錄(普通用戶就能夠讀取的命令)
  • /boot 啓動目錄,啓動相關文件
  • /dev 設備文件保存目錄
  • /etc 配置文件保存目錄
  • /home 普通用戶的家目錄
  • /lib 系統庫保存目錄
  • /mnt 系統掛載目錄
  • /media 掛載目錄
  • /root 超級用戶的家目錄
  • /tmp 臨時目錄
  • /sbin 命令保存目錄(超級用戶才能使用的目錄)
  • /proc 直接寫入內存的
  • /sys
  • /usr 系統軟件資源目錄bash

    • /usr/bin/ 系統命令(普通用戶)
    • /usr/sbin/ 系統命令(超級用戶)
  • /var 系統相關文檔內容
根目錄下的 bin 和 sbin,usr 目錄下的bin 和 sbin,這四個目錄都是用來保存系統命令的。

proc 和 sys 目錄不能直接操做,這兩個目錄保存的是內存的過載點。服務器

2. Linux 經常使用命令

2.1 命令基本格式
命令 [選項] [參數]
2.2 查詢目錄中內容
ls [選項] [文件或目錄]

選項:less

  • -a:顯示全部文件,包括隱藏文件
  • -l:顯示詳細信息
  • -d:查看目錄屬性
  • -h:人性化顯示文件大小
  • -i:顯示 inode
2.3 目錄處理命令
mkdir -p [目錄名]

-p 遞歸建立編程語言

命令英文原意:make directories

cd [目錄]

命令英文原意:change directory

  • 簡化操做
cd ~ 進入當前用戶的家目錄

cd

cd - 進入上次目錄

cd .. 進入上一級目錄

cd . 進入當前目錄

查詢所在目錄位置:pwd

命令英文原意:print working directory

2.4 刪除文件或目錄
rm -rf [文件或目錄]

選項:

  • -r:刪除目錄
  • -f:強制
2.5 複製命令
cp [選項] [源文件或目錄] [目標目錄]

選項:

  • -r:複製目錄
  • -p:連帶文件屬性複製
  • -d:若源文件是連接文件,則複製連接屬性
  • -a:至關於 -pdr
2.6 剪切或更名命令
mv [原文件或目錄] [目標目錄]
2.7 連接命令
ln -s [原文件] [目標文件]

生成連接文件

選項:-s 建立軟連接

硬連接特徵:

  • 擁有相同的i節點和存儲block塊,能夠看作是同一個文件
  • 可經過i節點識別
  • 不能跨分區
  • 不能針對目錄使用

軟連接特徵:

  • 相似 Windows 快捷方式
  • 軟連接擁有本身的i節點和block塊,可是數據塊中只保存原文件的文件名和i節點號,並無實際的文件數據
  • lrwxrwxrwx表示軟連接,軟連接文件權限都爲rwxrwxrwx
  • 修改任意文件,另外一個都改變
  • 刪除原文件,軟連接不能使用
  • 軟連接若是目標文件和源文件不在同一目錄下,源文件必須寫絕對路徑
2.8 文件搜索命令
locate 文件名

在後臺數據庫中按文件名搜索,搜索速度更快

/var/lib/mlocate

locate 命令所搜索的後臺數據庫

updatedb

更新數據庫。默認一天一更新。快。缺點:只能按文件名來搜索

find [搜索範圍] [搜索條件]

搜索文件

find / -name install.log

避免大範圍搜索,會很是耗費系統資源

find 是在系統當中搜索符合條件的文件名。若是須要匹配,使用通配符匹配,通配符是徹底匹配。

*    匹配任意內容
?    匹配任意一個字符
[]    匹配任意一箇中括號內的字符
find /root -iname install.log

不區分大小寫

find /root -user root

按照全部者搜索

find /root -nouser

查找沒有全部者的文件

find /var/log -mtime +10

查找10天前修改的文件

find . -size 25k

查找文件大小是 25KB 的文件

find . -inum 262422

查找i結點是 262422 的文件

2.9 搜索命令的命令
whereis 命令名

搜索命令所在路徑及幫助文檔所在位置

選項:

  • -b:只查找可執行文件
  • -m:只查找幫助文件

which 命令能看到目錄和別名

2.10 搜索字符串命令
grep [選項] 字符串 文件名

在文件當中匹配符合條件的字符串

選項:

  • -i:忽略大小寫
  • -v:排除指定字符串
2.11 幫助命令
man 命令

命令 --help

help shell內部命令

info 命令

2.12 壓縮命令

zip 格式壓縮

zip 壓縮文件名 源文件

壓縮文件

zip -r 壓縮文件名 源目錄

壓縮目錄

zip格式解壓縮

unzip 壓縮文件

gz 格式壓縮

gzip 源文件

壓縮爲.gz 格式的壓縮文件,源文件會消失

gzip -c 源文件 > 壓縮文件

壓縮爲.gz 格式,源文件保留

gzip -r 目錄

壓縮目錄下全部的子文件,可是不能壓縮目錄

gz 格式解壓縮

gzip -d 壓縮文件

解壓縮文件

gunzip 壓縮文件

解壓縮文件

bz2 格式壓縮

bzip2 源文件

壓縮爲.bz2格式,不保留源文件

bzip2 -k 源文件

壓縮以後保留源文件

bzip2命令不能壓縮目錄

打包命令tar

tar -cvf 打包文件名 源文件

解打包命令

tar -xvf 打包文件名

.tar.gz壓縮格式

其實.tar.gz 格式是先打包爲.tar格式,再壓縮爲.gz格式

tar -zcvf 壓縮包名.tar.gz 源文件

.tar.gz 解壓縮

tar -zxvf 壓縮包名.tar.gz

.tar.bz2壓縮格式

tar -jcvf 壓縮包名.tar.bz2 源文件

.tar.bz2 解壓縮

tar -jxvf 壓縮包名.tar.bz2
2.13 關機命令
shutdown [選項] 時間

選項:

  • -c:取消前一個關機命令
  • -h:關機
  • -r:重啓
halt

poweroff

init 0

2.14 重啓
reboot

init 6

2.15 系統運行級別
  • 0:關機
  • 1:單用戶
  • 2:不徹底多用戶,不含NFS服務
  • 3:徹底多用戶
  • 4:未分配
  • 5:圖形界面
  • 6:重啓
cat /etc/inittab

修改系統默認運行級別

runlevel

查詢系統運行級別

logout

退出登陸

2.16 掛載命令
  • 查詢與自動掛載
mount

查詢系統中已經掛載的設備

mount -a

依據配置文件/etc/fstab 的內容,自動掛載

  • 掛載命令格式
mount [-t 文件系統] [-o 特殊選項] 設備文件名 掛載點
  • 掛載光盤
mkdir /mnt/cdrom

創建掛載點

mount -t iso9660 /dev/cdrom /mnt/cdrom/

掛載光盤

  • 卸載命令
umount 設備文件名或掛載點

umount /mnt/cdrom

2.17 查看登陸用戶信息
w 用戶名

命令輸出:

  • USER:登陸的用戶名
  • TTY:登陸終端
  • FROM:從哪一個IP地址登陸
  • LOGIN@:登陸時間
  • IDLE:用戶閒置時間
  • JCPU:和該終端鏈接的全部進程佔用的時間
  • PCPU:當前進程所佔用的時間
  • WHAT:當前正在運行的命令
who 用戶名
  • 查詢當前登陸和過去登陸的用戶信息
last
  • 查看全部用戶的最後一次登陸時間
lastlog
2.18 歷史命令
history [選項] [歷史命令保存文件]

選項

  • -c:清空歷史命令
  • -w:把緩存中的歷史命令寫入歷史命令保存文件 ~/.bash_history

歷史命令默認會保存 1000 條,能夠在環境變量配置文件 /etc/profile 中進行修改

2.19 統計
wc [選項] [文件名]

選項

  • -c:統計字節數
  • -w:統計單詞數
  • -l:統計行數
2.20 管道符

分頁查看輸出內容

ls -l /etc | more

netstat -an | grep ESTABLISHED

2.21 用戶和用戶組
  • 用戶:使用操做系統的人
  • 用戶組:具備相同系統權限的一組用戶
  • /etc/group:存儲當前系統中全部用戶組信息

    • 組名稱
    • 組密碼佔位符
    • 組編號
    • 組中用戶名列表
  • /etc/gshadow:存儲當前系統中用戶組的密碼信息

    • 組名稱
    • 組密碼
    • 組管理者
    • 組中用戶名列表
  • /etc/passwd:存儲當前系統中全部用戶的信息

    • 用戶名
    • 密碼佔位符
    • 用戶編號
    • 用戶組編號
    • 用戶註釋信息
    • 用戶主目錄
    • shell 類型
  • /etc/shadow 存儲當前系統中全部用戶的密碼信息

    • 用戶名
    • 密碼

3. vi 操做

3.1 操做模式
  • Command Mode:命令模式
  • Insert Mode:輸入模式
  • Last Line Mode:底行模式
3.2 經常使用指令
vim + abc

打開文件並把光標定位到最後一行

vim +2 abc

第二行

vim +/xxx abc

跳到指定字符串第一次出現的地方
同時打開多個文件 可用n N prev來切換

3.3 底行模式經常使用指令
  • :w

    • 保存文件,但不退出vi
  • :q

    • 退出vi
  • :!

    • 強制執行
  • /xxx

    • 向下查找, 按n查找下一個, N查找上一個,這個跟less命令的查找使用方式是同樣的
  • ?xxx

    • 往前查找, 按n查找下一個, N查找上一個
3.4 命令模式經常使用指令
  • h:光標左移
  • j:光標下移
  • k:光標上移
  • l:光標右移
  • ctrl+f:向下翻頁
  • ctrl+b:向上翻頁
  • ctrl+d:向下翻半頁
  • ctrl+f:向上翻半頁
  • dd:刪除光標所在行
  • o:在光標所在處的下方插入一行並切換到輸入模式
  • yy:複製光標所在的行
  • p:在光標所在行的下方粘貼
  • P:在光標所在行的上方粘貼

3. Shell 基礎

3.1 Shell 是什麼
  • 命令行解釋器,可啓動、掛起、中止或編寫程序
  • 編程語言,可直接調用Linux 系統命令
3.2 輸出命令
echo [選項] [輸出內容]
3.3 腳本編寫

首行

#!/bin/bash

echo "hello world"

賦予執行權限,直接運行

chmod 755 hello.sh

./hello.sh

經過bash 執行腳本

bash hello.sh

底部海報new.jpeg

相關文章
相關標籤/搜索