亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

您現在的位置是:首頁 > 技術閱讀 >  52圖帶你梳理Linux通用知識

52圖帶你梳理Linux通用知識

時間:2024-02-13

噗。。為啥不是面試題了,封面船去哪里了?要開好船,先回到我們的初心---Linux,這篇文章是Linux的超級基礎且經常用到的內容,不多說,直接肝!可以直接拉到文末點個贊!當然,如果需要思維導圖可編輯版,私信我就好了。

Linux軟件安裝

Linux排查問題套路

Linux命令詳解

一 Linux通用知識

說到操作系統,如果讀大學的時候是計算機專業,那肯定就會上這門課,我猜測當時的你們想法是這樣的

  • 上大學使用的都是Windows系統,界面友好,上手快,習慣性的點點點操作

  • 大部分的課程在windows中操作,比如C++用的Vistual Studio,學數據庫的SQL Server

  • 大學中的操作系統更加偏向理論研究,至于到底是怎么運作的可能懵懵懂懂

知道上了研究生到了實驗室,我發現實驗室的怎么都是對著一個窗口操作,瞬間覺得以前的計算機知識白學了,于是開啟了Linux之路。

其實大部分的系統,團購,打車,快遞都部署在服務端,其中都包含Linux,什么云計算,虛擬化,大數據等也是基于Linux,那為啥在大學里都是windows?


為什么說了解Linux的生態,會讓你學到更多的新技術?

我們要知道很多的大牛通過Linux來開發各種如那件,數據庫Mysql,kafka,Spark等技術都會默認提供Linux的安裝運維手冊,所以盡快的進入Linux的世界對于個人的進步和職業發展都是非常有好處的

每當我們買了手機,買了電腦,上手就可以用,這是因為預裝了操作系統。所以呀,那有什么歲月靜好,知識有人幫我們負重前行了,操作系統就是這樣一個角色。

那么操作系統幫助我們做了哪些事兒呢?

  • 跑幾個問題,桌面上的圖標是什么,為啥子敲一下鍵盤就出來了畫面

  • 電腦咋個知道我們鼠標點擊的那個位置

  • 為什么我一回車,這些字符就飛出去了

這幾個任何一個操作,基本上都覆蓋了操作系統的所有功能,那我來認識熟悉而默認的操作系統

1 vmvare

虛擬機是什么?

虛擬機通過軟件來模擬具有完整硬件系統功能的,運行在完全隔離的完整計算機系統。每個虛擬計算機可以獨立運行并安裝各種軟件和應用

  • 首先從官方下載并解壓虛擬機安裝包,然后雙擊運行

雙擊VMVARE
  • 下一步

接受許可進行下一步
  • 選擇安裝位置,最好不要出現中文

自定義路徑
  • 設置用戶體驗選項,都可以選擇

設置用戶體驗
  • 在桌面和開始菜單程序文件夾創建快捷方式。

創建快捷方式
  • 百度一個許可證ZG1WH-ATY96-H80QP-X7PEX-Y30V4

輸入許可證密鑰
  • 打開vmvare

打開vmvare
  • 點擊新建虛擬機向導 選擇文件-新建虛擬機打開

新建虛擬機
  • 選擇自定義 下一步

選擇自定義
  • 下一步

選擇下一步
  • 安裝客戶機操作系統,選擇稍后安裝操作系統

選擇稍后安裝操作系統
  • 命名虛擬機 更改虛擬機名稱并選擇安裝得位置

命名虛擬機
  • 更改主機配置進行處理的分配

處理器核心數分配
  • 虛擬內存分配:注意內存分配不能大于主機內存

    虛擬內存分配
  • 設置虛擬機網絡得類型,這里選擇NAT

網絡類型暫設為NAT
  • IO控制器選擇,選擇LSILogic

  • 磁盤類型選擇SCSI即可

  • 創建磁盤選擇創建新虛擬磁盤

創建新虛擬磁盤
  • 指定磁盤文件

指定磁盤文件
  • 修改路徑

  • 選擇自定義硬件

選擇自定義硬件
  • 選擇centos得ISO鏡像文件,先選擇CDDVN---ISO鏡像文件---瀏覽找到鏡像、

導入鏡像
  • 點擊完成

完成
  • 開啟虛擬機 選擇配置好的虛擬機

開啟虛擬機
  • 鼠標移動到虛擬機內部,上下鍵選擇install centos7然后回車

install centos7
  • 選擇軟件選擇最小安裝,選擇語言

    選擇最小化安裝
  • 軟件安裝

軟件安裝
  • 選擇計算節點

選擇計算節點
  • 開始安裝

開始安裝
  • 設置root密碼,點擊完成配置

  • 設置root密碼

2 進行網絡配置

現在我們的centos還是個空殼子,如果我們需要訪問外網,則需要進一步配置一波

  • 打開配置文件

#vi /etc/sysconfig/network-scripts/ifcfg-eth0
  • 更改相應的配置

DEVICE=eth0 #設備名稱,可根據ifcofnig命令查看到。
BOOTPROTO=dhcp #連接方式,dhcp會自動分配地址,此時不需要在下面設置ip和網關
HWADDR=00:0C:29:AD:66:9F #硬件地址,可根據ifcofnig命令查看到。
ONBOOT=yes #yes表示啟動就執行該配置,需要改為yes
  • service restart network完事 ping www.baidu.com

網絡檢測

3 安裝xshell

我們已經完成了安裝vmvare并導入了centos,那么我們如何去玩兒這個看似很牛皮的玩意?直接上手?不習慣吧,那我們用個遠程工具連連

Xshell 是一個強大的安全終端模擬軟件,Xshell 可以在 Windows 界面下用來訪問遠端不同系統下的服務器,從而比較好的達到遠程控制終端的目的。除此之外,其還有豐富的外觀配色方案以及樣式選擇。

  • 下載xshell(別去下了,賊慢麻煩)

  • 鏈接測試(因為使用的ssh,那么確保centos中22端口已經打開了)

  • 文件-----屬性進行XHSELL相關的配置,比如配色,字體大小等

4 基本命令的使用

命令太多,必須要全部記憶,但是要學會如何查每個命令的參數。我畫了個思維導圖可以當作小字典查看,下面列出可能我們使用頻率會更高的命令

執行命令含義
cd ~切換到登錄用戶的主目錄即/home/用戶名
cd /進入根目錄
cd /home/lj將/home/LJ作為當前的目錄
cd ..返回到上一層目錄
cd -回到上次所在的目錄
cd ../../去上上層目錄
ls查看當前目錄
ls -la查看當前目錄的文件信息 包含了隱藏文件
pwd查看當前目錄的絕對路徑
cp /目錄/1.txt /目錄/復制
rm刪除
q!不保存文件退出
wq!保存退出
hostname查看當前主機名
ifconfig查看網卡相關信息
firewall-cmd --statecentos7查看卡其關閉防火墻狀態

5 用戶管理

剛才說了可以創建自己的用戶,那么怎么創建自己的用戶呢?

添加用戶

useradd -d /home/lanj -m lanj

更改密碼

passwd lanj

系統有很多的用戶,怎么進行用戶的切換?

su -lanj
su -root

如果需要

用戶之間的切換使用su命令實現。root用戶可以無需輸入密碼切換到lj用戶,如果普通用戶lj切換到root用戶則需要輸入密碼,我們看看

su -lj

su -root

如何切換路徑,絕對路徑和相對路徑

6 軟件的安裝方法

在Linux安裝相關的工具分為三種方式,分別為源碼安裝,RPM包安裝以及YUM安裝方式

源碼安裝方式

開源軟件都會提供源碼下載的方式,對于源代碼安裝方式的好處即可以定制軟件功能,安裝需要的模塊,不需要的模塊可以屏蔽,方便管理,卸載等。

對于源碼安裝的步驟如下

  • 下載解壓源碼

一般下載下來源碼以后都會存在一個Readme文件,首先應該仔細閱讀這個文件,可能有很多需要修復的以前人家遇見的問題都會在上面做記錄,以免入坑不回頭

  • 分析平臺環境

  • 編譯安裝軟件

這里會使用make工具,make工具就會通過makefile文件來實現。makefile文件是一種按照某種語法來編寫且定義了各個文件的依賴關系。

在Linux中,習慣使用Makefile替代makefile,當用戶執行configure后,就會在當前目錄生成這個makefile文件,然后用戶輸入make就開始運行。我們看看Makefile是怎么個有樣子

edit : main.o kbd.o command.o display.o \
        insert.o search.o files.o utils.o       /*注釋:如果后面這些.o文件比edit可執行文件新,那么才會去執行下面這句命令*/
    cc -o edit main.o kbd.o command.o display.o \
        insert.o search.o files.o utils.o

main.o : main.c defs.h
    cc -c main.c
kbd.o : kbd.c defs.h command.h
    cc -c kbd.c
command.o : command.c defs.h command.h
    cc -c command.c
display.o : display.c defs.h buffer.h
    cc -c display.c
insert.o : insert.c defs.h buffer.h
    cc -c insert.c
search.o : search.c defs.h buffer.h
    cc -c search.c
files.o : files.c defs.h buffer.h command.h
    cc -c files.c
utils.o : utils.c defs.h
    cc -c utils.c
clean :
    rm edit main.o kbd.o command.o display.o \
        insert.o search.o files.o utils.o

make和make install的關系

當我們輸入make命令過后即進入了編譯階段,編譯時間根據軟件的程序規模大小以及硬件配置有關,當輸入make install就會開始安裝軟件,我們可以指定安裝目錄也可以不指定,系統將給你默認指定目錄為/user/local,這樣安裝完畢。

RPM安裝方式

RPM是Red Hat公司開發出來的Linux下的軟件包管理工具。這些以.rpm結尾的包包含了已經編譯好的二進制可執行文件,一句話即將源代碼進行編譯,安裝,然后封裝為RPM包

優點即安裝簡單,方便,因為已經編譯完成,安裝只是用來驗證和解壓過程,缺點也比較明顯,過于依賴于操作系統,要求RPM包的安裝環境必須和RPM封裝時的環境保持一致,

RPM包是怎么個樣子?

server-2.1.0-22.I386.rpm

其中:server為如那件的名稱

2.1.0:軟件的版本號

22:軟件更新發行的次數

i386:適合硬件發行的次數

.rpm:rpm軟件包的標識

YUM安裝方式

  • 查看是否存在yum

rpm -qa | grep yum
  • 沒有則安裝

rpm -ivh yum-*.noarch.rpm
  • 自定義yum的配置。我們可以通過打開/etc/yum.repos.d/Centos-Base.repo進行源的配置

YUM有哪些特點呢

  • 安裝方便

  • 可以同時配置多個源

  • 配置文件簡單明了

推薦個不錯的yum源

  • EPEL

是一個針對紅帽企業版Linux及衍生發行版的一個高質量附加軟件包項目。網址:http://fedoraproject.org/wiki/EPEL/zh-cn

  • RPMForge

這是一個第三方軟件倉庫,被centos社區認為是一個最安全最穩定的一個軟件倉庫

6 shell

大部分情況都是Linux操作系統,那么熟悉命令的用法以外,熟悉使用shell腳本能介紹不少時間

shell是什么

“ 平時經常在Linux操作系統中使用各種命令,比如查看當前的目錄文件,我們會使用"ls"或者"ls -l",這些字符串參數實際上會被"某段程序"執行并啟動它。這個負責將用戶輸入的字符串轉換為需要執行程序的東西叫做"shell"。即幫用戶更方便使用操作系統接口的“殼”。同樣的殼還有當我輸入Maven+相關參數的時候是不是就會去執行相應的功能,我們駛入sql語句的時候,數據庫引擎是不是也會各種調用,一樣的道理

嘗試編寫第一個shell

vim創建打開一個文件,擴展名為.sh。如下所示

#!/bin/bash #告訴系統使用什么解析器
echo "Hello xiaolan !" # echo進行輸出
  • 執行方法1

 chmod +x ./hello.sh ./hello.sh
  • 執行方法2

 /bin/sh hello.sh

變量

變量名和等號之間不能有空格

定義變量注意事項

  • 命名首個字符不能是數字,只能使用英文字母、數字和下劃線

  • 不能使用標點符號

  • 不能使用bash中關鍵字

變量使用

使用變量(使用變量的過程中,最好加上花括號),只需要在變量前面加上美元符號即可

#!/bin/bash
James="小皇帝"
echo $James

只讀變量

使用readonly將變量定義為只讀,只讀意味著不能改變

#!/bin/bash
James="小皇帝"
readonly James
James="登哥"

刪除變量

使用unset刪除變量 變量刪除以后不能再次使用,且不能刪除只讀變量

#!/bin/bash
James="小皇帝"
unset James
echo $James #不會有任何輸出

變量類型

  • 局部變量

僅當前shell可用

  • 環境變量

所有程序都能訪問環境變量

  • shell變量

通過一部分環境變量和shell變量保證shell的正常運行

字符串

使用字符串的過程中,既可以用雙引號也可以用單引號,也可以不用

  • 單引號

單引號內容原樣輸出,不能包含變量,且不能出現單獨單引號

  • 雙引號

可以出現轉義字符

#!/bin/bash
James="小皇帝"
str="\"$ James\"! oh my gad \n "
echo -e $str 

獲取字符串長度

使用#

string="qwert"
echo $(#string)

# 提取子字符串
echo $(string:1:3)
#查找字符串
echo 

數組

支持以為數組

定義數組

數組元素使用“空格”隔開

array=(value1,value2,value3)

讀取數組

value1=${array[0]}

使用@輸出數組所有元素

echo ${array[@]}

獲取數組中所有元素以及數組長度

#! /bin/bash
# author:xiaolan
array[0]=a
array[1]=b
array[3]=c

echo “數組的元素為:${array[*]}”
echo “數組的元素為:${array[@]}”
echo “數組的個數為:${#array[*]}”
echo “數組的個數為:${#array[@]}”

執行

./array.sh

結果

result

注釋

單行注釋

使用#開頭的行為注釋,會被解釋器忽略

多行注釋

shell傳遞參數

在執行shell的時候,命令行指定參數,如下所示

#!/bin/bash
James="小皇帝"
echo "執行的文件名為:$0"
echo "第一個參數為:$1"
echo "第二個參數為:$2"

執行

./param.sh 1 2

結果

result

幾個特殊字符

result

案例(partionnal.sh)

#!/bin/bash
# author:xiaolan

echo "-- \$* 演示 ---"
for i in "$*"; do
    echo $i
done

echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done

執行

./demo2.sh 1 2 3

結果

img

相同點:都是會引用所有參數

不同點:在使用雙引號的時候。如果腳本運行時兩個參數為a,b,則"*"等價于"ab",而"@"等價于"a","b"

#!/bin/bash
# author:xiaolan

echo "-- \$* 演示 ---"
for i in "$*"; do
    echo $i
done

echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done

8 printf

使用printf格式化字符串,同時可以指定字符串寬度和對齊方式,格式如下

printf format-string [arguments...]

#!/bin/bash
# author:xiaolan

printf "%-8s %-8s %-4s\n" 姓名 科目 分數  
printf "%-8s %-8s %-4f\n" 小明 數學 97
printf "%-8s %-8s %-4f\n" 小話 語文 89
printf "%-8s %-8s %-4f\n" 王三 英語 93

結果

img

9 test

shell中的test用于檢查某個條件是否成立

result

案例

#!/bin/bash
# author:xiaolan
num1=55
num2=55
if test $[num1] -eq $[num2]
then
    echo '兩個數相等!'
else
    echo '兩個數不相等!'
fi

結果

result

字符串比較

字符串比較
#!/bin/bash
# author:xiaolan
num1="xiaolan"
num2="xiaolna"
if test $num1 = $num2
then
    echo '兩個字符串相等!'
else
    echo '兩個字符串不相等!'
fi

結果

result

流程

if語句語法格式

if condition
then
    exec1 
    exec2
    ...
    execN 
fi

如果簡化為一行

if [$(ps -ef | grep -c "httpd") -gt 1];then echo "true";fi

if else-if else

if condition1
then
    exec1
elif condition2 
then 
    exec2
else
    execn
fi

案例 判斷兩數值是否相等

#!/bin/bash
# author:xiaolan
a=2
b=3
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "沒有符合的條件"
fi

for循環

for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

while語句

“ 通常用于從輸入文件不斷讀取數據

while condition
do
    exec
done

#!/bin/bash
# author:xiaolan
int=1
while(( $int<=6 ))
do
    echo $int
    let "int++"# 用于執行一個或者多個
done

無限循環

while true
do
    exec
done

case語句

多選擇語句。取值后面為單詞in,每一個模式以")"結束。匹配發現取值符合某一模式后,其間所有命令開始執行直至 ";;"。

#!/bin/bash
# author:xiaolan
echo '輸入 1 到 3 之間的數字:'
echo '你輸入的數字為:'
read aNum
case $aNum in
    1)  echo '你選擇了 1'
    ;;
    2)  echo '你選擇了 2'
    ;;
    3)  echo '你選擇了 3'
    ;;
    *)  echo '你沒有輸入 1 到 3 之間的數字'
    ;;
esac

輸入不同的內容,會有不同的結果,例如:

輸入 1 到 4 之間的數字:
你輸入的數字為:
3
你選擇了 3

跳出循環

break

break命令允許跳出所有循環

#!/bin/bash
# author:xiaolan
while :
do
    echo -n "輸入 1 到 3 之間的數字:"
    read aNum
    case $aNum in
        1|2|3) echo "你輸入的數字為 $aNum!"
        ;;
        *) echo "你輸入的數字不是 1 到 3 之間的! 游戲結束"
            break
        ;;
    esac
done

continue

跳出當次循環

#!/bin/bash
while :
do
    echo -n "輸入 1 到 3 之間的數字: "
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你輸入的數字為 $aNum!"
        ;;
        *) echo "你輸入的數字不是 1 到 3 之間的!"
            continue
            echo "游戲結束"
        ;;
    esac
done

10 shell函數

用戶定義函數,然后在shell腳本中隨便調用,格式如下

[ function ] funname [()]

{

    action;

    [return int;]

}

例子

#!/bin/bash
# author:xiaolan

Fun1(){
    echo "這是我的第一個 shell 函數!"
}
echo "-----函數開始執行-----"
Fun1
echo "-----函數執行完畢-----"

帶return語句

#!/bin/bash
# author:xiaolan

FunReturn(){
    echo "這個函數會對輸入的兩個數字進行相加運算..."
    echo "輸入第一個數字: "
    read aNum
    echo "輸入第二個數字: "
    read anotherNum
    echo "兩個數字分別為 $aNum 和 $anotherNum !"
    return $(($aNum+$anotherNum))
}
FunReturn
echo "輸入的兩個數字之和為 $? !"

函數參數

#!/bin/bash
# author:xiaolan

funParam(){
    echo "第一個參數為 $1 !"
    echo "第二個參數為 $2 !"
    echo "參數總數有 $# 個!"
    echo "作為一個字符串輸出所有參數 $* !"
}
funParam 1 2 3 4

shell重定向

輸出重定向

command1 > file # 如果file中存在內容將被清空覆蓋。如果追加使用command1 >>file

ls -l > dir.txt

cat dir.txt

img

/dev/null文件

寫入到它的內容都會被丟棄,會起到"禁止輸出"的效果,如果希望屏蔽stdout和stderr  “ command > /dev/null 2>&1

注意:Linux命令行都會打開三個文件

  • 標準輸入文件:stdin文件描述符為0

  • 標準輸出文件:stdout文件描述符為1

  • 標準錯誤文件:stderr文件描述符2

12 運算符

下表列出了常用的算術運算符,假定變量 a 為 2,變量 b 為 3:

算術運算符

算術運算符

關系運算符

關系運算符

布爾運算符

布爾運算符

邏輯運算符

邏輯運算符

字符串運算符


12 shell實戰

  • 請將當前目錄中demo.txt第二行第三列數據輸出到demo2.txt中

 cat demo.txt|awk ’NR==2{print $3}’ >demo2.txt 
  • 日志如下統計訪問ip最多的前10個

awk ’{print $1}’ *.log | sort | uniq -c | sort -nr | head -n 

uniq - 刪除排序文件中的重復行 sort對于文本進行排序 -l 按照當前環境排序. -m 合并已經排序好的文件,不排序. -n 按照字符串的數值順序比較,暗含-b -r 顛倒比較的結果.

  • 查看占用內存最大的進程的PID和VSZ

ps -aux|sort -k5nr|awk ’BEGIN{print ”PID VSZ”}{print ![2,(https://www.zhihu.com/equation?tex=2%2C)2,5}’|awk ’NR<3′ 
  • 如何檢查文件系統中是否存在某個文件

if [-f /var/log/messages]
then
echo "File exts"
fi
  • 每個腳本開始的 #!/bin/sh 或 #!/bin/bash 表示什么意思 ?

#!/bin/bash 表示腳本使用 /bin/bash。對于 python 腳本,就是 #!/usr/bin/python

  • &和&&區別

“ “&” 腳本在后臺運行時使用它。“&&”當前一個腳本成功完成才執行后面的命令

  • 腳本文件中,如何將其重定向標準輸出和標準錯誤流到 log.txt 文件 ?

./a.sh >log.txt 2>&1
  • 如何計算本地用戶的數目

wc -l /etc/passwd | cut -d
  • shell中進行字符串比較和數字比較

$A == $B ] – 用于字符串比較
$A -eq $B ] – 用于數字比較
  • 去掉字符串空格

echo $string | tr -d " "

  • 統計內存使用

#! /bin/bash
# author:xiaolan
sum=0
for mem in `ps aux |awk '{print $6}' |grep -v 'RSS' `
do
    sum=$[$sum+$mem]
done
echo "The total memory is $sum""k"

結果

result
  • 批量更改文件名

批量修改123目錄下txt為txt.temp。將temp打包為test.tar.gz

#!/bin/bash
##查找txt文件
find /123 -type f -name "*.txt" > /tmp/txt.list
##批量修改文件名
for f in `cat /tmp/txt.list`
do
    mv $f $f.temp
done
##創建一個目錄,為了避免目錄已經存在,所以要加一個復雜的后綴名
d=`date +%y%m%d%H%M%S`
mkdir /tmp/123_$d
##把.temp文件拷貝到/tmp/123_$d
for f in `cat /tmp/txt.list`
do
    cp $f.temp /tmp/123_$d
done
##打包壓縮
cd /tmp/
tar czf 123.tar.gz 123_$d/

7 awk文本處理工具

awk是一個處理文本文件的應用程序,幾乎所有的Linux系統都自帶了這個程序

依次處理每一行,并讀取里面的每一個字段。對于處理生產環境的日志有著非常高校的作用

基本用法

# 格式
awk 做什么 文件嗎
awk 'print $0' lan.txt

上面lan.txt是awk需要處理的文本文件。前面單引號里面有一個大括號,單引號里面就是每一行的處理動作。其中print為打印命令,

上菜

echo 'my name is lanlan' | awk '{print $0}'

上面代碼中,print 0即將標準輸入my name is lanlan ,c重新打印一遍

awk根據空格和制表符,將每一行分成若干段,依次為2

echo 'my name is lanlan'| awk '{print $3}'

為了方便,我們直接使用/etc/passwd文件進行操作,

awk -F ':' '{ print $1 }' demo.txt

3 變量

上面我們說了,可以使用符號 “+” 數字的方式表示第幾個字段,其實還有一些變量可以直接表示相應的字段。比如 “$NFb” 表示最后一個字段

echo 'my name is lanlan'| awk '{print $NF}'
awk -F ':' '{print NR ") " $1}' demo.txtshe

這里出現了雙引號,表示原樣輸出

其他常用的內置變量

  • FILENAME:當前文件名

  • FS:字段分隔符,默認是空格和制表符。

  • RS:行分隔符,用于分割每一行,默認是換行符。

  • OFS:輸出字段的分隔符,用于打印時分隔字段,默認為空格。

  • ORS:輸出記錄的分隔符,用于打印時分隔記錄,默認為換行符。

  • OFMT:數字輸出的格式,默認為%.6g。

4 函數

既然算是一門語言,函數當然少不了,下面看一波常用的函數

函數toupper()用于將字符轉為大寫

awk -F ':' '{ print toupper($1) }' demo.txt

可以發現第一個字段輸出的時候變成了大寫

  • tolower():字符轉為小寫。

  • length():返回字符串長度。

  • substr():返回子字符串。

  • sin():正弦。

  • cos():余弦。

  • sqrt():平方根。

  • rand():隨機數。

5 條件**

通過使用相應的條件,過濾出自己想要的內容

awk '條件 動作' 文件名

上菜

$ awk -F ':' '/usr/ {print $1}' demo.txt
root
daemon
bin
sys

這里/usr/表示只輸出包含usr的行

這個例子輸出奇數行

# 輸出奇數行
$ awk -F ':' 'NR % 2 == 1 {print $1}' demo.txt
root
bin
sync

#
 輸出第三行以后的行
$ awk -F ':' 'NR >3 {print $1}' demo.txt
sys
sync

下面的例子輸出第一個字段等于指定值的行。

$ awk -F ':' '$1 == "root" {print $1}' demo.txt
root

$
 awk -F ':' '$1 == "root" || $1 == "bin" {print $1}' demo.txt
root
bin

5 if語句

通過if語句編寫比較復雜的內容

$ awk -F ':' '{if ($1 > "m") print $1}' demo.txt
root
sys
sync

上面代碼輸出第一個字段的第一個字符大于m的行。

if結構還可以指定else部分。

8 進程管理與定時任務和后臺執行

crond是什么?

crond是一個可以在指定時間執行一個shell腳本或者一系列的Linux命令。和Windows下的計劃任務類似。當安裝完操作系統后,默認會安裝這個服務工具,并且會自動啟動crond進程。

在Linux中任務的調度分為兩類

  • 系統任務的調度

系統會周期性的執行一些工作,比如說寫緩存的數據到硬盤,清理日志等

  • 用戶任務的調度

用戶定期也會執行一些任務,比如用戶數據的備份,定時的郵件提醒等,這些都是通過crondtab來設置

那么crontab到底怎么用么

首先看看crontab的使用格式:

crontab -u user file

常見的選項

  • -u user:很明顯是需要表明是那個用戶的crontab服務,別瞎搞

  • file:file是命名文件的名字,表示將file作為crontab的任務列表文件并載入到crontab中

  • -e:e為edit,表示標記某個用戶的crontab文件內容

  • -l:顯示用戶的crontab文件、

crontab的含義

創建的crontab文件,每一行代表一項任務,每個字段都有對應的設置規則,一共分為6個字段,分別為:

minute hour day month week command
  • minute:區間 0-59

  • hour:區間0-23

  • day:區間0-31

  • month:區間1-12

  • week:區間0-7 周日可以是0/7

  • command

這里的command代表的是需要執行的而命令,通常為腳本文件,

除了上面幾個字段,還需要注意幾個特殊字段

  • *:代表所欲嘔可能的值

  • ,:通過,來表示區間范圍的值

  • _:整數之間的中杠表示一個證書范圍

  • 正斜線:表示時間的間隔頻率,比如0-23/2表示每兩個小時執行一次
    開始放幾個例子**

crontab -e
0 5 * * * /root/bin/backup.sh

這代表的是每天早上5點運行backup.sh

每個工作日11:59pm進行備份作業

59 11 * * 1-5 /root/bin/backup.sh

每五分鐘運行一個命令

*/5 * * * * /root/bin/check-status.sh

crontab有哪些選項

crontab -e:修 改crontab文件,如果文件不存在會自動創建

crontab -l:顯示crontab文件

crontab -r:刪除crontab 文件

crontab -ir:刪除crontab文件前提醒用戶

9 后臺運行

用途:不掛斷的運行命令

語法:nohup Command [ Arg … ] [&]

  • 無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當前目錄的 nohup.out 文件中。

  • 如果當前目錄的 "nohup.out" 文件不可寫,輸出重定向到"home/nohup.out"

  • 如果沒有文件能創建或打開以用于追加,那么 Command 參數指定的命令不可調用。

退出狀態:該命令返回下列出口值: 

  • 126 可以查找但不能調用 Command 參數指定的命令。 

  • 127 nohup 命令發生錯誤或不能查找由 Command 參數指定的命令。 

  • 否則,nohup 命令的退出狀態是 Command 參數指定命令的退出狀態。

使用&
用途:在后臺運行,一般兩個一起用

nohup command &

往期推薦




主站蜘蛛池模板: 共和县| 庄浪县| 泗阳县| 临澧县| 肥城市| 桃园市| 天柱县| 孙吴县| 五台县| 开原市| 井研县| 克拉玛依市| 大邑县| 陈巴尔虎旗| 全州县| 西宁市| 板桥市| 安远县| 荣成市| 镇平县| 屯昌县| 三穗县| 屯昌县| 锦州市| 乌拉特后旗| SHOW| 竹北市| 梅河口市| 南汇区| 广东省| 鲁山县| 龙井市| 乐安县| 离岛区| 黎平县| 石城县| 宝山区| 贵港市| 娄烦县| 房产| 铜陵市|