Cron无法运行shell脚本

Cron无法运行shell脚本

我一直试图使用 cron 运行一个 shell 脚本,但无济于事。我试图让以下 bash 脚本每分钟运行一次

#!/bin/bash
PATH=/usr/local/bin/ices:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ps cax | grep 'ices' > /dev/null
if [ $? -eq 0 ]; then
  echo "Process is running."
else
  /usr/local/bin/ices /etc/ices/playlist.pls
fi

它检查进程是否正在运行,如果没有,则重新加载它。它以可执行文件的形式运行(权限设置为 755)。

我的 crontab 看起来像

    # m h  dom mon dow   command
    */1   *    *    *    *    /etc/ices/checkIces.sh
    */1   *    *    *    *    env > /tmp/env.output

第二行是检查 cron 是否至少会注销 tmp 文件夹中的环境。有人发现我当前的实现有什么问题吗?

答案1

基本上,这是一个获取足够信息进行调试的问题。我可以提供以下建议。

该脚本看起来不错,只是出于谨慎,我需要修改 PATH 命令,如下所示:

   PATH=/usr/local/bin/ices:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH  

您应该包括此声明

  exec >>${0}.out 2>>${0}.out

到你的小 bash 脚本中。它会将所有输出(标准和错误)重定向到与脚本同名的文件中,然后。出去. 因此,如果你的脚本被调用我的脚本,你会发现所有输出到我的脚本.sh.输出。只需确保写入权限允许创建和修改文件即可。您将在那里找到错误消息,否则可能会丢失。

第三,尝试使用命令,而不是计划任务,目前。区别在于环境。如果程序运行,但失败了计划任务,您将知道必须导入环境的某些功能。希望第二个建议能给您一些提示。

相关内容