备份脚本正在 cron 作业中执行,但没有生成备份

备份脚本正在 cron 作业中执行,但没有生成备份

如果我从命令行手动运行备份脚本,它可以正常工作。没有创建问题备份。在 crontab 日志中,我可以看到在凌晨 2:00 运行备份的条目/home/sgaddis/copy-production-db.sh

Dec 23 01:01:01 mapehr anacron[11921]: Anacron started on 2019-12-23
Dec 23 01:01:01 mapehr anacron[11921]: Normal exit (0 jobs run)
Dec 23 01:01:01 mapehr run-parts(/etc/cron.hourly)[11923]: finished 0anacron
Dec 23 02:00:01 mapehr CROND[14869]: (sgaddis) CMD (sgaddis /bin/bash /home/sgaddis/copy-production-db.sh)
Dec 23 02:01:01 mapehr CROND[14934]: (root) CMD (run-parts /etc/cron.hourly)
Dec 23 02:01:01 mapehr run-parts(/etc/cron.hourly)[14934]: starting 0anacron
Dec 23 02:01:01 mapehr anacron[14943]: Anacron started on 2019-12-23

但当我查看时/home/sgaddis/backup没有备份。

这不应该是权限问题,因为它是我的主/备份文件夹。我的帐户应该有权将备份转储到那里,就像我手动运行脚本时一样。我还应该在其他地方寻找线索吗?

我去了https://linux4one.com/how-to-set-up-cron-job-on-centos-7/看看我在创建 cronjob 时是否遗漏了什么

我搜索该网站无法找到与此类似的问题。 cronjob 没有挂起或没有被执行。我发现的最接近的是

  https://stackoverflow.com/questions/44723154/using-cronjob-to-automatically-backup-mysql-files, 

但正如我之前在帖子中所说,我已经从命令行运行了该脚本并且它运行良好,因此上面的帖子没有回答我的问题。

正在搜索这个网站

不会产生与我发布的问题类似的问题。如果您知道类似的帖子,请指出,而不仅仅是投票否决我的帖子。

确切的行是这样的

0 2 * * * root /bin/bash /home/sgaddis/copy-production-db.sh

==更新==

这是今天日志文件中的命令。

 mapehr CROND[21076]: (sgaddis) CMD (/bin/bash /home/sgaddis/copy-production-db.sh)

现在它正在使用我的用户帐户启动 cron 作业。

也许我的用户帐户没有执行 cron 作业的权限?

答案1

您好,欢迎来到社区!

乍一看,您用作教程的页面说要使用crontab -e,但随后又说您应该在 cron 条目中输入用户名。使用该crontab工具时,cron 条目中不需要用户名,因为通过该工具调用的 crontab 无论如何都在用户上下文中运行。如果您提供配置中使用的确切行,我们也许能够正​​确纠正此问题。

不过,这可能只是您的 cron 条目中的一个问题。尝试从 cron 条目中删除用户名(如果存在),并仅提供计时配置和您手动使用的确切命令,如下所示:

0 0 * * * your-command /path/to/script.sh

答案2

从评论中可以清楚地看出,您希望以 root 身份运行 cron 作业。

您可以通过两种方式安排此类脚本:

  1. 把它放到系统的crontab中/etc/crontab。这个 crontab 是一个带有额外用户字段的 crontab 文件,就像您在问题中显示的那样。我不推荐这样做,因为某些 Unix 系统可能会通过自动方式管理这个 crontab。反而...
  2. 将作业放入 root 用户的 crontab 中。如果您有权限,您可以使用sudo crontab -e普通用户帐户的命令编辑 root 用户的 crontab 。sudo这个 crontab 是 root 用户的“个人 crontab”,它可以方便地运行需要 root 权限的本地计划作业。

请注意,从 cron 运行脚本的环境很可能与在交互式 shell 中运行脚本的环境不同。差异可能包括当前工作目录是什么(编写脚本以便将文件复制到绝对路径或从绝对路径复制文件),以及设置哪些环境变量以及设置什么值(在 shell 启动文件中设置的变量将不可用;设置这些在脚本中明确显示)。

相关内容