溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用Shell腳本自動化Linux系統(tǒng)維護(hù)任務(wù)

發(fā)布時間:2022-01-24 11:59:17 來源:億速云 閱讀:242 作者:柒染 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)如何使用Shell腳本自動化Linux系統(tǒng)維護(hù)任務(wù),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

系統(tǒng)管理員通常會使用sehll腳本解決工作中重復(fù)的工作,shell腳本使系統(tǒng)管理員花費少的時間去做重復(fù)的工作。

什么是 shell 腳本?

簡單的說,shell 腳本就是一個由 shell 一步一步執(zhí)行的程序,而 shell 是在 Linux 內(nèi)核和最終用戶之間提供接口的另一個程序。
默認(rèn)情況下,RHEL 7 中用戶使用的 shell 是 bash(/bin/bash)。

寫一個腳本顯示系統(tǒng)信息

首先讓我們新建一個目錄用于保存我們的 shell 腳本:

# mkdir scripts
# cd scripts

新建一個文本文件system_info.sh,在頭部插入一些注釋以及一些命令:

#!/bin/bash
# 該腳本會返回以下這些系統(tǒng)信息:
# -主機(jī)名稱:
echo -e "\e[31;43m***** HOSTNAME INFORMATION *****\e[0m"
hostnamectl
echo ""
# -文件系統(tǒng)磁盤空間使用:
echo -e "\e[31;43m***** FILE SYSTEM DISK SPACE USAGE *****\e[0m"
df -h
echo ""
# -系統(tǒng)空閑和使用中的內(nèi)存:
echo -e "\e[31;43m ***** FREE AND USED MEMORY *****\e[0m"
free
echo ""
# -系統(tǒng)啟動時間:
echo -e "\e[31;43m***** SYSTEM UPTIME AND LOAD *****\e[0m"
uptime
echo ""
# -登錄的用戶:
echo -e "\e[31;43m***** CURRENTLY LOGGED-IN USERS *****\e[0m"
who
echo ""
# -使用內(nèi)存最多的 5 個進(jìn)程
echo -e "\e[31;43m***** TOP 5 MEMORY-CONSUMING PROCESSES *****\e[0m"
ps -eo %mem,%cpu,comm --sort=-%mem | head -n 6
echo ""
echo -e "\e[1;32mDone.\e[0m"

然后,給腳本可執(zhí)行權(quán)限,并運行腳本:

# chmod +x system_info.sh
./system_info.sh

為了更好的可視化效果各部分標(biāo)題都用顏色顯示:
如何使用Shell腳本自動化Linux系統(tǒng)維護(hù)任務(wù)
顏色功能是由以下命令提供的:

echo -e "\e[COLOR1;COLOR2m\e[0m"

其中 COLOR1 和 COLOR2 是前景色和背景色,是你想用顏色顯示的字符串。

使任務(wù)自動化

你想使其自動化的任務(wù)可能因情況而不同。因此,我們不可能在一篇文章中覆蓋所有可能的場景,但是我們會介紹使用 shell 腳本可以使其自動化的三種典型任務(wù):
1) 更新本地文件數(shù)據(jù)庫
1) 查找(或者刪除)有 777 權(quán)限的文件
2) 文件系統(tǒng)使用超過定義的閥值時發(fā)出警告。
讓我們在腳本目錄中新建一個名為 auto_tasks.sh 的文件并添加以下內(nèi)容:

#!/bin/bash
# 自動化任務(wù)示例腳本:
# -更新本地文件數(shù)據(jù)庫:
echo -e "\e[4;32mUPDATING LOCAL FILE DATABASE\e[0m"
updatedb
if [ $? == 0 ]; then
        echo "The local file database was updated correctly."
else
        echo "The local file database was not updated correctly."
fi
echo ""
# -查找 和/或 刪除有 777 權(quán)限的文件。
echo -e "\e[4;32mLOOKING FOR FILES WITH 777 PERMISSIONS\e[0m"
# Enable either option (comment out the other line), but not both.
# Option 1: Delete files without prompting for confirmation. Assumes GNU version of find.
#find -type f -perm 0777 -delete
# Option 2: Ask for confirmation before deleting files. More portable across systems.
find -type f -perm 0777 -exec rm -i {} +;
echo ""
# -文件系統(tǒng)使用率超過定義的閥值時發(fā)出警告 
echo -e "\e[4;32mCHECKING FILE SYSTEM USAGE\e[0m"
THRESHOLD=30
while read line; do
        # This variable stores the file system path as a string
        FILESYSTEM=$(echo $line | awk '{print $1}')
        # This variable stores the use percentage (XX%)
        PERCENTAGE=$(echo $line | awk '{print $5}')
        # Use percentage without the % sign.
        USAGE=${PERCENTAGE%?}
        if [ $USAGE -gt $THRESHOLD ]; then
                echo "The remaining available space in $FILESYSTEM is critically low. Used: $PERCENTAGE"
        fi
done

" >> $WEB_DIR/report.html # Read the output of df -h line by line while read line; do echo "" >> $WEB_DIR/report.html done " >> $WEB_DIR/report.html

在我們的 RHEL 7 服務(wù)器(192.168.0.18)中,看起來像下面這樣:
如何使用Shell腳本自動化Linux系統(tǒng)維護(hù)任務(wù)
你可以添加任何你想要的信息到那個報告中。添加下面的 crontab 條目在每天下午的 1:30 運行該腳本:

30 13 * * * /root/scripts/filesystem_usage.sh

關(guān)于如何使用Shell腳本自動化Linux系統(tǒng)維護(hù)任務(wù)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI