主頁 > 作業系統 > Linux 常用命令總結(三)

Linux 常用命令總結(三)

2021-10-12 06:04:13 作業系統

一、實用命令

1、crontab(定時任務)

(1)基本概念
  crontab 是用來管理定時任務的命令,
  系統啟動后,將會自動呼叫 crontab,如果存在任務,則根據相關定義去執行,

 

(2)常用場景
  系統周期性執行的作業,比如:系統資料備份,定期清理快取等,
  個人定期執行的作業,比如:每隔幾分鐘檢查郵件服務器是否存在新郵件,

 

(3)語法規則

【語法:】
    crontab [options]
    crontab [options] file

【options:】
    -u <user>     指定某用戶的定時任務,
    -e            編輯當前用戶的任務,進入 vi 文字編輯器,
    -l            查看當前用戶的任務
    -r           洗掉當前用戶的任務
    
【定時任務格式:】
    f1 f2 f3 f4 f5 command
說明:
    f1 表示分鐘(0 - 59)
    f2 表示小時(0 - 23)
    f3 表示天數(1 - 31)
    f4 表示月數(1 - 12)
    f5 表示星期幾(0 - 6, 0 表示 星期天,1 表示星期一...)
    command 表示待執行的命令

即:(通過 cat /etc/crontab 可以查看)
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |   .---- command to be executed
# *  *  *  *  * command 

注:
    f1 為 * 時,表示每分鐘執行,f2...f5 類似,
    f1 為 a-b 時,表示從第 a 分鐘到第 b 分鐘時間段內,每分鐘執行一次,f2...f5 類似,
    f1 為 */n 時,表示每隔 n 分鐘執行一次,f2...f5 類似,
    f1 為 a,b,c 時,表示第 a、b、c 分鐘執行一次,f2...f5 類似,

 

(4)相關命令

【查看 crontab:】
    cat /etc/crontab

【編輯 crontab:】
    crontab -e
注:
    不同的用戶創建的任務,最終出現在 /var/spool/cron 下,檔案名為 用戶名,
    比如:root 用戶創建的任務最終存盤在 /var/spool/cron/root 檔案中,

【查看 crontab:】
    crontab -l
    cat /var/spool/cron/root    # 查看 root 用戶的定時任務

【洗掉所有 crontab:】
    crontab -r

【查看、啟動、重啟、停止 crontab 服務:】
  service crond status
  service crond start/stop/restart

【查看日志:】
  tail -f /var/log/cron

 

(5)舉例:

【每分鐘執行一次 echo:】
    * * * * * echo 11 >> /root/test/text.txt
注:
    若腳本中命令不生效,將命令換成 絕對路徑 試一下,
    通過 which 可以查找 命令所在的 絕對路徑,比如: which echo 輸出為 /usr/bin/echo
    替換絕對路徑,比如: * * * * * /usr/bin/echo 11 >> /root/test/text.txt
    
【每個月 1 號、15 號 執行一次 echo:】
    0 0 1,15 * * echo 11 >> /root/test/text.txt

 

2、sh、source、exec(執行腳本)

(1)基本概念

【sh:】
    使用 sh script.sh 執行腳本時,當前 shell 是父行程,生成一個子 shell 行程,在子 shell 中執行腳本,
    腳本執行完畢,退出子 shell,回到當前 shell,
    ./script.sh 與 sh script.sh 等效
注:
    echo $$  # 輸出當前 shell 的行程號

【source:】
    使用 source script.sh 方式,在當前背景關系中執行腳本,不會生成新的行程,
    腳本執行完畢,回到當前 shell,
    . script.sh(. 與 script.sh 之間有一個空格) 與 source script.sh 等效,    

【exec:】
    使用 exec command 方式,一般用于腳本內部,會用 command 行程替換當前 shell 行程,并且保持 PID 不變,
    執行完畢,直接退出,不回到之前的 shell 環境,

 

(2)問題一:sh、source 區別

【sh、source 區別:】
    使用 sh 和 source 方式下,腳本執行完畢,都會回到之前的 shell 中,
    通過 sh 執行腳本時,修改的背景關系(比如:環境變數)不會影響當前 shell,
    通過 source 執行腳本時,修改的背景關系(比如:環境變數)會影響當前 shell,

 

(3)問題二:修改 PATH 變數,不重啟使其生效

【修改 PATH 變數,不重啟使其生效:】
Step1:
    在 /etc/profile 檔案末尾追加 PATH 設定,
比如:
    echo 'export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.1' >> /etc/profile
    echo 'export PATH=$MAVEN_HOME/bin:$PATH' >> /etc/profile
    
Step2:
    執行 source /etc/profile 使其生效

 

(4)問題三:在腳本中執行 source /etc/profile 不生效

【在腳本中執行 source /etc/profile 不生效:】
方式一:
    可以直接使用 source 腳本名 直接去呼叫,不需要在腳本中寫 source /etc/profile
    
方式二:
    在腳本執行 source /etc/profile 后,追加 exec 陳述句,
    通過 exec bash -l 或者 exec /bin/bash -l 或者 exec $SHELL -l 去打開一個新行程,
注:
    exec 會導致 exec 之后的陳述句不執行,exec 一般放于腳本末尾,

 

3、jq(json 決議工具)

(1)基本概念
  jq 是一款在使用命令列處理 JSON 資料的工具,可用于處理 標準輸入、管道、檔案 傳遞的 JSON 資料,經過一系列 過濾器、運算式 后,提取成需要的資料 并輸出到 標準輸出中,

 

(2)相關地址
  jq 官網地址: https://stedolan.github.io/jq/
  jq 檔案: https://github.com/stedolan/jq/wiki
  jq 檔案: https://stedolan.github.io/jq/manual/

 

(3)安裝

【centos:】
    yum install -y epel-release
    yum install -y jq
    
【其余方式參考官網提供方式:】
    https://stedolan.github.io/jq/download/

 

(4)語法規則

【語法:】
    jq [options] <jq filter> [file...]
    
【options: 】
    -c 緊湊輸出(默認為 樹形結構,緊湊輸出將樹形結構轉為一行輸出)
    -r 輸出原始字串,不在結果上加雙引號
    -R 讀取原始字串,在結果上加上雙引號
    -C 字串著色
    -M 字串不著色
    --tab 使用 tab 替換縮進符
    -s 將結果使用陣列保存
    --arg a v 將變數 $a 設定為值 v
注:
    對于待決議的資料,其所有的屬性名必須是以雙引號包括的字串,否則可能會決議失敗,
    資料不存在時,回傳 null ,

【jq filter -- 基本規則: 】
    jq 根據語法規則決議 jq filter,并將其應用在 JSON 資料上,從而決議出想要的結果,
    
    .   是最基本的過濾器,僅用 . 作為過濾器時,表示對整個 JSON 資料的參考,結果是格式化輸出 JSON 資料,
    ''  單引號可以不使用,但是若組合了多個過濾器,需要使用單引號包裹,
    ""  雙引號用于包裹特殊字符,比如: ."key$" 或者 .["key$"] 
    ,   用于輸出多個過濾器結果,比如: .key1,.key2 表示過濾 key1 key2 的資料
    |   jq filter 支持串行化操作,一個復雜的 filter 可以由多個簡單的 filter 通過 管道符 "|" 連接組成,每個 filter 均以 前一個 filter 的結果作為輸入資料進行處理,
    ..  遞回輸出每個值,
    []  將結果構造為一個陣列,比如: '[.key1,.key2]'
    {}  將結果構造為一個物件,比如: '{"result": .key1}',
比如: 
    {"key1":{"key11":"value11","key12":"value12"}}, 可以通過 '.key1 | .key11' 去決議 key11 的值, 
    echo '{"key1":{"key11":"value11","key12":"value12"}}' | jq '.key1 | .key11'

【jq filter -- 物件操作: 】
    jq 使用類似于 '.key' 的方式過濾 JSON 物件,當資料不存在時,回傳 null,
    
    過濾單個物件: '.key1'  等價于 .'["key1"]'
    過濾多個物件 '.key1, .key2'  等價于  .'["key1", "key2"]'
    過濾物件的物件: '.key1.key2' 等價于 '.key1 | .key2'
    
【jq filter -- 陣列操作: 】
    jq 使用類似于 '.[index]' 的方式過濾 JSON 陣列,

    過濾單個陣列元素: '.[index]'      index 從 0 開始,正序輸出,若為負數,反序輸出(0 表示第一個元素, -1 表示最后一個元素),
    過濾多個陣列元素: '.[index, index2]'
    過濾所有陣列元素: '.[]'
    過濾陣列某個范圍的資料:  '.[startIndex:endIndex]'    包含 startIndex ,但不包含 endIndex

 

(5)舉例(簡單)

【vi test.json       編輯 json 資料】
{
  "key1": "value1",  "key2": "value2"
}

【cat test.json | jq     格式化輸出資料】
{
  "key1": "value1",
  "key2": "value2"
}

【cat test.json | jq -c     輸出緊湊的資料】
{"key1":"value1","key2":"value2"}

【cat test.json | jq -R     輸出結果會加上雙引號】
"{"
"  \"key1\": \"value1\",  \"key2\": \"value2\""
"}"

【cat test.json | jq -s    結果使用陣列形式保存】
[
  {
    "key1": "value1",
    "key2": "value2"
  }
]

【cat test.json | jq --arg name jarry '{name: $name}'     將變數 $a 設定為值 v】
{
  "name": "jarry"
}

 

(6)舉例(決議物件 Object)

【vi test.json    編輯 json 資料】
{
  "key1": {
    "key11": "value11",
    "key12": "value12"
  },
  "key2": "value2"
}

【cat test.json | jq .key1     獲取 key1 對應的 value】
{
  "key11": "value11",
  "key12": "value12"
}

【cat test.json | jq .'["key1"]'     獲取 key1 對應的 value】
{
  "key11": "value11",
  "key12": "value12"
}

【cat test.json | jq .key1,.key2      獲取 key1,key2 對應的 value】
{
  "key11": "value11",
  "key12": "value12"
}
"value2"

【cat test.json | jq .'["key1", "key2"]'     獲取 key1,key2 對應的 value】
{
  "key11": "value11",
  "key12": "value12"
}
"value2"

【cat test.json | jq .[]     獲取所有的 value】
{
  "key11": "value11",
  "key12": "value12"
}
"value2"

【cat test.json | jq .key1.key11   獲取 key11 對應的 value】
"value11"

【cat test.json | jq -r .key1.key11   獲取 key11 對應的 value】
value11

【cat test.json | jq keys   獲取所有 key 組成的陣列】
[
  "key1",
  "key2"
]

【cat test.json | jq [.[]]   獲取所有的 value 組成的陣列】
[
  {
    "key11": "value11",
    "key12": "value12"
  },
  "value2"
]

 

(7)舉例(決議陣列 Array)

【vi test.json    編輯 json 資料】
[
    {
      "key1": ["value1"],
      "key2": "value2"
    },
    ["value3", "value4"]
]

【cat test.json | jq .[]    獲取陣列所有的元素】
{
  "key1": [
    "value1"
  ],
  "key2": "value2"
}
[
  "value3",
  "value4"
]

【cat test.json | jq .[0]   獲取陣列的第一個元素】
{
  "key1": [
    "value1"
  ],
  "key2": "value2"
}

【cat test.json | jq .[1]   獲取陣列的第二個元素】
[
  "value3",
  "value4"
]

【cat test.json | jq .[0:2]   獲取陣列 第一個元素 到 第三個元素】
[
  {
    "key1": [
      "value1"
    ],
    "key2": "value2"
  },
  [
    "value3",
    "value4"
  ]
]

【cat test.json | jq .[0].key1    獲取 Object 物件的 value 值】
[
  "value1"
]

【cat test.json | jq '.[0] | .key1'   獲取 Object 物件的 value 值】
[
  "value1"
]

【cat test.json | jq .[0].key1,.[0].key2】
[
  "value1"
]
"value2"

【cat test.json | jq .[1][0]   獲取 陣列元素 】
"value3"

【cat test.json | jq '.[1] | .[0]'"value3"

【cat test.json | jq [.[0].key2]】
[
  "value2"
]

【cat test.json | jq [.[1][0]]】
[
  "value3"
]

 

4、logrotate(管理日志檔案)

(1)基本概念

logrotate 是 Linux 上的一個日志檔案管理工具,
可以洗掉 舊的日志檔案,并創建新的日志檔案,這個程序可以稱為 “日志輪替”,
可以根據 日志檔案的大小、以及 日志檔案 的存放天數 來進行處理,一般通過 cron 程式來執行,
crontab 會每天執行一次 /etc/cron.daily 目錄下的腳本,該目錄下存在一個 /etc/cron.daily/logrotate 檔案,內部執行 logrotate 命令,
若 logrotate 配置在其他目錄下,比如: /etc/cron.daily/,/etc/cron.weekly/,/etc/cron.monthly/,/etc/cron.hourly/,則可能 每天、每周、每月、每小時 執行一次,
一般情況下,logrotate 每天由 crontab 執行一次,可以手動執行 logrotate 命令(-f 強制執行),或者 自定義定時任務,

 

(2)語法規則

【語法:】
    logrotate [options] <configfile>

【options:】
    -d, --debug       顯示指令執行程序,不進行實際操作
    -v, --verbose     顯示指令執行程序,進行實際操作
    -f, --force       強制執行
    -s, --state=statefile  指定日志更新狀態,形如:"/var/log/yum.log" 2021-4-1-10:54:26
   
【logrotate 基本格式:】
    日志檔案路徑 + {} 組成,{} 內部每行表示一個規則,
    若配置多個檔案,檔案名獨立成行,
*.log {
    rule1
    rule2
    ...
}

xxx.log
xxx.log2
{
    rule1
    rule2
    ...
}

【logrotate 基本規則引數:】
    compress                    使用 gzip 壓縮日志檔案,
    nocompress                  不壓縮日志檔案,
    copytruncate                先復制日志檔案,再清空,復制與清空之間存在時間差,可能丟失部分日志資料,
    create mode owner group     創建空檔案,并指定權限、用戶名、組名,比如: create 0600 root root,
    nocreate                    不創建新的空檔案,
    daily                       指定 日志輪替 周期為 每天,
    weekly                      指定 日志輪替 周期為 每周,
    monthly                     指定 日志輪替 周期為 每月,
    delaycompress               延遲壓縮程序到 下一次 進行 日志輪替 時進行,與 compress 配合使用,即當前日志檔案 需要等待下一次 日志輪替 時才進行 壓縮,
    ifempty                     即使日志檔案為空,也進行 日志輪替,
    notifempty                  日志檔案為空,則不作 日志輪替,
    missingok                   如果日志檔案不存在,仍可以繼續處理,不會出錯,
    nomissingok                 如果日志檔案不存在,則會出錯(顯示出錯資訊),
    noolddir                    日志存盤在同一個目錄下,
    olddir [目錄名]             指定日志存盤目錄,
    rotate [數量]               指定日志檔案備份數量,執行一次日志輪替,就生成一次備份檔案,超過后,備份檔案內容將清空,若未配置,則直接修改原檔案,
    size [大小]                 當日志檔案超過指定的檔案大小時進行日志輪替,默認單位為 byte,可以為 K、M、G,比如: size 10M                 
    sharedscripts               對多個日志檔案 執行 postrotate 或者 prerotate 命令,
    dateext                     使檔案以日期為后綴,默認為 xxx.log.1,xxx.log.2 等,以日期結尾,比如:xx.log.2020-04-20
    dateformat -%Y%m%d%H.%s     配合 dateext 使用,改變日期后綴的格式,
    prerotate~endscript        預操作,在執行 日志輪替前 先執行 prerotate~endscript 之間的命令,
    postrotate~endscript       后操作,在執行 日志輪替后 執行 postrotate~endscript 之間的命令,

 

(3)相關檔案

【cat /etc/cron.daily/logrotate】
#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=https://www.cnblogs.com/l-y-h/archive/2021/10/08/$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

【cat /etc/logrotate.conf】
# see "man logrotate" for details  通過 man logrotate 指令可以查看 logrotate 詳情
# rotate log files weekly          每周進行一次 日志輪替
weekly

# keep 4 weeks worth of backlogs   保留最近 4 周的日志
rotate 4

# create new (empty) log files after rotating old ones   創建一個空的新檔案 在 日志輪替 老檔案后
create

# use date as a suffix of the rotated file      使檔案以日期為后綴
dateext

# uncomment this if you want your log files compressed     compress 表示壓縮日志檔案
#compress

# RPM packages drop log rotation information into this directory  存放 rpm 安裝的軟體的日志輪替規則,自定義日志輪替
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here   配置 wtmp、btmp 日志輪替規則
/var/log/wtmp {
    monthly
    create 0664 root utmp
   minsize 1M
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here       可以在此處配置系統日志輪替規則

 

(4)配置 logrotate 的方式

【方式一:】
    直接在 /etc/logrotate.conf 檔案中進行配置,
    一般用于配置非 rpm 安裝的軟體的系統檔案,
    
【方式二:】
    在 /etc/logrotate.d 檔案夾下 新建一個組態檔,
    一般 rpm 安裝的軟體 會自動生成一個組態檔,比如:/etc/logrotate.d/yum

【cat /etc/logrotate.d/yum】
/var/log/yum.log {
    missingok
    notifempty
    maxsize 30k
    yearly
    create 0600 root root
}

 

5、sed(修改文本)

(1)基本概念

【基本概念:】
    sed 是一個過濾和轉換文本的流編輯器(非互動式),
    用于處理 檔案 或者 管道符 傳遞的文本資料,可以對資料行進行替換、洗掉、新增、選取等特定作業,簡化對檔案的反復操作,
    默認情況下,sed 逐行處理 輸入資料,會將修改結果輸出,不會修改源檔案,
    
【處理流程:】
    1、將正在處理的行 保存在一個臨時快取區(模式空間)中.
    2、處理臨時快取區中的資料,將結果輸出,處理完一行,就將其從臨時快取區洗掉,
    3、重復 1-2 部署,直至資料處理完成,

 

(2)語法規則

【語法:】
    sed [options] 'command' fileName1 [fileName2]          # sed 命令格式
    sed [options] -f scriptFile fileName(s)                # sed 腳本模式(根據 scriptFile 中的 sed 命令對 fileName 表示的檔案進行操作)
    
【options:】
    -i       直接修改源檔案內容,不輸出,
    -e       默認選項,不修改源檔案(可以進行重定向覆寫源檔案),
    -n       禁止默認輸出行為(輸出所有內容),僅顯示模糊匹配的行,不修改源檔案,

【command:】
    command 定義如何處理檔案,默認處理所有行,可以通過 數字、字符、正則運算式 組合形式過濾檔案,

【command -- 數字(從 1 開始,1 表示第一行):】
    單個數字表示第幾行
    $ 表示最后一行
    使用 , 連接,表示 第幾行 到 第幾行
    使用 ~ 連接,表示從 第幾行 開始,每隔 幾行 取一行
比如:
    2             表示第 2 行,
    $             表示最后一行,
    2,4           表示第 2 行 到 第 4 行,
    2~3           表示從第 2 行開始,每隔 3 行取一行,
    2,+4          表示從第 2 行到 第 2+4 行,
    
【command -- 字符:】
    a\      表示在當前行后面插入一行 或 多行,追加多行時,除最后一行,每行需要以 \ 結尾(表示換行),
    i\      表示在當前行之前插入一行 或 多行,追加多行時,除最后一行,每行需要以 \ 結尾(表示換行),
    c\      表示使用新文本替換當前行,追加多行時,除最后一行,每行需要以 \ 結尾(表示換行),
    d       表示洗掉選擇的行,
    h       把模式空間里的內容復制到暫存緩沖區.
    H       把模式空間里的內容追加到暫存緩沖區
    g       把暫存緩沖區里的內容復制到模式空間,覆寫原有的內容
    G       把暫存緩沖區的內容追加到模式空間里,追加在原有內容的后面
    x       交換暫存緩沖區 與 模式空間的內容,
    n       讀取下一個輸入行到模式空間,
    N       追加下一個輸入行到模式空間,
    p       顯示每行的內容,若與 options 中的 -n 使用時,可以僅輸出 選定的 內容,
    P       僅顯示第一行,
    q       結束 sed 操作
    !       非,表示對非選中行進行操作,
    =       輸出當前行號,
    
【command -- 正則運算式:】
    s/regexp/replacement/     根據 regexp 匹配到指定字串,然后使用 replacement 進行替換,
    /regexp/
regexp:
    ^         行首定位符,匹配 xx 開頭的行, /^xx/
    $         行位定位符,匹配 xx 結尾的行. /xx$/
    .         匹配單個字符(除換行符外),  /x..x/
    *         匹配 0個 或 多個 字符(不能用于首字母), /x*x/
    []        匹配指定字符組的任一個字符, /[Xx]xx/
    [^]       匹配不在指定字符組內的任一字符,  /[^Xx]xx/
    \(..\)    匹配拆分子串,下標從 1 開始,在替換字串中使用 \1、\2 對其進行參考,  s/\(love\)able/\1rs  -> lovers
    &         保存查找串,在替換字串中使用 & 進行參考,   s/my/**&**/ ->  **my**
    \<        詞首定位符,匹配 xx 開頭的詞, /\<xx/
    \>        詞尾定位符,匹配 xx 結尾的詞, /xx\>/
    x\{m\}    匹配重復 x 行 m 次的行, /x\{5\}/
    x\{m,\}   匹配重復 x 行至少 m 次的行, /x\{5,\}/
    x\{m,n\}  匹配重復 x 行至少 m 次,但是少于 n 次的行, /x\{5,10\}/

 

(3)舉例(數字)

【vi test.txt】
java
javascript
python
c++
go

【sed -n '2p' test.txt     僅輸出 test.txt 第二行內容】
javascript

【sed -n '3,$p' test.txt  輸出第 3 行 到最后一行的內容】
python
c++
go

【sed -n '2,+2p' test.txt  輸出第 2 行開始,到第 4 行(2+2=4)的內容】
javascript
python
c++

【sed -n '2~3p' test.txt  輸出從第 2 行開始,每隔 3 行的內容】
javascript
go

 

(4)舉例(字符)

【vi test.txt】
java
javascript
python
c++
go

【sed -e '2a\hello' test.txt  在 第二行 與 第三行 之間 插入新的一行 hello,此時 hello 作為新的第三行單獨存在】
java
javascript
hello
python
c++
go

【sed -e '3c\helloworld' test.txt    使用 helloworld 替換 第三行】
java
javascript
helloworld
python
c++
go

【sed -e '3i\world' test.txt    在 第三行 之前插入 新的一行 world】
java
javascript
world
helloworld
python
c++
go

【sed -e '3,4d' test.txt   洗掉第三行、第四行】
java
javascript
python
c++
go

 

(5)舉例(正則運算式)

【vi test.txt】
java
javascript
python
c++
go

【sed -n '/^java/p' test.txt     輸出所有以 java 開頭的行】
java
javascript

【sed -n '/.*va/p' test.txt     輸出包含 va 的行,若寫成 /*va/ 的形式,可能匹配不到資料】
java
javascript

【sed -n '/\<ja/p' test.txt     輸出包含 ja 開頭的詞的行】
java
javascript

【sed -n '/\>++/p' test.txt     輸出包含 ++ 結尾的詞的行】
c++

【sed -e 's/c++/c--/' test.txt   替換 c++ 為 c--】
java
javascript
python
c--
go

【sed -e 's/\(c\)\(++\)/\1--/' test.txt    替換字串,\1 用于替代 \(c\),最終效果為 c++ -> c--】
java
javascript
python
c--
go

【sed -e 's/c++/--&&--/' test.txt     & 用于替代查找串,此處 & 等同于 c++】
java
javascript
python
--c++c++--
go

 

二、網路相關

1、netstat(顯示網路狀態)

(1)基本概念
  netstat 命令用于顯示網路狀態,
  通過 netstat 可以知道整個 Linux 系統的網路情況,

 

(2)語法規則

【語法:】
    netstat [options]

【options:】
    -a, --all             顯示所有的網路狀態(包括 監聽、非監聽的 Socket)
    -l, --listening       只顯示正在監聽的 Socket
    -c, --continuous      持續的列出網路狀態
    -C, --cache           顯示路由緩沖中的路由資訊
    -e, --extend          顯示網路其他相關資訊
    -F, --fib             顯示路由緩沖資訊
    -n, --numeric         顯示 ip 地址而不是去決議域名獲取 主機、埠或用戶名,
    -o, --timers          顯示與網路定時器有關的資訊,
    -p, --program         顯示 Socket 所屬行程的 PID 和名稱,
    -t, --tcp             顯示 TCP 傳輸協議的連線狀況,
    -u, --udp             顯示 UDP 傳輸協議的連線狀況,
    -i, --interfaces      顯示網路界面資訊表單(網卡資訊),

 

(3)舉例

【顯示網卡相關資訊:】
    netstat -i
    
【顯示 tcp 連接情況:】
    netstat -nltp

 

2、telnet(連接遠程機器,確認機器埠是否開放)

(1)基本概念
  telnet 命令用于使用 TELNET 協議與另一個主機進行互動通信,
  可以對另一主機進行遠程登錄、管理操作(有些 linux 服務器不支持 telnet,使用 ssh),
  可以通過 telnet 來確認遠程主機的某個埠是否開放,也是日常網路故障排錯的重要一部分,

(2)安裝

【centos7: 】
    yum -y install telnet-server
    yum -y install telnet

 

(3)語法規則

【語法:】
    telnet [options] [ip] [port]

【options:】
    此處省略,通過 man telnet 可以查看語法規則,

 

(4)舉例

【連接遠程主機:】
    telnet 192.168.210.157

【確認遠程主機上某個埠是否可用:】
    telnet 192.168.210.157 8080
注:
    輸出中出現 "Escape character is '^]'" 即表示埠開放,

 

3、nslookup(查詢域名服務器)

(1)基本概念
  nslookup 是一個查詢 Intelnet 域名服務器的程式,有兩種模式: 互動式、非互動式,
  互動模式允許 用戶查詢名稱服務器 以獲取有關 各種主機 和 域的資訊 或 輸出域中的主機串列,
  非互動模式僅用于輸出主機 或 域的名稱 等資訊,

 

(2)語法規則

【語法:】
    nslookup [options] domain [DNS-Server]

【options:】
    此處省略,通過 man nslookup 可以查看語法規則,

 

(3)舉例:

【查詢百度域名情況:】
    nslookup www.baidu.com
    
Server:         192.168.157.2
Address:        192.168.157.2#53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 14.215.177.38
Name:   www.a.shifen.com
Address: 14.215.177.39

【指定域名服務器進行查詢:】
    nslookup www.baidu.com 8.8.8.8

Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 14.215.177.38
Name:   www.a.shifen.com
Address: 14.215.177.39

【反向 DNS 決議:】
    nslookup -ty=ptr 8.8.8.8

Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
8.8.8.8.in-addr.arpa    name = dns.google.

Authoritative answers can be found from:

 

三、系統記憶體、磁盤相關

1、free(顯示記憶體使用情況)

(1)基本概念
  顯示機器記憶體使用情況(包括已用和未用的記憶體空間),
  顯示 系統中 已用和未用的 物理記憶體和交換記憶體, 共享記憶體和 內核使用的 緩沖區的 總和,

 

(2)語法規則

【語法:】
    free [options]
    
【options:】
    -b, --bytes         以 B 為單位顯示記憶體
    -k, --kilo          以 KB 為單位顯示記憶體(默認)
    -m, --mega          以 MB 為單位顯示記憶體
    -g, --giga          以 GB 為單位顯示記憶體
    -h, --human         優化輸出,資料顯示帶單位       
    -t, --total         額外增加一個 total 行,顯示總和
    -s N, --seconds N   每隔 N 秒輸出一次
    -c N, --count N     輸出 N 次后退出

 

(3)舉例

【free -h】
              total        used        free      shared  buff/cache   available
Mem:           1.8G        763M        256M         20M        799M        852M
Swap:          2.0G        776K        2.0G

【free -h -s 2 -c 3】
              total        used        free      shared  buff/cache   available
Mem:           1.8G        762M        257M         20M        799M        853M
Swap:          2.0G        776K        2.0G

              total        used        free      shared  buff/cache   available
Mem:           1.8G        762M        257M         20M        799M        853M
Swap:          2.0G        776K        2.0G

              total        used        free      shared  buff/cache   available
Mem:           1.8G        762M        257M         20M        799M        853M
Swap:          2.0G        776K        2.0G

 

2、df(顯示磁盤使用情況)

(1)基本概念
  顯示目前在 Linux 系統上的檔案系統磁盤使用情況統計,

 

(2)語法規則

【語法:】
    df [options] [file]
    
【options:】
    -a, --all            列出所有的檔案系統
    -h,--huma-readable   以易讀的方式列出,帶單位
    -H, --si             與 -h 類似,但是計數單位為 1000,不是 1024                     
    -T, --print-type     輸出每個檔案的型別
    --type=TYPE          只顯示指定型別的檔案系統
    --exclude-type=TYPE  只顯示指定型別以外的檔案系統

 

(3)舉例

【df -Th】
檔案系統                型別      容量  已用  可用 已用% 掛載點
devtmpfs                devtmpfs  894M     0  894M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M   19M  892M    3% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G   13G  4.2G   76% /
/dev/sda1               xfs      1014M  184M  831M   19% /boot
tmpfs                   tmpfs     182M   12K  182M    1% /run/user/42
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0

【df --exclude-type=xfs -hT】
檔案系統       型別      容量  已用  可用 已用% 掛載點
devtmpfs       devtmpfs  894M     0  894M    0% /dev
tmpfs          tmpfs     910M     0  910M    0% /dev/shm
tmpfs          tmpfs     910M   19M  892M    3% /run
tmpfs          tmpfs     910M     0  910M    0% /sys/fs/cgroup
tmpfs          tmpfs     182M   12K  182M    1% /run/user/42
tmpfs          tmpfs     182M     0  182M    0% /run/user/0

 

3、du(顯示檔案占用磁盤空間)

(1)基本概念
  顯示指定的目錄或檔案所占用的磁盤空間,
  默認為當前目錄,

 

(2)語法規則

【語法:】
    du [options] [file]
    
【options:】
    -a, --all               顯示對所有檔案的統計,而不只是包含子目錄,
    -b, --bytes             輸出以位元組為單位的大小,替代預設時1024位元組的計數單位,
    -c, --total             在處理完所有引數后給出所有這些引數的總計,即用于統計指定的一組檔案或目錄使用的空間的總和,  
    -h, --human-readable    以易讀的方式輸出,帶單位
    -s或--summarize         只顯示指定目錄占用磁盤空間的總和(不與 a 連用),

 

(3)舉例

【ls -lh】
總用量 11M
drwxr-xr-x. 9 root root 220 3月  19 2021 apache-tomcat-9.0.44
-rw-r--r--. 1 root root 11M 3月  19 2021 apache-tomcat-9.0.44.tar.gz

【du -shc *】
17M     apache-tomcat-9.0.44
11M     apache-tomcat-9.0.44.tar.gz
28M     總用量

 

4、mount(掛載檔案系統)

(1)基本概念
  用于掛載檔案系統,

 

(2)語法規則

【語法:】
    mount [-lhV]
    mount -a [-frvw] [-t vfstype] [-O optlist]
    mount [-frvw] [-o option[,option]...]  device|dir
    mount [-frvw] [-t vfstype] [-o options] device dir

【options:】
    -a, --all               掛載 /etc/fstab 中的定義的所有檔案系統
    -t, --types <串列>      限制檔案系統型別集合
    -T, --fstab <路徑>      /etc/fstab 的替代檔案
    -v, --verbose           列印當前進行的操作
    -o, --options <串列>    掛載選項串列,以英文逗號分隔
    -f, --fake              模擬 mount 動作,并未真正執行,通常與 -v 連用
    -r, --read-only         以只讀方式掛載檔案系統(同 -o ro)
    -w, --rw, --read-write  以讀寫方式掛載檔案系統(默認)

 

(3)舉例

【掛載型別為 cifs 的目錄】
    mount -t cifs --verbose -o vers=3.0,sec=ntlmsspi,cred=/home/ec2-user/creds.txt,rsize=130048,wsize=130048,cache=none //172.24.14.0/share /mnt/fsx 
    
【掛載 /etc/fstab 定義的檔案系統】
    mount -a
    
【cat /etc/fstab】
/dev/mapper/centos-root                      /                     xfs     defaults        0 0
UUID=2a32db5c-0484-4f80-b574-74fd01ff36e0    /boot                 xfs     defaults        0 0
/dev/mapper/centos-swap                      swap                  swap    defaults        0 0

 

四、其他命令

1、nohup(后臺運行程式)

(1)基本概念
  nohup 即 no hang up(不掛起),即使關閉連接終端也不會終止程式的運行,
  默認情況下,會在當前目錄下生成一個名為 nohup.out 的檔案,

 

(2)語法規則

【語法規則:】
    nohup Command [ & ]
注:
    Command   為要執行的命令
    &         表示命令在后臺執行,終端退出后命令仍舊執行,
    nohup 與 & 連用,可以讓程式在后臺執行,且退出用戶終端也不會停止,

 

(3)舉例

【后臺啟動 helloworld.jar 】
    nohup java -jar helloworld.jar &

【要殺死行程:】
    ps -aux | grep "helloworld"   # 先找到后臺行程
    kill -9 PID                   # 再根據行程號殺死行程

 

2、wget(網路檔案下載工具)

(1)基本概念
  wget 是一款非互動式的網路檔案下載工具,

 

(2)安裝

【centos7:】
    yum install -y wget

 

(3)語法規則

【語法:】
    wget [options] [url]

【options:】
    -r,  --recursive    遞回下載
    -q,  --quiet        安靜下載,無資訊輸出
    -v,  --verbose      輸出詳細資訊(默認)
注:
    通過 wget --help 可以查看詳細描述,此處省略

 

(4)舉例

【獲取 git 資料】
    wget https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip

 

3、curl(發送請求、下載檔案)

(1)基本概念
  curl 一般用于向服務器發送請求,默認發送 Get 請求,
  當與 -o 或 -O 引數連用時,可以用于下載檔案,

 

(2)安裝

【centos7:】
    yum install -y curl

 

(3)語法規則

【語法:】
    curl [options] [url]

【options:】
    -b xxx       向服務器發送 cookie 資料   
    -c xxx       將服務器回傳的 cookie 資料寫入本地檔案
    -d xxx       發送 POST 的資料體,可以省略 -X POST
    -o xxx       將服務器回應保存為檔案,功能等同于 wget
    -O           無需指定檔案名,默認使用 URL 最后部分作為檔案名
注:
    通過 man curl 或者 curl --help 可以查看詳細描述,此處省略

 

(4)舉例

【向服務器發送 cookie 資料】
    curl -b 'foo1=bar;foo2=bar2' https://www.baidu.com/
    curl -b cookies.txt https://www.baidu.com/
    
【將服務器回傳的 cookie 資料寫入檔案】
    curl -c cookies.txt https://www.baidu.com/
    
【向服務器發送 POST 資料體】
    curl -d'login=emma&password=123'-X POST https://baidu.com

【將回應資料保存在 test 中】
    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    
【默認檔案名為 blog.git】
    curl -O "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip"

 

五、設定開機自動啟動腳本(CentOS7)

1、方式一:crontab 定時任務

  crontab 開機自啟動,通過 crontab 執行命令,可以間接的實作 開機自啟動腳本,
  crontab 用法見 https://www.cnblogs.com/l-y-h/p/15379861.html#_label0_0

 

2、方式二:修改腳本 (/etc/rc.local、/etc/rc.d/rc.local)

(1)基本認識
  /etc/rc.local 是 /etc/rc.d/rc.local 的軟連接,linux 機器重啟的時候會去加載 這個檔案,
  將待執行的命令 寫入 /etc/rc.d/rc.local 檔案中,并給其可執行權限(默認沒有執行權限),
  chomd +x /etc/rc.d/rc.local
  重啟機器后會加載 /etc/rc.d/rc.local 中的命令,

(2)cat /etc/rc.d/rc.local

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

 

3、方式三:注冊系統服務(chkconfig)

(1)基本認識

【linux 系統啟動級別:】
    級別有0-6共7個級別,
  運行級別0:系統關機狀態,默認級別不能設為 0,否則不能正常啟動(一啟動就關機),
  運行級別1:單用戶作業狀態,用于系統維護、找回 root 密碼等,禁止遠程登錄,只能在當前計算機上操作,
  運行級別2:多用戶狀態(無網路服務),
  運行級別3:多用戶狀態(有網路服務),
  運行級別4:作為保留級別,未使用,
  運行級別5:圖形界面狀態,
  運行級別6:系統重啟狀態,默認級別不能設為 6,否則不能正常啟動(一啟動就重啟),

【chkconfig:】
    chkconfig 用于更新和查詢系統服務的運行級別資訊,
    chkconfig 提供了一個簡單的命令列工具,用于維護 /etc/rc[0-6].d 目錄層次結構,免除了系統管理員直接操作這些系統中大量符號鏈接的任務目錄,
    chkconfig 不是立即自動禁止或激活一個服務,它只是簡單的改變了符號連接,

 

(2)語法規則

【語法:】
    chkconfig [--list] [--type <type>] [name]
    chkconfig --add <name>
    chkconfig --del <name>
    chkconfig --override <name>
    chkconfig [--level <levels>] [--type <type>] <name> <on|off|reset|resetpriorities>

【引數說明:】
    -–add  增加所指定的系統服務,讓 chkconfig 指令得以管理它,并同時在系統啟動的敘述檔案內增加相關資料,
    -–del  洗掉所指定的系統服務,不再由 chkconfig 指令管理,并同時在系統啟動的敘述檔案內洗掉相關資料,
    -–level 指定系統級別(0-6),表示服務在哪個級別啟動、關閉,
    --list 列出服務資訊,
          
【on、off、reset 說明:】
    如果在服務名后面指定了 on,off 或者 reset,那么 chkconfig 會改變指定服務的啟動資訊,
    on 和 off 分別指服務被啟動和停止,reset 指重置服務的啟動資訊,
    對于 on 和 off,系統默認只對運行級 2,3,4,5 有效,reset 對所有級別均有效,

 

(3)如何新增一個服務

【步驟:】
    Step1:服務腳本必須存放在/etc/init.d/目錄下,編輯腳本,
    Step2:使用 chkconfig --add 添加服務,

注:
    假設服務名為myservice,
    當我們運行添加服務的命令時候,會出現 "service myservice does not support chkconfig",
    一般在腳本開頭加入 "#chkconfig: 2345 10 90" 即可:
其中:
    2345 是系統啟動級別,10是啟動優先級,90是停止優先級,優先級范圍是0-100,數字越大,優先級越低,
    執行 --add 后,會在 /etc/rc[0-6].d 中創建軟鏈接,

 

(4)舉例:

【chkconfig --list】
netconsole      0:關    1:關    2:關    3:關    4:關    5:關    6:關
network         0:關    1:關    2:開    3:開    4:開    5:開    6:關

【vi /etc/init.d/autoStartUp.sh】
#!/bin/bash
# chkconfig: 2345 20 90
# description: autoStartUp

【chkconfig --add /etc/init.d/autoStartUp.sh】

【ls -lh /etc/rc0.d/ /etc/rc2.d/】
/etc/rc0.d/:
總用量 0
lrwxrwxrwx. 1 root root 20 10月  8 21:42 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx. 1 root root 24 10月 11 22:11 K90autoStartUp.sh -> ../init.d/autoStartUp.sh
lrwxrwxrwx. 1 root root 17 10月  8 21:42 K90network -> ../init.d/network

/etc/rc2.d/:
總用量 0
lrwxrwxrwx. 1 root root 20 10月  8 21:42 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx. 1 root root 17 10月  8 21:42 S10network -> ../init.d/network
lrwxrwxrwx. 1 root root 24 10月 11 22:11 S20autoStartUp.sh -> ../init.d/autoStartUp.sh

【chkconfig --list】
autoStartUp.sh  0:關    1:關    2:開    3:開    4:開    5:開    6:關
netconsole      0:關    1:關    2:關    3:關    4:關    5:關    6:關
network         0:關    1:關    2:開    3:開    4:開    5:開    6:關

【chkconfig --del /etc/init.d/autoStartUp.sh】
netconsole      0:關    1:關    2:關    3:關    4:關    5:關    6:關
network         0:關    1:關    2:開    3:開    4:開    5:開    6:關

 

4、方式四:注冊系統服務(systemctl )

(1)基本認識

【systemd 與 systemctl】
    systemctl 是 CentOS7 采用的 用于 Linux 啟動處理和系統管理的機制,可以理解為 systemd 的管理工具,
    systemd 是 CentOS7 完成引導程式進入作業系統后啟動的第一個行程,可用于管理 服務 的啟動順序,
    chkconfig 是 CentOS6 使用的,

【linux 啟動流程】
    在電源打開時啟動 BIOS
    從 BIOS 呼叫引導加載程式
    引導加載程式引導 Linux 內核
    Linux 內核啟動 init 行程 (PID 1)
    Systemd 是 init 行程,

 

(2)語法規則

【語法:】
    systemctl [OPTIONS...] [COMMAND]
    
【options:】
    list-unit-files    列出所有可用單元
    list-units         列出所有運行中的單元
    list-unit-files --type=service    列出指定型別的單元
    enable、disable    開啟、禁用 服務
    status/start/restart/stop    查看、啟動、重啟、關閉 服務
    daemon-reload      重新加載 systemd 管理器配置
    
【常用命令:】
    systemctl list-unit-files
    systemctl list-units
    systemctl list-unit-files --type=mount
    systemctl enable/disable xxx
    systemctl status/start/restart/stop xxx
    systemctl daemon-reload

 

(3)如何新增一個服務

【步驟:】
    Step1:服務腳本必須存放在 /etc/systemd/system 目錄下,
    Step2:創建后綴名為[.service]的檔案,并進行編輯,
    Step3:使用 systemctl daemon-reload 重新加載 systemd 管理器配置,
注意:
    xx.service 有具體格式寫法,不能亂寫,

【xx.service 檔案格式說明:】
[Unit]
    Description: 描述Unit的說明和依賴關系等
    Before:此服務啟動于右側配置的組件之前
    After:此服務啟動于右側配置的組件之后    

[Service]
    Type: 服務程序啟動完成的判定方法(默認為simple)
    PIDFile: 主行程PID檔案
    KillSignal: Systemctl stop命令發送哪個信號
    TimeoutStopSec: 在停止結束前待機的時間
    
    ExecStart: 服務的啟動命令 
    ExexReload: 服務的多載命令
    ExecStop: 服務的停止命令
    ExecStartPre: 服務啟動前的附加命令
    ExecStartPost: 服務啟動后的附加命令
    ExecStopPost: 服務停止后執行的命令
    Restart: 服務行程停止時的重啟條件
    PrivateTmp: 是否準備 /tmp 和 /var/tmp 專用于這個服務
    KillMode: 如何使用未停止的行程

[Install]
    WantedBy: 啟用時在此單元的 .wants 目錄中創建鏈接
    Requiredby: 啟用時在此單元的 .required 目錄中創建鏈接
    
【注意:(獲取環境變數)】
    systemd 的執行時不會加載用戶 Shell 里的環境變數,如果需要從環境變數中取值,需要 service 中配置 Environment,
    Environment=
    EnvironmentFile=
    
【注意:(Type=forking)】
    Type 指定了在 ExecStart 中指定的命令啟動服務行程時如何判斷啟動完成,
例如: 
    對于在 foie gras 中繼續運行的命令,
    使用 Type = simple, 表示執行命令時,判斷啟動完成,

或者:
    fork子行程并把它放在后臺,如果第一個命令本身就是結束的型別,
    設定 Type = forking, 在這種情況下,當執行的命令完成時,判斷啟動完成,

 

(4)舉例

【vi /etc/systemd/system/test.service】
[Unit]
Description=Test Service Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
PIDFile=/run/nginx.pid
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
Restart=always
WorkingDirectory=/usr/local/test
ExecStart=/usr/local/test/test.sh
KillMode=process

[Install]
WantedBy=multi-user.target

【systemctl daemon-reload】

【systemctl list-unit-files | grep test】
test.service                                  disabled

 

別把自己太當回事,也別太把自己不當回事!Life is Fantastic!!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/309380.html

標籤:其他

上一篇:Qt usb通訊

下一篇:Qt usb通訊

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more