【问题标题】:Shell script wont run in cron as rootShell 脚本不会以 root 身份在 cron 中运行
【发布时间】:2017-03-02 03:21:40
【问题描述】:

我的根 cron 文件中有以下代码: PATH=/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 45 12 * * * /home/ben/MetaBackup/metabackup.sh 2>&1 >/dev/null | slacktee.sh -t "Metabase Backup Error" -a "danger"

slacktee.sh 位于 /usr/local/bin 和 /usr/bin 但是当我运行这个 metabackup.sh 时运行正常,但 slacktee.sh 没有。我也尝试过 slacktee 的绝对位置,但这没有用。更令人困惑的是我在我的用户 crontab 中放置了完全相同的行,并且 slacktee 工作正常。我究竟做错了什么?或者这是我需要在那里提出的 slacktee 问题?

编辑: 可以在这里找到 slacktee:https://github.com/course-hero/slacktee

【问题讨论】:

    标签: linux cron sh crontab


    【解决方案1】:

    您正在将 metabackup.sh 的 stdout 和 stderr 重定向到 /dev/null ,所以我认为实际上没有输出通过管道传输到 slacktee.sh 并且其标准输入为空。

    尝试删除> /dev/null

    【讨论】:

    • 这不是问题,因为我尝试将所有内容都通过管道传输到 slacktee.sh。但是我发现问题出在 slacktee.sh 中。它的设计目的不是与安装它的帐户以外的帐户一起使用,因为它使用 url 创建配置以在用户主目录中与 slack 交谈。这对 root 不可用。所以以root身份安装它修复了它。
    【解决方案2】:

    我同意吉利!

    如果没有输出,slacktee 将无法打印任何内容。

    如果仍然无法正常工作,请尝试在您的命令中加载配置文件:

    45 12 * * * . ~/.profile;/home/ben/MetaBackup/metabackup.sh 2>&1 | slacktee.sh -t "Metabase Backup Error" -a "danger"
    

    当然,根据您使用的是 bash 还是 ksh(.profile 或 .bash_profile)来调整文件

    不要忘记 .profile 文件前面的“.”。

    希望它会有所帮助。

    【讨论】:

      【解决方案3】:

      很可能,cron 在其路径中找不到slacktee.sh。您正在为第一个命令设置 PATH,但该设置不适用于管道之后的命令。

      尝试使用slacktree的完整路径:

      ... | /usr/local/bin/slacktee.sh -t "Metabase Backup Error" -a "danger"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-10
        • 1970-01-01
        • 2018-05-11
        • 1970-01-01
        • 1970-01-01
        • 2011-03-10
        • 2014-04-29
        • 1970-01-01
        相关资源
        最近更新 更多