化身天使的博客

linux定时任务

一:shell脚本

#!/bin/bash                                 #祖传开头

. /etc/profile                                #系统环境变量, 有空格

source ~/.bash_profile               #用户环境变量

python  abc.py                          #执行命令

二:crontab

crontab -l       #查看计划任务

crontab -e      #编辑计划任务, 操作同vim

!要用绝对路径

示例1

0   7-22   *   *    0              sh     /home/y/test.sh  >> test.log  2>&1  &

0   7-22   *   *    0              sh     /home/y/test.sh    &>  /dev/null   &

0   7-22   *   *    0  nohup sh   /home/y/test.sh  >> /dev/null 2>&1  &               #不占用终端执行脚本

分   时    日 月 周几

每周日7点到22点执行test.sh, 标准输出和错误输出都到追加到test.log, 周日0, 周一1, 周六6, 

示例2

10, 50   7   *   *    *        sh     /home/y/test.sh  >/dev/null  2>&1  &

每天7点10分和7点50执行test.sh, 不要输出, 既不记录到文件, 也不输出到控制台

示例3

0   */2   *   *    *        sh     /home/y/test.sh  2>>error.log  &

1.每两小时执行一次, 除以几就是间隔多久, 注意分钟如果是*, 代表每分钟都执行, 会覆盖掉其他设置..

2.不要标准输出, 错误输出追加到日志

其他示例

*/1  8-23  * * *         #8-23点, 每分钟一次

0-59  8-23  * * *        #同上

*  8-23  * * *           #每分钟一次, 后面的小时, 天, 月份之类的都会无效

0 8-23 * * *           #8-23点, 整点执行

三.at

用于只执行一次的命令

atq       #查看当前是否存在at任务, 第一列是任务id

atrm 2  #删除编号2的任务

at -c 2 #查看编号2的详细内容

at 4:00                     #今天4点执行

at  4:00  tomorrow    #明天4点执行任务

at 5pm+3 days          #3天后下午5点执行

ctrl  d                  #结束输入

#/etc/init.d/atd restart       启动at命令的守护进程

 

四:示例

oracle删除归档日志

#!/bin/bash                                 
. /etc/profile                              
source ~/.bash_profile              

rman target / <<EOF

crosscheck archivelog all;  #检查归档日志

delete noprompt expired archivelog all;  #删除所有过期日志

delete noprompt archivelog until time 'sysdate-15';  #删除15天前的归档日志
exit; 
EOF

posted @ 2021-09-01 17:27  化身天使  阅读(43)  评论(0)    收藏  举报