美文网首页
crontab定时任务

crontab定时任务

作者: Y了个J | 来源:发表于2021-08-25 15:33 被阅读0次
使用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

相关文章

  • crondtab 定时任务

    编辑定时任务 crontab -e 查看定时任务 crontab -l 删除定时任务 crontab -r 如:*...

  • linux crontab: 定时任务

    参考 crontab 定时任务 Linux之crontab定时任务

  • crond任务调度(定时任务调度)

    基本语法crontab [选项]选项-e : 编辑crontab定时任务-l : 查询crontab定时任务...

  • linux Crontab

    Linux Crontab:Linux中用于执行定时任务的工具crontab -e:编辑定时任务crontab -...

  • Linux定时任务Crontab

    定时任务服务提供crontab命令来设定任务 定时任务命令: 定时任务服务提供crontab命令来设定任务 cro...

  • Crontab

    crontab命令: crontab定时任务: example:

  • 常用的linux命令

    ①定时任务管理: crontab –l 查看定时任务 crontab -e 编辑定时任务 ②查看实时日志: tai...

  • Linux_315_Ansible模块之定时任务管理

    crond服务,定时任务服务crontab -l 查看定时任务crontab -e 添加定时任务 /usr/bin...

  • Linux定时任务

    Linux定时任务 centOS: 使用crontab -e //编辑 crontab -l //查看定时任务 生...

  • crontab

    定时任务: crontab crontab -l 列出全部任务 cronta...

网友评论

      本文标题:crontab定时任务

      本文链接:https://www.haomeiwen.com/subject/ppndiltx.html