首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尽管尝试了与Stackoverflow不同的修复,但crontab仍然无法工作。

尽管尝试了与Stackoverflow不同的修复,但crontab仍然无法工作。
EN

Stack Overflow用户
提问于 2016-11-11 09:21:51
回答 1查看 508关注 0票数 0

我试图运行一些cron作业作为根,但似乎我的crontab,它不工作。在阅读了大量的线程之后,我改变了这些内容:

  • 我已经把crontab里面的sudos移除了。
  • 我在crontab中添加了所有命令的完整路径。
  • 每次我都会重新启动cron的工作。

但它还没起作用。

这是我当前的crontab (我用“-e”从sudo用户调用它作为root运行它):

代码语言:javascript
复制
0 4 * * * /usr/bin/find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} \; > /var/log/log1.log
5 4 * * * /usr/bin/mongodump  --out /var/backups/mongobackups/`date +"%m-%d-%y"` --ssl --sslPEMKeyFile=/etc/ssl/mongo.pem --username <mymongoadminusername> --password <mymongoadminpassword> --authenticationDatabase=admin > /var/log/log2.log
30 4 * * * /opt/letsencrypt/certbot-auto renew > /var/log/log3.log
35 4 * * * /etc/init.d/nginx reload > /var/log/log4.log
40 4 * * * /bin/cat /etc/letsencrypt/archive/<mydomanin>/{fullchain1.pem,privkey1.pem} | /usr/bin/tee /etc/ssl/mongo.pem > /var/log/log5.log

我试图用这5条命令做的是:

  1. 在04点。删除所有7天以上的备份。
  2. 在04:04。备份所有mongodb数据库。
  3. 在04:30。尝试更新我的SSL证书。
  4. 在04:35。重新加载Nginx服务。
  5. 在04:40。用新证书更新我的mongodb.pem文件。

重要的是,使用sudo一个接一个地从shell运行的这些命令都正常工作。

但是从cron得到的结果是:

  1. 我不知道这个命令是否有效。日志文件(log1.log)为空。
  2. 这不管用。没有创建备份。日志文件(log2.log)尚未创建。
  3. 好像起作用了。日志文件(log3.log)显示正确运行此命令时的标准输出。
  4. 好像起作用了。日志文件(log4.log)显示正确运行此命令时的标准输出。
  5. 好像不起作用了。mongo.pem文件具有正确的更新日期,但文件为空。这些文件具有正确的内容,因此似乎存在"/usr/bin/tee /etc/ssl/mongo.pem“的问题。日志文件(log5.log)尚未创建。

最后,cron.log显示如下:

代码语言:javascript
复制
Nov 11 04:00:01 myservername CRON[31286]: (root) CMD (/usr/bin/find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} \; > /var/log/log1.log)
Nov 11 04:05:01 myservername CRON[31297]: (root) CMD (/usr/bin/mongodump  --out /var/backups/mongobackups/`date +")
Nov 11 04:05:01 myservername CRON[31296]: (CRON) info (No MTA installed, discarding output)
Nov 11 04:07:01 myservername CRON[31306]: (root) CMD (   test -x /etc/cron.daily/popularity-contest && /etc/cron.daily/popularity-contest --crond)
Nov 11 04:17:01 myservername CRON[31325]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Nov 11 04:30:01 myservername CRON[31353]: (root) CMD (/opt/letsencrypt/certbot-auto renew > /var/log/log3.log)
Nov 11 04:30:04 myservername CRON[31352]: (CRON) info (No MTA installed, discarding output)
Nov 11 04:35:01 myservername CRON[31393]: (root) CMD (/etc/init.d/nginx reload > /var/log/log4.log)
Nov 11 04:40:01 myservername CRON[31420]: (root) CMD (/bin/cat /etc/letsencrypt/archive/<mydomanin>/{fullchain1.pem,privkey1.pem} | /usr/bin/tee /etc/ssl/mongo.pem > /var/log/log5.log)
Nov 11 04:40:01 myservername CRON[31419]: (CRON) info (No MTA installed, discarding output)

如果我没有错“没有安装MTA,放弃输出”的错误不是一个问题,因为它与通过电子邮件发送输出有关,对吗?

所以有人能告诉我我的crontab怎么了?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-18 12:42:53

我不知道我的crontab有什么问题,但是如果我把所有这些命令都放在一个脚本中,并在crontab中调用这个脚本,这是可行的。

脚本(myscript.sh):

代码语言:javascript
复制
#!/bin/bash

/usr/bin/find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} \; > /var/log/log1.log
/usr/bin/mongodump  --out /var/backups/mongobackups/`date +"%m-%d-%y"` --ssl --sslPEMKeyFile=/etc/ssl/mongo.pem --username <mymongoadminusername> --password <mymongoadminpassword> --authenticationDatabase=admin > /var/log/log2.log
/opt/letsencrypt/certbot-auto renew > /var/log/log3.log
/etc/init.d/nginx reload > /var/log/log4.log
/bin/cat /etc/letsencrypt/archive/<mydomanin>/{fullchain1.pem,privkey1.pem} | /usr/bin/tee /etc/ssl/mongo.pem > /var/log/log5.log

crontab:

代码语言:javascript
复制
00 03 * * * <pathtomyscript>/myscript.sh

现在起作用了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40544738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档