海运的博客

Awk的内置变量

发布时间:May 6, 2012 // 分类:Shell // No Comments

awk常用内置变量:

FS 输入分隔符,等同于-F
OFS 输出分隔符
NF 列数
FNR 输入文件的记录数
NR 行数
RS 输入记录分隔符
ORS 输出记录分隔符
FIRENAME 当前处理的文件名

Awk应用举例:

#http://www.haiyun.me
awk 'BEGIN {num=5} {FS=":"} $3>num {OFS="-";print NF,NR,FNR "\t" $1 "\t" $2 "\t" $3 "\t" $NF} END{print FILENAME}' /etc/passwd
7-13-13    games    x    12    /sbin/nologin
7-14-14    gopher    x    13    /sbin/nologin
7-15-15    ftp    x    14    /sbin/nologin
7-16-16    nobody    x    99    /sbin/nologin
7-17-17    nscd    x    28    /sbin/nologin
7-18-18    vcsa    x    69    /sbin/nologin
7-19-19    pcap    x    77    /sbin/nologin

Awk使用空格和字符为域分隔符

发布时间:April 23, 2012 // 分类:Shell // No Comments

使用多个字符为域分隔符:

awk -F[:/] '{print $1,$NF}' /etc/passwd  #使用:和/为分隔符

Awk默认空格为分隔符,如果使用空格加字符为分隔符呢?这个问题困扰我很久了,试了很多方法,下面这个方法勉强算可以吧。

iostat 2 2|grep ^dm-|awk -F"[ ]+|[-]" '{print $2,$NF}'  #使用空格和-为分隔符

Shell监控kloxo面板Could not open database connection自动修复

发布时间:April 16, 2012 // 分类:Shell,控制面板 // No Comments

kloxo经常出现Could not open database connection真是个让人头痛的问题,按照官方提供的方法修复后有客户反应以后还是出现此问题,不得已写个脚本放后台定时监控网站,反正也不占用多少资源,如遇到Could not open database connection问题自动修复。

#!/bin/bash
#set -x
#Created by http://www.haiyun.me
website=0.0.0.0:7778 #kloxo面板地址
while true
do
if
curl $website|grep Could
then
sh /script/fix-program-mysql
/etc/init.d/mysqld restart
fi
sleep 120
done

执行:

nohup sh /path/file.sh & #以nohup方式后台运行
echo "nohup sh /path/file.sh &" >> /etc/rc.local #开机启动

用Shell脚本监控服务器并发邮件报警

发布时间:April 15, 2012 // 分类:系统监控,Shell // No Comments

对于服务器来说在线率很重要,出现问题要能及时解决,但系统管理员不能一直守在电脑旁边,通过脚本监控网站出现问题及时通过mail通知管理员,如果是139邮箱还可免费手机短信通知。
通过系统直接发送mail容易被拦截,可使用mail连接第三方smtp发送邮件

#!/bin/bash
#Created by http://www.haiyun.me
#set -x
while true
do
    list=(www.haiyun.me cp.www.haiyun.me)
    mail=onovps@www.haiyun.me
    date=$(date -d "today" +"%Y-%m-%d-%H:%M:%S")
    i=0
    id=${#list[*]}
    while [ $i -lt $id ] 
    do
        if ping -c1 ${list[$i]} >/dev/null
        then
            echo  $date:服务器${list[$i]}能ping通。
        else
            if curl -m 10  ${list[$i]} > /dev/null 
            then
                echo  $date:服务器${list[$i]} ping不通,能打开网页。
            else
                echo  "您好,据系统监测服务器${list[$i]}不能访问且ping不通,请及时处理!故障发生时间:$date"|mail -s "服务器${list[$i]}不能连接! 故障发生时间:$date" $mail
                until 
                    date=$(date -d "today" +"%Y-%m-%d-%H:%M:%S")
                    ping -c1 ${list[$i]} >/dev/null && echo "恭喜!服务器${list[$i]}已恢复正常,恢复时间:$date"|mail -s "服务器${list[$i]}已恢复正常! 恢复时间:$date" $mail
                do
                    sleep 5
                done
            fi
        fi
        let i++
    done
    sleep 60
done

执行:

nohup sh /path/file.sh & #放到后台运行,程序60秒检查一次网站。

开机运行:

echo "nohup sh /path/file.sh & " >> /etc/rc.local

监控Nginx遇到502 Bad Gateway自动重启lnmp

发布时间:April 15, 2012 // 分类:Nginx,Shell // 1 Comment

此脚本用Curl监控Nginx网站状态,如回应502信息即重启LNMP

#!/bin/bash
#Created by http://www.haiyun.me
website=http://www.haiyun.me #修改为您的网址
if
curl  -I $website|grep "HTTP/1.1 502"
then
/root/lnmp restart
fi

添加到crontab计划任务:

crontab -e
*/5 * * * * sh /path/lnmp-502.sh #5分钟执行一次
分类
最新文章
最近回复
  • track: NAT 部分没处理,这块感觉有问题。
  • yu: 查到有用的资料很幸福!
  • boscotsang: 请问下服务器端如何控制权限让通过权限认证的客户端才能连接?现在这样只要有自编译的客户端程序都可...
  • yck932: 大侠,请问哪里有 tunnels 详细参考资料,谢谢
  • bubble: 现在linux 4.9以上的内核有个bbr的参数,用这个bbr比用锐速效果更好,可参考我的博文...
  • wang: openwrt 只有 tmp/etc/miniupnpd.conf 修改后又重置了,其他路径找...
  • wbq: 可以了 只是https透明代理如何做呢?
  • wbq: 你的这个配置需要浏览器设置代理ip+port, 现在假设不设置,只配置客户端网关为Nginx那...
  • wbq: 您好,想用Nginx做个透明代理,客户端机器配置下网关(即Nginx那台机器),客户端dns配...
  • ccc: 可以提供易调用openssl常用函数吗?