【问题标题】:Schedule Cron wih Bash使用 Bash 安排 Cron
【发布时间】:2012-11-16 23:36:09
【问题描述】:

这是我要运行的命令:

00 03 * * * backup.sh

我知道这将在每天凌晨 3 点运行脚本 backup.sh。如何使用 bash 脚本在我的 linux 服务器上添加这个 cron 命令?

【问题讨论】:

    标签: bash shell cron


    【解决方案1】:

    如何使用 bash 脚本在我的 linux 服务器上添加这个 cron 命令?

    如果您想以 root 身份运行此,您可以在 /etc/cron.d 中放置一个名为 backup 的文件,其内容如下:

    00 03 * * * root backup.sh
    

    这里假设backup.sh 在标准PATH 中,您可能希望在此处使用完全限定路径而不是依赖PATH

    00 03 * * * root /path/to/bin/backup.sh
    

    在许多发行版中,您还可以(可能通过符号链接)将backup.sh 脚本放入/etc/cron.daily 之类的东西中,它会每晚运行。这通常比编写自己的 crontab 条目更简单、更易于维护。

    如果你想以用户身份运行这个,你可以运行...

    crontab -e
    

    ...编辑您自己的 crontab 文件并在其中添加条目:

    00 03 * * * /path/to/bin/backup.sh
    

    请注意,我们不需要指定用户名(仅在/etc/cron.d/etc/crontab 和其他全局系统位置需要。

    【讨论】:

    • 这看起来不错,谢谢。但是,将行实际添加到 crontab -e 所需的 bash 命令是什么?
    • crontab -e 调出一个编辑器。您输入该行并保存文件并退出编辑器,这将激活您的新 crontab 文件。您也可以键入 crontab /path/to/your/crontab 从现有文件安装 crontab,而不是使用您的编辑器。另外,man crontabman 5 crontab
    【解决方案2】:

    作为根:

    echo "00 03 * * * root backup.sh" >>/etc/crontab

    echo "00 03 * * * root backup.sh" >/etc/cron.d/mybackupjob

    作为您自己的用户:

    crontab -l >tmp; echo "00 03 * * * backup.sh" >>tmp; crontab tmp; rm tmp

    【讨论】:

      【解决方案3】:

      您知道 /etc/cron.d 目录,对吧?如果没有,请输入“man cron”。

      【讨论】:

      • 你把一个文件放在你的 bash 脚本写出的那个目录中。格式与常规 crontab 相同,但添加了一个额外文件(倒数第二个),让用户可以在其下运行作业。
      【解决方案4】:

      crontab -e 将尝试调用您的 EDITOR,因此您的第一个脚本可以将其设置为第二个脚本,该脚本只需将相关行附加到 crontab:

      #!/bin/sh
      EDITOR=/path/to/second/script crontab -e
      

      第二个脚本:

      #!/bin/sh
      echo "00 03 * * * /path/to/bin/backup.sh" >> $1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-20
        • 2011-07-25
        • 2013-10-10
        • 1970-01-01
        • 2015-06-23
        • 2011-08-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多