做爲一名後端工程師,這些 Linux 指令需要了解下

前言

本文收錄了 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

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 條歷史命令
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章