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

浙公网安备 33010602011771号