科技知識動態:分享一些linux運維的基礎知識

導讀跟大家講解下有關分享一些linux運維的基礎知識,相信小伙伴們對這個話題應該也很關注吧,現在就為小伙伴們說說分享一些linux運維的基礎知識

跟大家講解下有關分享一些linux運維的基礎知識,相信小伙伴們對這個話題應該也很關注吧,現在就為小伙伴們說說分享一些linux運維的基礎知識,小編也收集到了有關分享一些linux運維的基礎知識的相關資料,希望大家看到了會喜歡。

1、回顧基礎命令2、腳本3、變量4、別名5、條件判斷6、test判斷 一、回顧基礎命令shutdown --關機/重啟exit --退出當前shellrmdir --刪除空目錄du --查看目錄占用的存儲空間df --查看已 經掛載的文件系統的空間使用情況ln --創建鏈接cat --顯示文件的所有內容head --顯示文件的頭部tail --顯示文件的尾部less --分屏/分頁 顯示文件內容dirname --取出目錄basename --取出文件名history --歷史命令1、ln# ln -s [目標] [源 -- 創建軟鏈接 (symbolic link)# ln [目標] [源] -- 創建硬鏈接2、catconcatinate,把文件的內容按順序連接起來,輸出到標準輸出。目前,只需要簡單理解成顯示文件的內容即可# cat f1 -- 顯示文件 f1 的內容到屏幕上# cat -n f1 -- 顯示文件的內容,并且加上行號# cat -A f1 -- 打印出一些不可見的字符和位置標記3、head讀取文件的頭部# head -n 3 /etc/passwd --讀取文件前面三行# head -n -3 /etc/passwd --讀取文件時,丟掉文件的后三行;# head -c 3 /etc/passwd --讀取文件的前面三個字節# head -c 10m /dev/zero > f1 --創建一個10M的文件4、tail讀取文件的尾部# tail -n 3 /etc/passwd -- 讀取文件的后面三行# tail -c 3 /etc/passwd -- 讀取文件的后面三個字節# tail -n +28 /etc/passwd -- 讀取文件中從第28行開始直到結尾的所有行# tail -f /etc/passwd -- 跟蹤文件尾部內容的變化,常用觀察日志文件的變化5、history# set -o history --啟用命令歷史功能 ,默認記錄在文件 ~/.bash_history 中# set +o history --關閉命令歷史功能# history --顯示最近n條歷史命令注:以下三個變量用于控制命令歷史的數量,以及是否記錄時間戳# vim /etc/bashrc --一般配置在該文件當中,用戶級可配置在 ~/.bashrcHISTSIZE=1000000 --最多存儲多少條記錄HISTFILESIZE=2000000 --命令歷史文件的最大尺寸HISTTIMEFORMAT='[%Y-%m-%d %H:%M:%S] ' --命令歷史的時間戳格式export HISTSIZE HISTFILESIZE HISTTIMEFORMAT --把他們定義成環境變量 二、腳本1、如何執行腳本   # vim test.sh    #!/bin/bash  echo 'hello world'# bash test.sh# bash -x test.sh --顯示腳本執行過程的信息# sh test.sh# source test.sh# . test.sh--上述兼為非標準執行腳本,腳本文件可以沒有可執行權限;下列為標準執行:# head -n 1 test.sh#!/bin/bash# chmod a+x test.sh# ./test.sh可直接將腳本放到 PATH 路徑下,直接當命令運行注意:shell 必須以 #! 開頭,讀作sha-bang,這兩個字符用來標識文件類型,#! 用來告訴系統,這個文件里的內容將要用指定的解釋器來解釋,#! 之后的字符串將會被解釋成一個程序,該程序用來解釋當前文件。如果沒有提供sha-bang這一行,當前 shell 將會自主猜測一個,但結果并不保證和預期一致;所以最好明確指定。./test.sh 的運行流程:1、內核讀取該腳本,檢查文件類型標記,獲取解釋氣得路徑;2、內核運行解釋器;3、解釋器運行起來后,就打開腳本文件,解釋其執行linux 自帶的諸多解釋器:#!/bin/bash;#!/bin/sh;#!/usr/bin/perl;#!/bin/sed;#!/bin/awk2、四則運算符+ - * /$(()) $[] expr let# echo $((38%5)) --取余# echo $[38/5] --求商# echo $((10**2)) --10的平方 2.1、expr# expr 14 % 9 --取余# expr 34 / 9 --求商# expr 30 \* 3 --使用乘號時,必須用反斜線屏蔽其特定含義# expr index "sarasara" a --抓取第一個字符數字串出現的位置# expr substr "this is a test" 3 5 --抓取字串# expr length "this is a test" --計算字串長度 2.2、letlet計算工具用于執行一個或多個表達式,變量計算中不需要加上 $ 來表示變量。如果表達式中包含了空格或其他特殊字符,則必須引起來# no=20# let no++ --自增# let no-- --自減# let no+=10 --自增10# let no=no+10 --同上# let no-=15 --自減15# let a=5+4 --變了a無須加 $ 符號# echo $a3、shell配置文件/etc/profile --全局配置文件,/etc/bashrc --全局配置文件,一般用來定義環境變了~/.bash_profile --用戶配置文件~/.bashrc --用戶配置文件~/.bash_logout --用戶配置文件,login shell 退出時會讀取該文件4、shell種類根據shell 的啟動方式不同,可以大致地把shell分為以下幾種:login shell --在文本界面登錄,如su -;讀取shell配置文件順序如下:/etc/profile——~/.bash_profile——~/.bashrc——/etc/bashrcinteractive shell --gnome-terminal 中默認的shell;讀取shell配置文件順序如下:~/.bashrc —— /etc/bashrcnon-interactive shell --用來運行腳本的shell 4.1、在~/.bashrc 中設置一個變量 v,要求該變量只出現在交互shell中# vim ~/.bash_profile --標識shell 是否登錄shellLOGINSHELL=1# vim ~/.bashrc --不是登錄shell 時,才設置變量if [ "$LOGINSHELL" != 1 ];thenv="interactive shell only"fi5、命令優先級別名 > 函數 > 內部命令 > 外部命令6、shell特殊字符對于shell來說,有些字符除了它本身的意義之外,還有特殊的意義,如果要在字符串中包含特殊字符,就必須通過引用(quoting)的方法來去除特殊字符的特殊意義。以下列出的是部分特殊字符:~ --不被引用的話將會被shell 替換成家目錄& --把程序放到后臺執行$ --dollar 符,可用于參數展開${} --變量處理,可對變量的內容做替換,刪除,抽取等操作* --星號,通配符,匹配所有字符? --問號,通配符,匹配任意一個字符() --命令組{} --命令組"" --雙引號,引用符號;可以去除大多數特殊字符的特殊意義,除 $;`;!;\ 外'' --單引號,引用符號;可以去除所有特殊字符的特殊意義,除自己本身. --相當于source命令;可用于設置隱藏文件;用于目錄名時,代表當前目錄/ --斜杠,路徑分隔符,根目錄\ --反斜杠,可用來去除單個字符的特殊意義,也就是所謂的“轉義“,也可用于表示特殊字符,如換行符 (\n) `` --反撇號,命令優先執行,和$()含義是一樣的;如果有嵌套那么不能用``號$(())和 $[] --運算符: --空命令; --命令分割;不去考慮上一條命令所執行的結果;; --case 選項的結束符# --注釋&& --邏輯與;可對命令進行分割;但是需要考慮上一條命令所執行的結果|| --邏輯或;可對命令進行分割;不需要考慮上一條命令執行結果----------------------------------------------------------------# echo 'hello world;' "hello world;" hello\ world; --用三種引用符合去除空格的特殊意義 三、變量1、本地變量當前用戶自定義的變量;當前進程有效,其他進程或者當前進程的子進程無效# a=123# echo $a# unset a --取消變了定義2、環境變量當前進程有效,并且能被子進程調用;# env --查看當前系統所有環境變量# set --查看當前系統所有環境變量和臨時變量# echo $PATH -- 顯示PATH變量的內容# export hi=hello --定義環境變量;工作當中一般喜歡把即用的環境變了寫在 ~/.bash_profile幾個常見環境變量:PATH --影響命令的搜索PS1 --命令提示符TMOUT --超時時間,單位為S,時間一到,自動退出 interactive shell ;所以最好將其設為只讀變量 # declare -r TMOUT=60HISTSIZE, HISTFILESIZE, HISTTIMEFORMAT --命令歷史 3、系統變量又叫bash中內置的變量;shell本身已經固定好的一些變量$# --腳本后面接參數個數$* --腳本后面所有的參數(被雙引號包含則被當成一個字符串輸出)$@ --腳本后面所有的參數(被雙引號包含還是保留各參數的邊界)$? --上一條命令執行后返回的狀態$$ --當前進程的進程號$! --后臺運行的最后一個進程號!$ --最后一條命令或參數!! --最后一條命令的歷史記錄$0 --當前程序的程序名或進程$1~$n --位置參數變量#!/bin/bashecho "\$0 = $0"echo "\$# = $#"echo "\$* = $*"echo "\$1 = $2"echo "\$7 = $7"echo "\$11 = ${11}"# chmod a+x test.sh# ./test.sh a b c4、變量定義a、默認下,變量類型沒啥要求。可以給變量賦任何值,但是等號兩邊不能有任何的空格b、變量名區分大小寫c、變量名不能以數字或者特殊符號開頭d、將命令所執行的結果保存到變量5、調用變量# a=$(hostname)# A=123456789# echo $A# echo ${A:2:3}6、數組數組的定義:用小括號擴起來定義數組,括號里的元素用空格隔開# array[0]=var1# array[1]=var2# array[2]=var3# array=(var1 var2 var3) --等同于上述三行,定義數組# echo ${array[0]} --取數組第一個值# echo ${array[*]} --取數組所有值# echo ${array[@]} --同上7、declare 定義有類型的變量-i --將變量看成整數-r --定義只讀變量-x --將變量導出到環境變量-a --將變量看成數組8、read 交互式定義變量-p --提示信息-n --字符數-t --超時-s --不顯示 四、別名命令的別名,顧名思義,就是可以通過別的名字來執行命令。通常用于簡化命令的輸入,或者為命令增加一些參數,或者是單純地為命令添加多個訪問名稱。# alias cp mv rm --查看cp, mv, rm這三個命令是不是別名# unalias rm -- 刪除別名 rm# alias cdyum='cd /data/yum' -- 簡化輸入# alias rm='rm -i' -- 為命令增加參數-- 通常別名是在配置文件~/.bashrc 中設置的1、驗證別名、函數、內部命令、外部命令的優先級別# alias pwd='echo it is an alias' --創建一個 pwd 別名# function pwd() { echo "this is a function"; } --創建一個 pwd 函數# pwd --運行pwd,發現輸出是別名# unalias pwd --刪除別名,再運行 pwd,發現輸出是函數內容# unset pwd --刪除函數,再運行 pwd,才是輸出當前所在路徑所以:別名 > 函數 > 內部命令 > 外部命令 五、條件判斷# vim test----------------------if [ 條件 ];thencommand...fi----------------------if [ 條件 ];thencommand...elsecommand...fi----------------------if [ 條件1 ];thencommand1...elif [ 條件2 ];thencommand2...elsecommand3...fi----------------------if [ 條件1 ];thencommand1...if [ 條件2 ];thencommand2...fielseif [ 條件3 ];thencommand3...elif [ 條件4 ];thencommand4...elsecommand5...fifi 六、test判斷test == [ judge ]1、文件存在與否的判斷# vim test.sh#!/bin/bashif test -e $1;then --是否存在;還有 -p;-c;-b;-Lif [ -f $1 ];then --使用 [ judge ] 替換if test -f $1;then --是否存在并且為普通文件if test -d $1;then --是否存在并且為目錄if test -S $1;then --是否存在并且套接字文件echo 'YES'fi# chmod a+x test.sh# ./test.sh [path]2、文件權限相關判斷-r;-w;-x --是否有讀,寫,執行權限-u --是否有suid-g --是否有sgid-k --是否有t位-s --是否為空白文件,-s表示非空;! -s 空文件3、字符串判斷= --等于則為真,等于號兩邊必須有空格;也可以是:==!= --不相等則為真-z 字符串 --字符串的長度為零則為真-n 字符串 --字符串的長度不為零則為真if test $num1 = $num2;thenif [ $num1 = $num2 ];thenif [ -n $num1 ];then4、數值判斷-eq --等于則為真-ne --不等于則為真-gt --大于則為真-ge --大于等于則為真-lt --小于則為真-le --小于等于則為真if test $[num1] -eq $[num2];thenif [ $[num1] -eq $[num2] ];then5、邏輯判斷-a 和 && --邏輯與-o 和 || --邏輯或! --非優先級:與>或>非if test -e $1 -o -e $2;then --判斷是否有一個文件存在if [ -e $1 -o -e $2 ];then --同上if test ! -e $1 -o ! -e $2;then --判斷兩個文件沒有同時存在if [ ! -e $1 -o ! -e $2 ];then --同上

以上就是分享一些linux運維的基礎知識的詳細內容,更多請關注php中文網其它相關文章!

來源:php中文網

免責聲明:本文由用戶上傳,如有侵權請聯系刪除!