Crontab使用备忘

为满足领导要求,作者需要设置一个定时备份PostgreSQL数据库的Crontab任务。在尝试设置过程中遇到了问题,系统日志显示(CRON) info (No MTA installed, discarding output)错误,意味着cron任务的输出没有邮件服务接收。解决方案是安装邮件服务,并解决计划任务中的Syntax error。通过将%符号转义,成功配置了Crontab任务,同时添加了定期删除备份的任务。" 83890741,8194527,IT销售提成激励方案探讨,"['销售管理', '薪酬激励', '企业管理', 'IT行业', '销售策略']

背景:
领导要求将爬虫的数据库每天都备份一下,于是需要设置一个定时任务。数据库postgresql。

#m  h  dom  mon  dow   command
15  15  *  10-12  *   pg_dump org|gzip >/tmp/org_`date+%Y%m%d_%H%M`.bak.gz
项目代表意义数字范围
mminute 分钟0~59
hhour 小时0~23
dom日期1~31
mon月份1~12
dow$120~7
command$1命令

因为是先su postgres之后crontab -e操作的,没有起作用。。。。

实验方法1:crontab -upostgres -e操作之后,service cron restart

crontab -upostgres -e 实际上是编辑/var/spool/cron/crontabs/postgres文件(这个路径与操作系统相关的,ubuntu是这个)

不管用。

排查问题

  1. 查看系统日志: tail -f /var/log/syslog
    发现报错:(CRON) info (No MTA installed, discarding output),
    No MTA installed
    这个错呢是表示info不在syslog中输出,而是会mail到用户:在/var/spool/mail/下的对应用户名的文件中,但是去看了,没有。。。查找错误解决:需要安装邮件服务apt-get install postfix,

  2. 安装了之后再重启一下去查看syslog:
    邮件发送syslog
    然后去看一下邮件:
    more /var/spool/mail/postgres
    错误展示

错误原因:/bin/sh: 1: Syntax error: EOF in backquote substitution

去网上找原因:

Cron needs to escape the % sign
cron需要对%进行转义
原来的计划任务:
原来的计划任务
修改后的计划任务:
修改后的计划任务

修改之后看到目标文件了:

看到目标文件了

这个因为是备份嘛,所以还是要定期删除的,加一个定期删除任务:

0 1 * 10-12 1-5 rm -f /tmp/data_`date -d '3 days ago' +"\%Y\%m\%d"`*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值