2022-03_shell 如何编写定时任务?

导读

crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活。

1. crontab 使用步骤

(1)、编写定时任务需求脚本,如以下脚本 处理vertica ros to many 问题。

脚本需要在 vertica 需要放在vertica mpp 服务器执行。

ros_mergetout_task.sh 如下所示:

#!/bin/sh
#Author:lvtong Time:2022-03-29 19:00  Desc:vertica ros to many  question
#ros limit value
default_ros=800

#event mergeout task
function event_task(){
  ros=0
  ros=$(${vsql} -qtAX -c "select count(distinct storage_oid) from storage_containers where projection_name like ('event%') group by projection_name order by 1 desc limit 1")
  echo "$(date "+%Y%m%d%H%M%S"), event ros :$ros"
  if [[ ${ros} -ge ${default_ros} ]]; then
      echo "$(date "+%Y%m%d%H%M%S"),current event ros [$ros] larger than [$default_ros]"
      event_result=$(${vsql} -qtAX -c "select do_tm_task('mergeout','my.event')")
      echo "$(date "+%Y%m%d%H%M%S"),event mergeout end"
  fi
}

#mergeout task
event_task

(2) 执行 “crontab -e” 命令,添加你编写的定时任务,如该脚本为每30分钟执行一次脚本任务,echo 和错误输出到 /opt/vertica/ros_many_task.log 文件。

"*/30 * * * * bash /opt/vertica/bin/ros_mergeout_task.sh 
uname upwd &>>/opt/vertica/ros_many_task.log 2>&1"
2. crontab 注意事项

当程序在你所指定的时间执行后,系统会发一封邮件给当前的用户,内容在 /var/spool/mail/$user,显示该程序执行的内容,若是你不希望收到这样的邮件,请在每一行空一格之后加上 > /dev/null 2>&1 即可。

如标准输出/标准错误输出重定向到空设备文件,也就是不输出任何信息到终端。

#/dev/null 代表空设备文件
#1 表示stdout标准输出,默认值1
#2 表示stderr标准错误
#& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
*/5 * * * * /root/XXXX.sh &>/dev/null 2>&1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值