【问题标题】:Bash SCP CRON not workingBash SCP CRON 不工作
【发布时间】:2018-07-21 14:51:51
【问题描述】:

我有一个包含以下代码的文件:

#!/bin/bash
scp -r -P 2222 -i /etc/ssh/ssh_host_rsa_key /opt/storage/test/* root@xxx.xxx.xxx.xxx:/opt/storage/test/

现在,当我将它放入 cron 选项卡时,它会运行,但没有错误,什么也没有发生。有什么问题?

这是它在 cron 选项卡中的设置方式:

*/5 * * * * root /bin/bash /opt/crons/testCopy >> /opt/crons/mylog.log 2>> /opt/crons/err.log

【问题讨论】:

  • 什么是命令的根?
  • root 是执行命令的用户,不确定你在问什么
  • 罗南刚刚回答了什么;)
  • 当你说“没有错误什么都没有发生”时,你的意思是你已经查看了两个日志文件并且它们都是空的,对吧?

标签: bash shell cron scp


【解决方案1】:

如果你想以 root 身份运行你的命令,你应该把这一行放在你的 root 用户的 crontab 中,像这样:

  1. 使用su 以root 身份登录
  2. 使用crontab -e 编辑您的root 用户的crontab
  3. 在打开的编辑器中编写您的 cron 作业

【讨论】:

    【解决方案2】:

    脚本和 cron 看起来不错。

    请检查脚本

    /opt/crons/testCopy

    权限为0600,否则不会运行。我使用 0600,但唯一需要的是 GROUP 和 OTHERS 没有对该文件的任何访问权限。这是一项安全措施。

    执行这个:

    sudo chmod 0600 path/to/file
    

    【讨论】:

    • "-rw-r--r-- 1 root root 114 Feb 8 21:26 testCopy" 这是来自 ls -l
    • @Jed 0600 意味着除了 root 用户之外的任何人都不能读/写/执行。它应该看起来 -rw--------
    • 是的,但它对 0600 有更多的访问权限,所以我不明白为什么它不会运行
    • @Jed 因为这是一种安全措施。请做它并测试。
    【解决方案3】:

    cron tab的执行方式很完美,最后问题是我在windows电脑上开发,行尾格式不正确导致scp不能正确执行。

    【讨论】:

      猜你喜欢
      • 2016-07-04
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-22
      • 2012-02-18
      相关资源
      最近更新 更多