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 "主题" [email protected] 3. 脚本可以搞成死循环,每隔30s检测一次
4.判断本机的80端口是否开启着,如果开启着什么都不做,如果发现端口不存在,那么重启一下httpd服务,并发邮件通知你自己。脚本写好后,可以每一分钟执行一次,也可以写一个死循环的脚本,30s检测一次。
#port=80 po=80 #mail [email protected] 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 [email protected] 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
时间: 2025-01-14 16:24:38