linux系统维护简单脚本

来源:互联网 发布:专业屏幕录制软件 编辑:程序博客网 时间:2024/05/17 06:18
1.报告当前系统“/boot”目录所占用的空间大小,并列出其中内核文件的属性信息。

#!/bin/bash
#To show usage of /boot directory and mode of kernel file.
echo "Useage of /boot: "
du -sh /boot
echo "The mode of kernel file: "
ls -lh /boot/vmlinuz-*


2.数据库目录位于 “/var/lib/mysql” , 为了数据安全,每隔三天做一次完整备份,备份前要统目录占用的总空间大小,并将备份日期·目录大小信息保存到临时文件 “/tmp/dbinfo.txt” 中,然后用tar命令将dbinfo.txt文件随数据库目录一起备份到 “/opt/dbbak/” 目录中,备份文件中要求体现当日的日期。

mkdir /opt/dbbak
vi /opt/dbbak.sh
#!/bin/bash
DAY=`date +%Y%m%d`
SIZE=`du -sh /var/lib/mysql`
echo "Date: $DAY" >> /tmp/dbinfo.txta
echo "Date Size: $Size" >> /tmp/dbinfo.txt
tar zcvf /opt/dbbak/mysqlbak-${DAY}.tar.gz /var/lib/mysql /tmp/dbinfo.txt
rm -rf /tmp/dbinfo.txt


3.检查 “/var/log/messages” 文件是否存在,若存在则统计文件内容的行数,否则不做任何操作。

#!/bin/bsh
LogFile="/var/log/messages"
if [ -f $LogFile ]; then
    wc -l $LogFile
fi


4.统计当前登录到系统中的用户数量,并判断是否超过三个,若是则显示实际数量并给出警告,否则列出登录的用户账号名称及所在终端。

#!/bin/bash
UsersNum=`who | wc -l`
if [ $UsesNum -gt 3 ]; then
    echo "Alert, too many login users (Total: $UsersNum)."
else
    echo "Login users: "
    who | awk '{print $1,$2}'
fi


5.检查 portmap 进程是否已经存在,若存在则输出 “portmap service is running.” , 否则检查是否存在 “/etc/rc.d/init.d/portmap” 可执行脚本,存在则启动 portmap 服务,否则提示 “no portmap script file.”

#!/bin/bash
pgrep portmap & > /dev/null
if [ $? -eq 0 ]; then
    echo "portmap service is running."
elif [ -x "/etc/rc.d/init.d/portmap" ] ; then
    service portmap start
else
    echo "no portmap script file."
fi


6.每隔5分钟检测一次mysqld服务进程的运行状态,若发现 mysqld 进程已经终止,则在 “/var/log/messages” 文件中追加写入日志信息(包括当前时间),并重启 mysqld服务,否则不做任何操作。

#/bin/bash
service mysqld status &> /dev/null
if [ $? -ne 0 ] ; then
    echo "At time: 'data': mysql service is down. " >> /var/log/messages
    service mysqld restart

fi


根据6写的升级版检测mysqld运行状态script

#!/bin/bash
#检测mysql的运行状态,并将down掉的时间记录,每隔3秒循环检查一次

while :

do

DAY=`date`

service mysqld status &> /dev/null

if [ $? -ne 0 ];then
echo "Date: $DAY" >> /var/log/messges
echo "mysqld is down" >> /var/log/messges
/etc/init.d/mysqld  restart
fi
sleep 3

done



7.计算 “/etc” 目录中所有 "*.conf" 形式的配置文件所占用的总空间大小。

#!/bin/bash
SizeNums=$( ls -l $(find /etc -type f -a -name *.conf) | awk '{print $5}')

Total=0

for i in $SizeNums
do
    Total = `expr $Total + $i`
done
echo "Total size of conf files: $Total bytes."






注意事项:要加权限才能用./来执行脚本
条件测试:
-d:测试是否为目录
-e:测试目录或文件是否存在
-f:测试是否为文件
-r:测试当前用户是否有权限读取
-w:测试当前用户是否有权限写入
-x:测试当前用户是否有权限执行
-L:测试是否为符号连接文件
通过预定义变量 “$?” 可以获得测试命令的返回值状态值,返回0表示条件成立,非0条件不成立,如 if [ $? -ne 0 ]
,这个是不成立的。

原创粉丝点击