做為一名優秀的後端工程師-兼公司網管,這些 Linux 指令需要了解下

三木閒僧發表於2019-05-30

前言

本文收錄了linux常用指令,這裡面有個小技巧,基本上所有指令後面跟上 --h 可以顯示其使用方法。故不必死記硬背,知其意乃通其形。

分類如下:

  • 檔案&目錄操作(16個)
  • 檢視檔案&內容處理(18個)
  • 檔案壓縮&解壓縮(3個)
  • 資訊顯示(11個)
  • 搜尋檔案(4個)
  • 程式管理(11個)
  • 使用者管理(7個)
  • 網路操作(11個)
  • 磁碟&檔案系統(7個)
  • 系統許可權(3個)
  • 關機重啟(5個)
  • 其他(6個)

檔案&目錄操作(16個)

ls

  • ls -a 檢視所有檔案,包含隱藏檔案
  • ls -l 簡寫 ll,檢視詳細資訊
  • ls -h 檔案大小以易讀的方式顯示

cd

  • cd ../ 返回上級目錄
  • cd ~ 前往家目錄
  • cd - 返回上一次所在目錄

cp

  • cp -r 複製目錄及目錄下檔案

find

  • find / -name 'target' 查詢根目錄下面檔名為 target 的檔案

mkdir

  • mkdir -p /tmp/test 遞迴建立目錄

mv

  • mv -f source destination 強制

pwd

  • pwd 顯示當前路徑

rm

  • rm -rf / 強制刪除根目錄及目錄下的檔案,就是我們通常所說的刪庫跑路

touch

  • touch target 建立target檔案,若檔案存在則改變檔案時間戳

tree

  • tree 功能是以樹形結構顯示目錄下的內容

basename

  • basename /tmp/1 顯示檔名

dirname

  • dirname /tmp/1 顯示路徑

chattr

  • chattr +i /tmp/1 加i屬性,防止檔案被修改

lsattr

  • lsattr /tmp/1 檢視檔案的擴充套件屬性

file

  • file /tmp/1 顯示檔案型別

md5

  • md5 /tmp/1 顯示檔案MD5值

檢視檔案&內容處理(18個)

cat

  • cat -n 顯示行號
  • cat file1 file2 開啟檔案1和2

more

  • more file1 逐頁顯示

less

  • less file1 也是逐頁顯示,與more方向相反

head

  • head -n file 顯示檔案頭n行

tail

  • tail -n file 顯示檔案尾n行
  • tailf file 實時顯示檔案尾10行,常用於跟蹤日誌資訊

cut

  • who|cut -b 1-3,5 輸出每行的1至3個位元組和第5個位元組
  • who|cut -c -3 輸出每行的1至3個字元
  • who|cut -c 3- 輸出每行的第3個字元到行尾
  • who|cut -d ' ' -f 1 以空格為分隔符,輸出第一個域

split

  • split -b 10k date.file 將檔案分割為10k的多個子檔案
  • split -b 10k date.file split_file 指定子檔案字首為split_file

paste

  • psate file1 file2 file3 將3個檔案按列合併

sort

  • sort -n 按照數值大小排序
  • sort -r 倒序排序
  • sort -t 指定分隔符
  • sort -u 忽略相同行

uniq

  • uniq -c 顯示出現次數,只有相鄰的才算重複
  • uniq -d 只顯示重複的行
  • unqi -u 只顯示不重複的行

wc

  • wc -l 顯示列數

diff

  • diff file1 file2 比較兩個檔案差異

rev

  • rev file 反向輸出檔案內容

grep

  • grep 'target' file 過濾輸出檔案中包含target的行
  • grep -v 'target' file 過濾輸出檔案中不包含target的行
  • grep -c 'target' file 過濾輸出檔案中包含target的行數
  • grep -i 'target' file 忽略大小寫
  • egrep '[1-9]|a' file 過濾輸出正則匹配到的行
  • seq 10 | grep "5" -A 3 顯示匹配某個結果之後的3行
  • seq 10 | grep "5" -B 3 顯示匹配某個結果之前的3行
  • seq 10 | grep "5" -C 3 顯示匹配某個結果的前三行和後三行

join

  • join file1 file2 將兩個檔案中,指定欄位內容相同的行連線起來

tr

  • cat text | tr '\t' ' ' 將製表符替換成空格

vim

三種模式:
  • 編輯模式(命令模式)
  • 輸入模式
  • 末行模式

    模式的轉換

    編輯->輸入

    i: 在當前游標所在字元的前面,轉為輸入模式;
    
    a: 在當前游標所在字元的後面,轉為輸入模式;
    
    o: 在當前游標所在行的下方,新建一行,並轉為輸入模式;
    
    I:在當前游標所在行的行首,轉換為輸入模式
    
    A:在當前游標所在行的行尾,轉換為輸入模式
    
    O:在當前游標所在行的上方,新建一行,並轉為輸入模式;

    輸入->編輯

    ESC

    編輯->末行:

    :

    末行->編輯:

    ESC,ESC
    開啟檔案
    vim +# :開啟檔案,並定位於第#行
    
    vim +:開啟檔案,定位至最後一行
    
    vim +/PATTERN : 開啟檔案,定位至第一次被PATTERN匹配到的行的行首
    關閉檔案
    :q  退出
    
    :wq 儲存並退出
    
    :q! 不儲存並退出
    
    :w 儲存
    
    :w! 強行儲存
    移動游標(編輯模式)
  • 逐字元移動

    h: 左
    
    l: 右
    
    j: 下
    
    k: 上
    
    #h: 移動#個字元
  • 以單詞為單位移動

    w: 移至下一個單詞的詞首
    
    e: 跳至當前或下一個單詞的詞尾
    
    b: 跳至當前或前一個單詞的詞首
    
    #w: 移動#個單詞
  • 行內跳轉

    0: 絕對行首
    
    ^: 行首的第一個非空白字元
    
    $: 絕對行尾
  • 行間跳轉

    #G:跳轉至第#行
    
    gg: 第一行
    
    G:最後一行
    翻屏
    Ctrl+f: 向下翻一屏
    
    Ctrl+b: 向上翻一屏
    
    Ctrl+d: 向下翻半屏
    
    Ctrl+u: 向上翻半屏
    刪除單個字元
    x: 刪除游標所在處的單個字元
    
    #x: 刪除游標所在處及向後的共#個字元
    刪除命令: d
    dd: 刪除當前游標所在行
    #dd: 刪除包括當前游標所在行在內的#行;
    撤消編輯操作
    u:撤消前一次的編輯操作
    
    #u: 直接撤消最近#次編輯操作
    
    連續u命令可撤消此前的n次編輯操作
    
    撤消最近一次撤消操作:Ctrl+r
    查詢
    /PATTERN
    
    ?PATTERN
    
    n 下一個
    
    N 上一個

檔案壓縮&解壓縮(3個)

tar

  • tar zxvf FileName.tar.gz 解壓
  • tar zcvf FileName.tar.gz DirName 壓縮

zip

  • zip -r html.zip /home/html 遞迴壓縮

unzip

unzip test.zip -d /tmp 解壓到指定目錄下

資訊顯示(11個)

uname

  • uname -a 顯示系統全部資訊

hostname

  • hostname 顯示主機名

dmesg

  • dmesg 顯示開機資訊

uptime

  • uptime 顯示系統執行時間及負載

stat

  • stat 顯示檔案的狀態資訊

du

  • du -sh 顯示路徑下所有檔案大小
  • du -sh local 顯示路徑下local目錄檔案大小
  • du -sh * 顯示路徑下所有目錄檔案大小

df

  • df -h 顯示系統磁碟空間的使用情況

top

  • top 實時顯示系統資源使用情況

free

  • free -m 以M為單位檢視系統記憶體

date

  • date +"%Y-%m-%d" 2019-05-28
  • date -d "1 day ago" +"%Y-%m-%d" 輸出昨天日期
  • date -d "+1 day" +%Y%m%d 顯示前一天的日期
  • date -d "-1 day" +%Y%m%d 顯示後一天的日期
  • date -d "-1 month" +%Y%m%d 顯示上一月的日期
  • date -d "+1 month" +%Y%m%d 顯示下一月的日期
  • date -d "-1 year" +%Y%m%d 顯示前一年的日期
  • date -d "+1 year" +%Y%m%d 顯示下一年的日期

cal

  • cal 日曆資訊

搜尋檔案(4個)

which

  • which pwd 顯示命令路徑

find

  • find / -name 'target' 查詢根目錄下面檔名為 target 的檔案

whereis

  • whereis php 查詢二進位制命令

locate

  • locate target 從資料庫 (/var/lib/mlocate/mlocate.db) 查詢目標檔案,使用updatedb更新庫

程式管理(11個)

jobs

  • jobs 檢視當前有多少在後臺執行的命令

bg

  • bg 1 將一個在後臺暫停的命令,繼續執行,1為作業號
    (ctrl+z)可以掛起程式,返回作業號

fg

  • fg 1 將後臺中的命令調至前臺繼續執行 ,1為作業號

kill

  • kill 程式號 殺程式
  • kill -9 程式號 強殺程式

killall

  • killall php 通過程式名字殺程式
  • killall -9 php 通過程式名字強殺程式

pkill

  • 用法同上

crontab

  • crontab -l 檢視定時任務
  • crontab -e 編輯定時任務
  • crontab -l -u user1 檢視user1定時任務,只有root才有許可權
  • crontab -e -u user1 編輯user1定時任務,只有root才有許可權

ps

  • ps -ef 檢視程式,顯示UID,PPIP,C與STIME,每個程式所使用的環境變數欄位
  • ps -axu 檢視所有程式,並顯示屬於使用者

pstree

  • pstree -p 顯示當前所有程式的程式號和程式id樹
  • pstree -a 顯示所有程式的所有詳細資訊樹

nohup

  • nohup command & 退出賬戶時不結束通話程式,仍在後臺執行

pgrep

  • pgrep -l httpd 查詢http相關的程式號

使用者管理(7個)

useradd

  • useradd boy -u 888 建立一個新使用者賬戶,並設定ID
  • useradd –g sales jack –G company,employees
    -g:加入主要組 -G:加入次要組

usermod

  • usermod -G staff newuser2 將newuser2新增到組staff中
  • usermod -l newuser1 newuser 修改newuser的使用者名稱為newuser1
  • usermod -L newuser1 鎖定賬號newuser1
  • usermod -U newuser1 解除對newuser1的鎖定

userdel

  • userdel -f user1 強制刪除使用者
  • userdel -r user1 刪除使用者的同時,刪除與使用者相關的所有檔案

groupadd

  • groupadd -g 1000 group1 建立一個新組,並設定組ID加入系統

passwd

  • passwd user1 修改user1密碼
  • passwd -l user1 鎖住密碼
  • passwd -d user1 刪除密碼

su

  • su root 切換身份

sudo

  • sudo command 已管理員身份執行命令

網路操作(11個)

telnet

  • telnet 127.0.0.1 登入遠端主機

ssh

  • ssh root@127.0.0.1 -p22 登入遠端主機

scp

  • scp local_file remote_username@remote_ip:remote_folder 本地拷貝到遠端
  • scp remote_username@remote_ip:remote_folder local_file 遠端拷貝到本地

wget

  • wget url 下載一個檔案
  • wget --limit-rate=300k url 限速下載
  • wget -c url 斷點續傳
  • wget -b url 後臺下載

ping

  • ping www.baidu.com -c 2 收到兩個包就結束

route

  • route 顯示當前路由

ifconfig

  • ifconfig 檢視、配置、啟用或禁用網路介面

ifup

  • ifup eth0 開啟eth0網路卡

ifdown

  • ifdown eth0 關閉eth0網路卡

netstat

  • netstat -at 列出所有 tcp 埠
  • netstat -au 列出所有 udp 埠
  • netstat -l 只顯示監聽埠

ss

  • ss -t -a 顯示所有tcp連結
  • ss -l 顯示處於監聽狀態的套接字

磁碟&檔案系統(7個)

mount

  • mount /dev/hda1 /mnt 將/dev/hda1掛載到/mnt目錄下

umount

  • umount -v /mnt/mymount/ 解除安裝/mnt/mymount/

fsck

  • fsck -y /dev/hda2 檢查並修復Linux檔案系統

dumpe2fs

  • dumpe2fs /dev/hda1 檢視檔案系統資訊

dump

  • ‍dump -0u -f /tmp/homeback.bak /home
    將/home目錄所有內容備份到/tmp/homeback.bak檔案中,備份層級為0並在/etc/dumpdates中記錄相關資訊

fdisk

  • fdisk /dev/sdb
    輸入m列出可以執行的命令
    輸入p列出磁碟目前的分割槽情況
    輸入d然後選擇分割槽,刪除現有分割槽
    輸入print檢視分割槽情況,確認分割槽已經刪除
    輸入n建立新的磁碟分割槽
    輸入w最後對分割槽操作進行儲存

mkfs

  • mkfs -t ext3 /dev/sda6 將sda6分割槽格式化為ext3格式

系統許可權(3個)

chmod

  • chmod 777 file1 修改file1檔案許可權為777
  • chmod u+x,g+w file1 為file1設定自己可以執行,組員可以寫入的許可權

chown

  • chown -R root /usr/meng 修改將目錄/usr/meng及其下面的所有檔案、子目錄的檔案主改成 root

chgrp

  • chgrp -R mengxin /usr/meng 將/usr/meng及其子目錄下的所有檔案的使用者組改為mengxin

關機重啟(5個)

shutdown

  • shutdown -h now 立即關機
  • shutdown +5 "System will shutdown after 5 minutes" 指定5分鐘後關機,同時送出警告資訊給登入使用者

halt

  • halt -p 關閉系統後關閉電源
  • halt -d 關閉系統,但不留下紀錄

poweroff

  • poweroff -f 強制關閉作業系統

logout

  • logout 退出當前登入的Shell

exit

  • exit 退出當前登入的Shell

其他(6個)

echo

  • echo 'hello' 列印字串、變數

print

  • printf 'hell0' 格式化輸出字串

rpm

  • rpm -ivh your-package.rpm 安裝rpm包
  • rpm -Uvh your-package.rpm 升級rpm包
  • rpm -e package 解除安裝
  • rpm -qa 列出所有安裝過的包
  • rpm -ql 包名 rpm包中的檔案安裝到那裡去

yum

  • yum install php 安裝php
  • yum remove php 解除安裝php

clear

  • clear 清屏

history

  • history 10 最近使用的10條歷史命令

相關文章