程序員必知必會的 Linux系列 —— 基礎篇

1. Linux

  • Linux是一套無償使用和自由傳播的類Unix操做系統
  • 在服務器端領域和嵌入式領域有很是普遍的應用

2.版本

分爲內核版本和髮型版本php

  • kernel
  • 各個廠商會製做本身的發行版本
    • redhat
    • CentOS
    • ubuntu
    • fedora

3. Linux與Windows的不一樣

  • Linux嚴格區分大小寫
  • Linux中全部的內容以文件形式保存,包括硬件、用戶和文件。
  • Linux不靠擴展名區分文件類型,是靠權限來區分,可是有一些約定的擴展名,是給管理員看的
    • 壓縮包 .gz .bz2 .tar.bz2 .tgz
    • 二進制文件 .rpm
    • 網頁文件 .html .php
    • 腳本文件 .sh
    • 配置文件 .conf
  • Windows下的程序不能直接在Linux中安裝和運行
  • Linux更多使用字符界面
    • 佔用的系統資源更少
    • 減小了出錯和被攻擊的可能性,會讓系統更穩定

3. 購買服務器

4. 鏈接服務器

5.linux經常使用命令

5.1 常見目錄

目錄 用途
/ 根目錄
/boot 啓動目錄,啓動相關文件
/dev 設備文件
/etc 配置文件
/home 普通用戶的家目錄,能夠操做
/lib 系統庫保存目錄
/mnt 移動設備掛載目錄
/media 光盤掛載目錄
/misc 磁帶機掛載目錄
/root 超級用戶的家目錄,能夠操做
/tmp 臨時目錄,能夠操做
/proc 正在運行的內核信息映射, 主要輸出進程信息、內存資源信息和磁盤分區信息等等
/sys 硬件設備的驅動程序信息
/var 變量
/bin 普通的基本命令,如ls,chmod等,通常的用戶也均可以使用
/sbin 基本的系統命令,如shutdown,reboot,用於啓動系統,修復系統,只有管理員才能夠運行
/usr/bin 是你在後期安裝的一些軟件的運行腳本
/usr/sbin 放置一些用戶安裝的系統管理的必備程序

5.2 命令基本格式

5.2.1 命令提示符

[root@james ~]#
複製代碼
  • root 當前登陸用戶
  • localhost 主機名
  • ~ 當前工做目錄,默認是當前用戶的家目錄,root就是/root,普通用戶是 /home/用戶名
  • 提示符 超級用戶是 #,普通用戶是$

5.2.2 命令格式

  • 命令 [選項] [參數]
  • 當有多個選項時,能夠寫在一塊兒
  • 通常參數有簡化和完整寫法兩種 -a--all等效

5.2.3 ls

  • 查詢目錄中的內容
  • ls [選項] [文件或者目錄]
  • 選項
    • -a 顯示全部文件,包括隱藏文件
    • -l 顯示詳細信息
    • -d 查看目錄自己的屬性而非子文件 ls /etc/
    • -h 人性化的方式顯示文件大小
  • 默認當前目錄下的文件列表
ls -l
複製代碼
5.2.3.1 -l

顯示詳細信息html

drwxr-xr-x  root  root   800 Sep 16 00:19 logs
複製代碼
drwxr-xr-x root root 800 Sep 16 00:19 logs
文件類型和權限 全部者 所屬組 文件大小 最後修改時間 文件名

5.3 文件處理命令

5.3.1 mkdir

  • 創建目錄 make directory
  • mkdir -p [目錄名]
    • -p 遞歸建立
mkdir -p hello
複製代碼

5.3.2 cd

  • 切換所在目錄 change directory
  • cd [目錄]
    • ~ 家目錄
    • . 當前目錄
    • .. 上級目錄
  • 相對路徑是參照當前所在目錄
  • 絕對路徑是從根目錄開始
  • 按TAB鍵能夠補全命令和目錄
cd hello
複製代碼

5.3.3 pwd

  • 顯示當前目錄 pwd
pwd
複製代碼

5.3.4 rmdir

  • 刪除目錄 remove empty directory
  • rmdir [目錄名]
rmdir hello
複製代碼

5.3.5 rm

  • 刪除文件或者目錄 remove
  • rm [文件或者目錄]
    • -r 刪除目錄
    • -f 強制刪除
  • rm -rf 文件或者目錄] 遞歸強制刪除全部目錄
rm -rf hello
複製代碼

5.3.6 cp

  • copy 複製命令
  • copy [源文件或者目錄] [目標文件]
    • -r 複製目錄,默認是複製文件
    • -i 會在複製文件的時候給提示,若是複製的目標文件存在,會給你提示是否要覆蓋
mkdir afolder
mkdir bfolder
cd afolder/
touch 1.txt
cp 1.txt ~/bfolder/
複製代碼

5.3.7 mv

  • 移動文件或者更名 move
  • mv [源文件或者目錄] [目標文件]
mv 1.txt 11.txt
複製代碼

5.3.8 ln

  • 連接命令,生成連接文件 link
  • ln -s [源文件] [目標文件]
    • -s 建立軟連接
  • 相似Windows快捷方式
  • 修改任意一個文件,另外一個都會改變
  • 刪除源文件,軟連接不能使用
  • 軟連接源文件必須寫絕對路徑
# ln -s /root/bfolder/11.txt 22.txt
複製代碼

5.4 文件搜索命令

5.4.1 locate

  • 在後臺數據庫中按文件名搜索,速度比較快
  • 數據保存在/var/lib/mlocate/mlocate.db後臺數據庫,天天更新一次
  • 能夠updatedb命令馬上更新數據庫
  • 只能搜索文件名
yum  -y install mlocate
複製代碼

5.4.2 whereis

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

  • whereis 命令名git

    whereis ls
    複製代碼
    • -b 只查找可執行文件
    • -m 只查找幫助文件
  • 能夠查看Shell自帶的命令,如 whereis cd正則表達式

5.4.3 which

  • 能夠看到別名 which ls
  • 能看到的都是外部安裝的命令
  • 沒法查看Shell自帶的命令,如 which cd

5.4.4 環境變量

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
複製代碼
  • 定義的是系統搜索命令的路徑
  • echo $PATH

5.4.5 find

  • 文件搜索命令
  • find [搜索範圍] [搜索條件]
5.4.5.1 按名稱搜索
  • 避免大範圍的搜索,會很是消耗系統資源shell

    find / -name 11.txt
    複製代碼
5.4.5.2 通配符
  • find是在系統當中搜索符合條件的文件名,若是須要匹配,使用通配符匹配,通配符是徹底匹配
  • 通配符
    • * 匹配任意內容
    • ? 匹配任意一個字符
    • [] 匹配任意一箇中括號內的字符
# touch abc.txt
# find . -name "ab[cdef].txt"
複製代碼
5.4.5.3 -i
  • 不區分大小寫
find . -iname "Ab[cdef].txt"
複製代碼
5.4.5.4 -user
  • 按全部者進行搜索
find /root -user root
find /root -nouser
複製代碼
5.4.5.5 按時間搜索
find . -mtime +5
複製代碼
參數 含義
atime 文件訪問時間
ctime 改變文件屬性
mtime 修改文件內容
參數 含義
-5 5天內修改的文件
5 5天前當前修改的文件
+5 5天前修改的文件
5.4.5.6 按大小搜索
  • k小寫,M大寫
find . -size +0k
複製代碼
參數 含義
-8k 小於8K
8k 等於8K
+8k 大於8K
+8M 小於8M
5.4.5.7 綜合應用
find /tmp -size +10k -a -size -20k
複製代碼
  • 查找/etc目錄下,大於10KB而且小於20KB的文件
  • -a and 邏輯與,兩個條件都知足
  • -o or 邏輯或,兩個條件知足一個就能夠
find /tmp -size +10k -a -size -20k -exec ls -lh {} \;
複製代碼
  • exec 對上個命令的結果進行操做
5.4.5.9 grep
  • 在文件當中匹配符合條件的字符串
    • -i 忽略大小寫
    • -v 排除指定字符串
  • find命令,在系統當中搜索符合條件的文件名,若是須要匹配,使用通配符匹配,通配符是徹底匹配
  • grep命令 在文件當中搜索符合條件的字符串,若是須要匹配,使用正則表達式進行匹配,正則表達式時包含匹配
vi a.txt
grep b a.txt
grep -v b a.txt
grep -i f a.txt
複製代碼

5.5 壓縮與解壓縮命令

5.5.1 zip格式

  • 壓縮文件或目錄,是一種壓縮格式
功能 命令
壓縮文件 zip 壓縮文件名.zip 源文件
壓縮目錄 zip -r 壓縮目錄名.zip 源目錄
解壓 unzip 壓縮目錄名.zip
yum install -y unzip zip

mkdir book
touch book/1.txt
touch book/2.txt
zip -r book.zip book
rm -rf book/ rmdir book
unzip book.zip
複製代碼

5.5.2 gzip

  • gzip爲高壓,能夠把文件壓縮得更小
  • gzip命令不支持目錄
命令 示例 含義
gzip 源文件 gzip book.txt 壓縮爲.gz格式的壓縮文件,源文件會消失
gzip -c 源文件 > 壓縮文件 gzip -c book.txt > book.txt.gz 壓縮爲.gz格式的壓縮文件,源文件不會消失
gzip -r 目錄 gzip -r book 把目錄下的每一個子文件都變成壓縮包,並刪除原文件,當前目錄無變化
gzip -d 壓縮文件名 gzip -d 1.txt.gz 解壓縮文件,不保留壓縮包
gunzip 壓縮文件 gunzip 2.txt.gz 解壓縮文件,也不保留壓縮包
  • 壓縮是壓縮目錄下的文件
touch book.txt
mkdir book
touch book/1.txt
touch book/2.txt
gzip book.txt //源文件會消失
gzip -c 1.txt > 1.txt.gz //源文件不消失
gzip book.txt  //壓縮爲.gz格式文件,源文件會消失
gzip -r book //把目錄下的每一個子文件都變成壓縮包
cd book
gzip -d 1.txt.gz  //解壓縮文件,不保留壓縮包
gunzip 2.txt.gz 
複製代碼

5.5.3 tar

  • 打包命令,只打包並不壓縮數據庫

  • tar -cvf
    複製代碼

    打包文件名 源文件ubuntu

    • -c 打包
    • -v 顯示過程
    • -f 指定打包後的文件名
tar -cvf book.tar book    //會打包出一個book.tar文件
複製代碼
  • x 解開包bash

    tar -xvf book.tar 
    複製代碼

5.5.4 tar.gz壓縮格式

  • zip能夠壓縮目錄但壓縮效率不高,gzip壓縮效率高但不支持目錄
  • 能夠先打包爲.tar格式,再壓縮爲.gz格式 -c 壓縮爲.tar.gz格式 -x 解壓縮.tar.gz格式
命令 示例 含義
tar -zcvf 壓縮包名 .tar.gz源文件 tar -zcvf book.tar.gz book 能夠先打包爲.tar格式,再壓縮爲.gz格式
tar -zxvf 壓縮包名.tar.gz tar -zxvf book.tar.gz 解壓tar.gz壓縮包
tar -zcvf book.tar.gz book
tar -zxvf book.tar.gz
複製代碼

5.6 關機和重啓命令

5.6.1 shutdown

  • shutdown 關機命令
    • -c 取消前一個關機命令
    • -h 關機
    • -r 重啓
shutdown -r 06:00
shutdown -c
複製代碼

5.6.2 init

關機服務器

init 0
複製代碼

重啓

init 6
複製代碼

5.6.3 logout

退出登陸

logout
複製代碼

5.7 查看登陸用戶信息

5.7.1 w

查看登陸用戶信息

  • USER 登陸的用戶名
  • TTY 登陸的終端 tty1 本地終端 pts/0遠程終端
  • FROM 登陸的IP
  • LOGIN 登陸時間
  • IDLE 用戶閒置時間
  • JCPU 該終端全部進程佔用的時間
  • PCPU 當前進程所佔用的時間
  • WHAT 正在執行的命令

5.7.2 who

  • 查看登陸用戶信息
    • USER 登陸的用戶名
    • TTY 登陸的終端 tty1 本地終端 pts/0遠程終端
    • LOGIN 登陸時間(登陸的IP)

5.7.3 last

  • 查看當前登陸和過去登陸的用戶信息

  • 默認讀取

    /var/log/wtmp
    複製代碼

    文件

    • 用戶名
    • 登陸終端
    • 登陸IP
    • 登陸時間
    • 退出時間(在線時間)

5.7.4 lastlog

  • 查看全部用戶的最後一次登陸時間
    • 用戶名
    • 登陸終端
    • 登陸IP
    • 最後一次登陸時間

5.8 文件查看命令

5.8.1 cat

  • cat 命令用於鏈接文件並打印到標準輸出設備上。

  • cat [-AbeEnstTuv] [--help] [--version] fileName

  • 參數

    • -n 或 --number:由 1 開始對全部輸出的行數編號。

      cat -n textfile1
      複製代碼

5.8.2 more

  • Linux more 命令相似 cat ,不過會以一頁一頁的形式顯示,更方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,並且還有搜尋字串的功能(與 vi 類似),使用中的說明文件,請按 h 。
  • more fileName
more  testfile
複製代碼

5.8.3 head

  • 用來顯示開頭某個數量的文字區塊
head -5 readme.txt
複製代碼

5.8.4 tail

  • tail命令可用於查看文件的內容

  • 有一個經常使用的參數 -f 經常使用於查閱正在改變的日誌文件。

  • tail [參數] [文件]

  • 參數

    • -f 循環讀取

    • -n<行數> 顯示文件的尾部 n 行內容

      tail -5 mail.txt
      tail -f access.log
      複製代碼

5.8.5 第二頁

 head -10 file | tail -5
複製代碼

6. 硬件設備文件名

  • 只要插入硬盤,Linux會自動檢測和分配名稱
  • 一個硬盤能夠分紅多個分區,每一個分區都會有一個系統分配的名稱
  • 第一塊SCSI硬盤名稱叫sda,它的第一個分區叫sda1
  • 第一塊虛擬化環境的磁盤是vda,它的第一個分區叫vda1
  • df(disk free) 命令用於顯示目前在 Linux 系統上的文件系統磁盤使用狀況統計
df -h
複製代碼
硬件 設備文件名
IDE硬盤 /dev/hd[a-d]
SCSI/SATA/USB硬盤 /dev/sd[a-p]
virtio磁盤 /dev/vd[a-p]

6.1 IDE硬盤接口

idedisk

6.2 SCSI硬盤接口

SCSIdisk

6.3 SATA硬盤接口

satadisk

7. 分區

diskformat2

  • 磁盤分區是使用分區編輯器在磁盤上劃分幾個邏輯部分
  • 磁盤一旦劃分紅多個分區,不一樣類的目錄與文件能夠存儲進不一樣的分區內

8. 掛載點

  • 爲了讓Linux系統中能夠訪問這些分區,須要把這些分區掛載到對應的目錄上
  • 在Linux中是把目錄稱爲掛載點
  • 把目錄和分區連接在一塊兒的過程成爲掛載
  • /爲根目錄,必須掛載到一個分區上,默認全部子目錄都會寫入這個分區
  • 同一級目錄下面的全部子目錄能夠有本身的獨立存儲空間
  • 必須有的分區
    • / 根分區
    • swap分區(交換分區,虛擬內存,通常爲內存的2倍,不要超過2G)
  • 推薦分區
    • /boot (啓動分區,200M) 單獨分區,避免分區寫滿形成系統沒法啓動

9.1 掛載示例

  • /dev/sd2掛載到了 /目錄上,也就是說向/目錄下在寫文件就是往/dev/sd2分區裏寫文件
  • /dev/sd1掛載到了 /boot目錄上,也就是說向/boot目錄下在寫文件就是往/dev/sd1分區裏寫文件
  • /dev/sd3掛載到了 //home目錄上,也就是說向//home目錄下在寫文件就是往/dev/sd3分區裏寫文件

mount

相關文章
相關標籤/搜索