假如一个系统打点员耗费大量的时间办理问题以及做反复的事情,你就应该猜疑他这么做是否正确。一个高效的系统打点员应该拟定一个打算使得其只管耗费少的时间去做反复的事情。因此尽量看起来他没有做许多的事情,但那是因为
shell 剧本辅佐他完成了大部门任务,这也就是我们将要探讨的对象。
什么是 shell 剧本?
简朴的说,shell 剧本就是一个由 shell 一步一步执行的措施,而 shell 是在 Linux
内核和最终用户之间提供接口的另一个措施。
默认环境下,RHEL 7 顶用户利用的 shell 是 bash(/bin/bash)。
写一个剧本显示系统信息
首先让我们新建一个目任命于生存我们的 shell 剧本:
# mkdir scripts
# cd scripts
新建一个文本文件system_info.sh,在头部插入一些注释以及一些呼吁:
#!/bin/bash
# 该剧本会返回以下这些系统信息:
# -主机名称:
echo -e "e[31;43m***** HOSTNAME INFORMATION *****e[0m"
hostnamectl
echo ""
# -文件系统磁盘空间利用:
echo -e "e[31;43m***** FILE SYSTEM DISK SPACE USAGE *****e[0m"
df -h
echo ""
# -系统空闲和利用中的内存:
echo -e "e[31;43m ***** FREE AND USED MEMORY *****e[0m"
free
echo ""
# -系统启动时间:
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 ""
# -利用内存最多的 5 个历程
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"
然后,给剧本可执行权限,并运行剧本:
# chmod +x system_info.sh
./system_info.sh
为了更好的可视化结果各部门标题都用颜色显示:
颜色成果是由以下呼吁提供的:
echo -e "e[COLOR1;COLOR2me[0m"
个中 COLOR1 和 COLOR2 是前景致和配景致,是你想用颜色显示的字符串。
使任务自动化
你想使其自动化的任务大概因环境而差异。因此,我们不行能在一篇文章中包围所有大概的场景,可是我们会先容利用 shell
剧本可以使其自动化的三种典范任务:
1) 更新当地文件数据库
1) 查找(可能删除)有 777 权限的文件
2) 文件系统利用高出界说的阀值时发出告诫。
让我们在剧本目次中新建一个名为 auto_tasks.sh 的文件并添加以下内容:
#!/bin/bash
# 自动化任务示例剧本:
# -更新当地文件数据库:
echo -e "e[4;32mUPDATING LOCAL FILE DATABASEe[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 权限的文件。
echo -e "e[4;32mLOOKING FOR FILES WITH 777 PERMISSIONSe[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 ""
# -文件系统利用率高出界说的阀值时发出告诫
echo -e "e[4;32mCHECKING FILE SYSTEM USAGEe[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 < <(df -h --total | grep -vi filesystem)