环境

CentOS7

思路

设置一个死循环,执行脚本时开始启动 httpd 服务,同时开始记录当前时间,然后输出到日志中,再 sleep 14 秒,之后马上开始停止 httpd 服务,同时开始记录当前时间,然后输出到日志中。重复这个死循环。

代码

vi test.sh 打开文件,按 i 进行编辑,输入下面代码:

#!/bin/sh
while :
do
    systemctl start httpd
    curdate=`date +"%Y-%m-%d %H:%M:%S"`
    echo [INFO] ${curdate} >> /home/opp/test.log "httpd is starting"
    sleep 14
    systemctl stop httpd
    curdate=`date +"%Y-%m-%d %H:%M:%S"`
    echo [INFO] ${curdate} >> /home/opp/test.log "httpd is stopping"
done

然后需要创建 test.log 这个文件:

mkdir /home/opp
vi /home/opp/test.log

然后按 Esc,再按 :wq 退出。

输入下面命令开始执行脚本:

./test.sh

等待一段时间,然后按 Ctrl+Z 停止脚本,输入下面命令查看日志

vi /home/opp/test.log

可以看到以下内容:

可以看到基本做到了让 httpd 服务每 15s 停止,使用脚本监控并且启动,并计入日志。但是由于程序运行需要花费时间,因此有些时间会超过 15s,但大体思路是这样。

日志规范

工作中要注意日志规范,一般最前面是日志级别:INFO、WARN、ERROR 等。然后是时间和记录内容等。详情可以自己上网查看一下日志规范。

参考

shell脚本每隔几秒执行一次

shell 获取当前日期,当前时间

Linux(centos)新建,删除,移动文件夹和文件的命令

Shell 输入/输出重定向

自动监控apache服务状态并重启的shell脚本

日志规范总结篇

LOG使用规范(整理)