自动检测网站健康shell脚本

一、背景介绍 我的WordPress网站最近老是宕机无法提供服务,网站架构是经典的 Linux + OpenResty + MySQL + PHP , 宕机后大多数情况下不能立即处理,于是想写个自动检测网站健康的shell脚本,主要功能是定时检测网站运行是否正常,如果宕机,则自动初始化MySQL和PHP服务,如果初始化后还不能访问,则邮件告警通知我。 二、实现过程 1  编写脚本 脚本的内容如下,目前运行十来天左右还算正常。 #!/bin/bash #Author:Attaboy #Description:this script is made to check website health and roll back automattically. # Modify history #       20171122 #       20171130 dst_mail="[email protected]" mail_title="Linode Website Health Report" mail_content="\nOops,Your website is still out of service after initiating!\n\n$(iptables -vnL)\n\n\n$(netstat -nltp)\n\n" free_mem=$(free -m |…

Continue Reading

Nginx吞吐量实测

传说中的Nginx吞吐量性能到底如何,小弟这里献丑测试一番。 一、测试准备 1  硬件 1)DELL 2U 服务器  被测对象 CPU : Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz  12核24线程 MEM : 64G 2) 自用PC机  压力机  CPU : Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz  4核8线程 MEM : 16G 2  软件 1) DELL 2U 服务器  被测对象 IP:172.17.1.170 web server : openresty 2)  自用PC机  压力机  压力测试工具:ab 3  一些设定 1)…

Continue Reading

双VPS增量备份实践

一、背景介绍     本人有两个vps,一个linode,一个阿里云,其中linode是本博客所在主机,很多资料需要定期备份。恰好阿里云的磁盘够大,整个linode主机磁盘拷贝进去也有富余,于是简单做个增量备份的shell脚本。 在这里献丑了。 二、配置过程 1  配置两个vps的ssh免密码登录 2  两个vps均安装rsync     yum install -y rsync 3  编写备份脚本 备份脚本的内容如下, #!/bin/bash   #  this script is made to automatically backup data of host linode #  Author:Attaboy #  Modify history: #       2017.11.11 #       2017.11.14  add local backup function #       2017.11.17  do not print debug info to log file when…

Continue Reading

sed删除不包含指定单词的行

问题:有个文件名为file,内容如下,   ACCTWARROOM.JFJ_JSPFP_FILL T accTwarRoom.uut_jjfJ_JJJF_OWPERP   ACC T ACCTWARROOM.JJ_POLL_JIM L TTT acctwarroom.jj_pq_jjjj_ppp t aipindictment 要求:删除不包含单词acctwarroom的行(不区分单词的大小写) ———————————————————————————————————————– 答案:   方法1  先将所有字母的小写转换为大写格式,再打印包含指定单词的行。   [pc@iZj6cj7qz0pp3b2plfmewiZ ~]$ sed -n  -e ‘s@[a-z]@\u&@g ; /ACCTWARROOM/p' file ACCTWARROOM.JFJ_JSPFP_FILL T ACCTWARROOM.UUT_JJFJ_JJJF_OWPERP   T ACCTWARROOM.JJ_POLL_JIM L ACCTWARROOM.JJ_PQ_JJJJ_PPP T   方法2  先将所有字母转为小写,再删除不包含指定单词的行   [pc@iZj6cj7qz0pp3b2plfmewiZ ~]$ cat file | sed -e ‘s@[A-Z]@\l&@g ; /\<acctwarroom\>/ !d' acctwarroom.jfj_jspfp_fill t…

Continue Reading

Linux中转换字符串大小写的姿势

在数据处理中肯定会遇到大小写的转换,下面说说Linux中转换字符串大小写的几种方式。 1  AWK awk是强大的报告生成器,其很多内置函数很有用,比如tolower和toupper就是处理大小写的,用命令说话,如下, PS:gawk才支持大小写的转换函数tolower和toupper。 2  tr tr是专门处理字符串的神器,话不多说,如下图, 3 tr tr命令还有一种方法转换大小写。 3  sed sed作为古老的流编辑器,仍然是一把文本处理的利剑。 将每个单词的首字母变为大写,如图, 将所有小写转换为大写,如图, 将所有大写转换为小写,如图,   关于sed的这个用法我还是头一次看见,有兴趣的朋友可以在shell下运行info sed查看解释,大致如下,   3.5 The `s' Command =================== The syntax of the `s' (as in substitute) command is `s/REGEXP/REPLACEMENT/FLAGS'.  The `/' characters may be uniformly replaced by any other single character within any given `s' command. The…

Continue Reading

自用PC增量备份Shell脚本

最近自己的PC硬盘里丢了个重要文件,应该是我误删除的,所以提醒大家千万别乱删文件,就算删除也要备份一俩月。于是一怒之下写了个shell脚本,专门用于备份重要文件的,主要是通过rsync这个强大的同步工具实现,脚本里也使用了函数创建和调用,具体内容如下, #!/bin/bash   #  this script is made to automatically backup data of host S5 #  Author:Attaboy #  history: #       2016.06.28 #       2016.07.03 #       2016.07.14 #       2017.09.02 #       2017.09.04 #       2017.09.14 #       2017.09.17 #       2017.11.04  anotate bak_node_3 function #       2017.11.07  allow bak_node_3 function #       2017.11.11  allow bak_node_4 function #       2017.11.12  add code to start DELL…

Continue Reading

sed删除指定字符开头的行的上一行的指定字符

最近在学习Oracle11g数据库时,需要将MySQL数据插入脚本转换成Oracle脚本,以在Oracle数据库中新建表和插入数据,方便练习。可是MySQL脚本太大,普通文本编辑器无法处理(7个G),于是用Linux下的sed老牌流编辑器,在我的DELL R710服务器上来做。 其中,有一段SQL脚本内容如下, 20000110119', '2016-02-04 02:00:01', '2016-02-04 02:00:00', '1200.00', '超时未领完'); INSERT INTO bonusreturnorder VALUES ('50', '254', '697', '2', '1', 'WX20160203085132174280', 'HBTK20160204020001045349', '2016-02-04 02:00:02', '2016-02-04 02:00:01', '600.00', '超时未领完'); — BONUSID number(11) , DELETEFLAG number(2) , TYPE number(2) , ); CREATE TABLE bonususer ( — SENDUSERID number(11) , SENDUSERNAME varchar2(32) , BONUSTICKETNO varchar2(32) , ); INSERT INTO…

Continue Reading

Nginx接口桩测试

    少数情况下,我们要模拟第三方接口来测试我们自己项目的程序,比如,迅雷快鸟公司和电信合作,电信的接口发布滞后迅雷一周,电信发布接口前,测试人员很闲,浪费了时间,而发布后工作量剧增,所以如果能提前拿到电信方的接口标准文档,模拟其既定的接口,就可以充分利用时间,提高发布质量。     主要实现的方式就是在Nginx端模拟静态文件发布,静态文件包含接口返回的信息,比如状态码等,这时候可以联合本项目其他模块进行集成测试。       静态发布文件,在Nginx服务端配置也非常简单,如下,       location /test {             root /tmp;             index interface;     }   interface 是/tmp目录下的一个文件,内容可以是你的接口要返回的东西,比如一个字符串  {"id"=89990,"sid"=0099}     在浏览器端输入    http://domainname/test/interface  即可模拟返回interface里面的内容。  

Continue Reading

如何统计重复日期个数

数据库qq群里有个人提了个问题,百思不得其解。 题目是这样,有个文件,里面很多行,每一行都是1-31不等的每月的日期数字,每个数字用一个空格隔开,请统计每个数字重复1-31次的个数。 文件大致内容如下, 01 05 06 07 09 10 22 23 24 25 26 27 31 02 03 04 05 06 12 15 16 18 21 22 23 25 ……………. …………….  

Continue Reading

find查找文件忽略某些目录

    Linux中查找文件时,有时候不想遍历指定目录下的所有子目录,因为子目录可能包含N多文件,扫描时间慢,这时候就需要忽略这些目录。     举个实例,例如要扫描磁盘根目录下所有超过100M的文件,但是目录“/mnt”和"/media"下往往有很多文件,要忽略他们,具体方法如下,       find / \( -path "/mnt" -o -path "/media" \) -prune -o -type f -size +100M -print 2>/dev/null      在Linux实际运行的结果展示如下图,      

Continue Reading