导读
crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活。
1. crontab 使用步骤
(1)、编写定时任务需求脚本,如以下脚本 处理vertica ros to many 问题。
脚本需要在 vertica 需要放在vertica mpp 服务器执行。
ros_mergetout_task.sh 如下所示:
#!/bin/sh
default_ros=800
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
}
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 即可。
如标准输出/标准错误输出重定向到空设备文件,也就是不输出任何信息到终端。
*/5 * * * * /root/XXXX.sh &>/dev/null 2>&1
|