crontab定时任务

2021-08-25  本文已影响0人  Y了个J
使用crontab配合shell脚本定时清理缓存

Linux服务器用一段时间就会出现buff/cache内存占用过多的情况,导致free空闲内存变得非常少,严重影响使用;

这个时候就可以用如下命令去清除一下cache内存

echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches

每一次都自己敲一遍着实麻烦,不如设置一个定时清理的脚本

首先切换到root账户 su root
找一个目录,然后创建脚本文件 vi cleanCache.sh
添加如下内容

#!/bin/sh
LOG_PATH="/var/log"

used=`free -m | awk 'NR==2' | awk '{print $3}'`
free=`free -m | awk 'NR==2' | awk '{print $4}'`

echo "==============开始清理缓存=============" >> $LOG_PATH/mem.log
date >> $LOG_PATH/mem.log

echo "Memory usage before | [Use:${used}MB][Free:${free}MB]" >> $LOG_PATH/mem.log

if [ $free -le 600 ] ; then
    sync && echo 1 > /proc/sys/vm/drop_caches
    sync && echo 2 > /proc/sys/vm/drop_caches
    sync && echo 3 > /proc/sys/vm/drop_caches
    used_ok=`free -m | awk 'NR==2' | awk '{print $3}'`
    free_ok=`free -m | awk 'NR==2' | awk '{print $4}'`
    echo "Memory usage after | [Use:${used_ok}MB][Free:${free_ok}MB]" >> $LOG_PATH/mem.log
    echo "OK" >> $LOG_PATH/mem.log
else
    echo "Not required" >> $LOG_PATH/mem.log
fi
exit 1

通过如下命令测试脚本是否正常运行

chmod 777 cleanCache.sh
./cleanCache.sh

下面开始设置自动定期清理

crontab -e

1.Ctrl+O 写入
2.出现“FIile name to Write...”,输入Enter
3.Ctrl+x 保存输出

在末尾添加如下内容:

* */3 * * * ./home/HwHiAiUser/cleanCache.sh  #每三小时执行cleanCache脚本
*/1 * * * * echo "Good morning" >> /home/HwHiAiUser/test.txt  #每分钟输出日志到test.txt
*/1 * * * * /home/HwHiAiUser/test.sh

test.sh内容

#!/bin/bash
echo "nihao" >> /home/HwHiAiUser/1.txt

保存后提示crontab: installing new crontab 即生效

然后输入如下指令可以查看是否成功

crontab -l

到此就大功告成了。

使用crontab配合shell脚本定时检测拉起服务

1、新建脚本check_nginx.sh

#!/bin/bash
APP_NAME="nginx: master"
BIN_PATH="/usr/local/nginx/sbin"

#检测方法
checkStatus() {
  pid=$(ps -ef |grep "$APP_NAME" |grep -v "grep" |awk '{print $2}');
  #datetime=`date +%Y-%m-%d,%H:%m:%s`
  datetime=`date`
  if [ -z "${pid}" ]; then
     echo "$datetime ---- 开始启动服务$APP_NAME"
     cd $BIN_PATH
     ./nginx
  else
     echo "$datetime ---- 项目$APP_NAME已经启动,进程pid是${pid}!"
  fi
}

checkStatus

脚本授权:

chmod a+x /usr/local/check/check_nginx.sh

2、建立定时任务

crontab -e

#新建定时任务,每分钟检测一次Nginx的状态,如果Nginx没有启动,就执行启动命令
* * * * * /usr/local/check/check_nginx.sh   >> /var/log/check_nginx.log

3、查看定时任务

crontab -l

查看日志

tail -200f /var/log/check_nginx.log
上一篇 下一篇

猜你喜欢

热点阅读