shell學習:第一階段筆記彙總

目錄

第一部分:操作文件及目錄

第二部分:監控程序

監測程序

監測磁盤空間

第三部分:編輯器相關使用

vim 編輯器(vi improved,簡稱vim)

nano 編輯器


第一部分:操作文件及目錄

1. 文件屬性(查看文件屬性命令stat)

struct stat {
    dev_t st_dev; /* 設備   */
    ino_t st_ino; /* 節點   */
    mode_t st_mode; /* 模式   */
    nlink_t st_nlink; /* 硬連接 */
    uid_t st_uid; /* 用戶ID */
    gid_t st_gid; /* 組ID   */
    dev_t st_rdev; /* 設備類型 */
    off_t st_off; /* 文件字節數 */
    unsigned long  st_blksize; /* 塊大小 */
    unsigned long st_blocks; /* 塊數   */
    time_t st_atime; /* 最後一次訪問時間 */
    time_t st_mtime; /* 最後一次修改時間 */
    time_t st_ctime; /* 最後一次改變時間(指屬性) */
};

2. 文件類型

文件類型對應文件屬性中的st_mode,文件類型有很多種,常見的有常規文件、符號鏈接(硬鏈接、軟鏈接)、管道文件、設備文件(符號設備、塊設備)、socket文件等,不同的文件類型對應不同的功能和作用。

file,這個命令用來查看各類文件的屬性,和 stat 命令相比,它可以進一步識別普通文件。

3. 文件屬主

文件屬主包括該文件所屬用戶,以及該文件所屬的用戶組,用戶可以屬於多個組。

管理命令:

  • useradd , userdel 創建和刪除用戶
  • groupadd , groupdel 創建和刪除用戶組
  • passwd 修改用戶密碼

配置信息管理文件說明:

  • /etc/passwd 存放用戶信息
  • /etc/group 存放用戶組信息
  • /etc/shadow 存放密碼

常用命令:

  • chown [-R] 用戶名:組名 文件名 修改文件屬主,-R表示遞歸修改
  • chmod [+/- rwx]/[八進制數字] 文件名 修改文件權限

4. 高頻使用命令彙總

  • cd:切換目錄
  • mkdir:創建目錄
  • touch:創建文件
  • vim:編輯文件內容,或新建一個文件並進入編輯狀態
  • cat/less/more/head/tail... 查看文件內容
  • ls: 顯示當前目錄下的文件和目錄
  • cp:複製文件或目錄
  • ln:創建鏈接文件

硬鏈接,創建方式:ln + 源文件名 + 目標文件名

軟連接,即符號鏈接,創建方式:ln -s + 源文件名 + 目標文件名

  • mv:重命名或移動文件
  • rm:刪除文件,刪除目錄使用rm -r +目錄名稱

5. 應用示例

#!/bin/bash
#遍歷目錄下所有的文件是目錄還是文件
for file in /Users/*
do
    if test -d ${file}; then
        echo "${file}是目錄"
    else
        echo "${file}是文件"
    fi     
done  

#按行讀取文件內容
while read LINE; do echo $LINE; done < test.sh

第二部分:監控程序

監測程序

ps: 顯示運行在當前控制檯下的屬於當前用戶的進程;

top: 實時顯示進程信息;

kill PID: 終止進程,kill -s HUP 3904

監測磁盤空間

mount:輸出當前系統上掛載媒體的設備列表

mount -t type device directory 手動掛載媒體設備的命令,示例:mount -t vfat /dev/sdb1 /media/disk/

type參數指定了磁盤被格式化的文件系統類型

  • vfat:windows長文件系統;
  • ntfs: 。。。高級文件系統;
  • iso9660:標準CD-ROM文件系統;

umount:卸載掛載設備,從Linux系統上移除一個可移動設備時,不能從系統上直接刪除,而是要先卸載

umount [directory | device] 卸載移動設備的命令

df:查看所有易掛載設備的使用情況

du:顯示某個特定目錄磁盤使用情況 [-c -h -s]

sort [-n -M -r] 對文件內容排序 -n以數字排序,-M三字符月份名排序, 反序排序

tar -cvf test.tar test/ test2/ 歸檔文件 ----> tar -xvf test.jar 從已有歸檔文件中提取文件(.tgz結尾的文件使用-zxvf解壓)

應用示例: 監控系統服務,併發送異常報警郵件第三部分:編輯器相關使用

#!/bin/bash
#a mail alarm which could monitor a server batchly
#by author @GuoChunli 2019

cat << EOF
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++Welcome to use auto server monitor++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EOF

EMAIL=email.txt
DATE=`date`

#check it's a file ,then traverse all elements in the file
if [[ -z $1 ]];then
        echo -e "\033[31m {Usage: nginx | mysql | monitorServers.txt} \033[0m"
        exit
fi

if [ -f $1 -a "$1" == "monitorServers.txt" ];then

for i in `cat monitorServers.txt | grep -v "#"`
do
        count=` ps -ef | grep $i | grep -v email | grep -v grep | wc -l `
        M_IPADDR=`ipconfig getoption en0 router | grep "Bcast" | awk '{print $2}' | cut -d: -f 2`

        if [[ $count -eq 0 ]]; then

cat > $EMAIL  << EOF
********************server monitor*****************
通知類型: malfunction
服務:$i
主機:$M_IPADDR
狀態:Warning
日期/時間:$DATE
其他信息:
CRITICAL - $i Server connection is abnormal, please check!
***************************************************
EOF
                dos2unix $EMAIL
                echo -e "\033[31m The server $i is abnormal, please check! \033[0m"
                mail -s "$M_IPADDR $i is abnormal" [email protected] < $EMAIL >> /dev/null 2>&1

        else
                echo "The server $i is in service!"
        fi

done

else
        count=` ps -ef | grep $1 | grep -v email | grep -v "grep" | wc -l `
        M_IPADDR=`ipconfig getoption en0 router | grep "Bcast" | awk '{print $2}' | cut -d: -f 2`

        if [[ $count -eq 0 ]]; then

cat > $EMAIL  << EOF
********************server monitor*****************
通知類型: malfunction
服務:$1
主機:$M_IPADDR
狀態:Warning
日期/時間:$DATE
其他信息:
CRITICAL - $1 Server connection is abnormal, please check!
***************************************************
EOF
                dos2unix $EMAIL
                echo -e "\033[31m The server $1 is abnormal, please check! \033[0m"
                mail -s "$M_IPADDR $1 is abnormal" [email protected] < $EMAIL >> /dev/null 2>&1


        else
                echo "The server $1 is in service!"
        fi

fi

第三部分:編輯器相關使用

vim 編輯器(vi improved,簡稱vim)

vi編輯器是Unix系統最初的編輯器,它使用控制檯圖形模式來模擬文本編輯窗口,允許查看文件中的行、在文本中移動、插入、編輯和替換文本。

apt-get 用於自動從互聯網的軟件倉庫中搜索、安裝、升級、卸載軟件或操作系統。

vim編輯器在內存緩衝區域處理數據。

vim編輯器有兩種操作模式:

  • 普通模式,將按鍵解釋爲命:令h(左) j(下) k(上) l(右)
  • 插入模式

x 刪除當前光標所在位置的字符

dd 刪除光標所在行

dw 刪除光標所在位置的單詞

d$ 刪除光標所在位置至行尾的內容

J 刪除光標所在行的換行符

u 撤銷上一編輯命令

a 在當前光標位置後追加

A 在當前光標坐在行行尾追加

r [char] 用char替換光標所在位置的單個字符

R [text] 用text覆蓋光標所在位置的數據,知道按下esc

 

v 進入可視模式

y 複製(y$複製內容至當前行尾)

p 粘貼

 

:s/old/new/ 替換

:s/lod/new/g 替換所有old

:n, ms/old/new/g 替換行號n和m之間所有old

:%s/old/new/g 替換整個文件中的所有old

:%s/old/new/gc 替換整個文件中的所有old,但每次出現時提示

nano 編輯器

nano myprog.c 啓動編輯器,nano控制命令在使用時,不區分大小寫

附錄

1. Linux下掛載點說明

  • / : 虛擬目錄的根目錄,通常不會在這裏存儲文件
  • /usr :用戶安裝軟件的目錄
  • /var :可變目錄,用以存放經常變化的文件,比如日誌文件
  • /bin :二進制目錄,存放許多GNU用戶級的工具
  • /dev :設備目錄,Linux在這裏創建設備節點
  • /home :主目錄,Linux在這裏創建用戶目錄
  • /etc :系統配置文件目錄
  • /boot :啓動目錄,存放啓動文件
  • /opt :可選目錄,通常用於存放可選的軟件包
  • /lib :庫目錄,存放系統和應用程序的庫文件
  • /tmp :臨時目錄,可以在該目錄創建和刪除臨時工作文件

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章