您的位置:首页 > 运维架构 > Shell

Shell脚本练习题

2015-07-24 18:19 555 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  练习 shell脚本