1.按照这样的日期格式(xxxx-xx-xx)每日生成一个文件,例如今天生成的文件为2013-09-23.log, 并且把磁盘的使用情况写到到这个文件中。

#! /bin/bash
d=`date +%F`
logfile=$d.log
df -h > $logfile

然后再增加一条每日定点执行的任务计划即可,或(sleep 24*60*60)

2.ps 可以查看进程的内存占用大小,写一个脚本计算一下所有进程所占用内存大小的和。(提示,使用ps aux 列出所有进程,过滤出RSS那列,然后求和)

#! /bin/bash
sum=0
for mem in `ps aux |awk '{print $6}' |grep -v 'RSS' `
do
    sum=$[$sum+$mem]
done
echo "The total memory is $sum""k"

也可以使用awk 一条命令计算:

ps aux | grep -v 'RSS TTY' |awk '{(sum=sum+$6)};END{print sum}'

3.设计一个脚本,监控远程的一台机器(假设ip为123.23.11.21)的存活状态,当发现宕机时发一封邮件给你自己。

#! /bin/bash
while : ;do
ping -c10 123.23.11.21 > 1.txt
........
sleep  30
提示:
1. 你可以使用ping命令   ping -c10 www.baidu.com
2. 发邮件的命令是  echo "邮件内容" |mail -s "主题" abc@139.com
3. 脚本可以搞成死循环,每隔30s检测一次

4.判断本机的80端口是否开启着,如果开启着什么都不做,如果发现端口不存在,那么重启一下httpd服务,并发邮件通知你自己。脚本写好后,可以每一分钟执行一次,也可以写一个死循环的脚本,30s检测一次。

#port=80
po=80
#mail
ma=abc@139.com
while :;do
        rs=`netstat -anlp|grep ':80' |wc -l`
        if [ $rs -eq 0 ];then
     #  a=`netstat -lnp |grep ":80" >/dev/null`
     #  if [ -z $a ];then
                echo "The port $po is die"|mail -s "message" $ma
                service httpd start;
        fi
        sleep 30
done
#! /bin/bash
mail=123@123.com
if netstat -lnp |grep ':80' |grep -q 'LISTEN'; then
    exit
else
    /usr/local/apache2/bin/apachectl restart >/dev/null 2> /dev/null
    echo "The 80 port is down."|mail -s 'check_80' $mail
    n=`ps aux |grep httpd|grep -cv grep`
    if [ $n -eq 0 ]; then
        /usr/local/apache2/bin/apachectl start 2>/tmp/apache_start.err
    fi
    if [ -s /tmp/apache_start.err ]; then
        mail -s 'apache_start_error' $mail < /tmp/apache_start.err
    fi
fi