20150722 星期三

1.按照格式xxxx-xx-xx每日生成一个日志文件,例如今天生成的文件为2013-09-23.log,并且把磁盘的使用情况写到文件中。(2013-09-23 shell练习题http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=5593&fromuid=4675)

  #vi /usr/local/sbin/crontest1.sh

    #!bin/bash

    d=`date +%F`                   ` `反单引号,引用系统命令的执行结果

    logfile=$d.log                 $引用变量的值

    df -h > /var/log/$logfile       查看磁盘使用情况df -h;查看内存使用情况 free


  #crontab -e            使用crontab -e/-l/-r(删除)/-u(指定用户,不加即当前用户)

    0 0 * * * /bin/sh /usr/local/sbin/crontest1.sh    绝对路径 /bin/sh


-------------------------------------------------------------------------------------------

20150723 星期四

2.服务器上跑的是httpd,写一个监控脚本,每分钟检查一次httpd进程是否存在,若发现不在就启动它。

    思路:ps aux查看httpd进程是否启动,如果没有启动,记录时间,并启动httpd服务。启动后,再次判断ps aux中是否有httpd进程,如果没有则记录错误日志,并且邮件通知管理员,人工检查原因,并且退出死循环。如果第一次判断httpd进程存在或则启动成功,则不记录log。(2014-10-17 shell脚本练习题http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=6977&fromuid=4675)

#! /bin/bash

##

##


log=/var/log/httpdcheck.log

while :; do

    a=`ps aux |grep httpd |wc -l`

    if [ $a -eq 0 ]; then

        echo "[`date +'%F %T'`] httpd service is off.Try to start now" >>$log

        /usr/local/apache2/bin/apachectl start >> $log

    else 

        echo "httpd service is running."

        exit

    fi  

    sleep 3  

    b=`netstat -lnp |grep httpd |wc -l`

    if [ $b -eq 0 ]; then

        mail -s 'Htttpd service start fialed. Please check.' 1091322612@qq.com < $log

        echo "[`date +'%F %T'`]httpd service start fialed. please check." >>$log

        exit

    else

        echo "[`date +'%F %T'`] httpd service is started successfully." >>$log

    fi

    sleep 60

done

-------------------------------------------------------------------------------------------

20150730 星期四

统计1.log文件中每个IP的访问量多少?提示:先awk过滤ip,再进行排序,uniq统计重复,再将重复次数进行排序。(9月25日shell脚本练习题http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=5601&fromuid=4675)

    #awk -F'-' 1.log |sort -n |uniq -c|sort -n