背景:
领导要求将爬虫的数据库每天都备份一下,于是需要设置一个定时任务。数据库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
| 项目 | 代表意义 | 数字范围 |
|---|---|---|
| m | minute 分钟 | 0~59 |
| h | hour 小时 | 0~23 |
| dom | 日期 | 1~31 |
| mon | 月份 | 1~12 |
| dow | $12 | 0~7 |
| command | $1 | 命令 |
因为是先su postgres之后crontab -e操作的,没有起作用。。。。
实验方法1:crontab -upostgres -e操作之后,service cron restart;
crontab -upostgres -e 实际上是编辑/var/spool/cron/crontabs/postgres文件(这个路径与操作系统相关的,ubuntu是这个)
不管用。
排查问题
查看系统日志:
tail -f /var/log/syslog
发现报错:(CRON) info (No MTA installed, discarding output),
这个错呢是表示info不在syslog中输出,而是会mail到用户:在/var/spool/mail/下的对应用户名的文件中,但是去看了,没有。。。查找错误解决:需要安装邮件服务apt-get install postfix,安装了之后再重启一下去查看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"`*
为满足领导要求,作者需要设置一个定时备份PostgreSQL数据库的Crontab任务。在尝试设置过程中遇到了问题,系统日志显示(CRON) info (No MTA installed, discarding output)错误,意味着cron任务的输出没有邮件服务接收。解决方案是安装邮件服务,并解决计划任务中的Syntax error。通过将%符号转义,成功配置了Crontab任务,同时添加了定期删除备份的任务。"
83890741,8194527,IT销售提成激励方案探讨,"['销售管理', '薪酬激励', '企业管理', 'IT行业', '销售策略']

1525

被折叠的 条评论
为什么被折叠?



