为什么crontab成功运行我的Shell脚本,但无法启动我的二进制文件程序?

时间:2019-05-15 09:07:51

标签: linux unix cron

我制作了一个如下的shell脚本:

#!/bin/bash

/root/bin/mybin >> a.log

然后我使用crontab在固定时间启动它。 结果是:

  1. crontab运行此脚本(a.log已消失,我可以从/ var / log / cron查看日志,也显示了crontab运行它)
  2. 但是mybin没有运行(mybin是while(true)循环程序)

我可以从linux shell手动运行脚本。

而且我确定它与用户访问问题无关,因为我将其用作“根”。

使用命令

strace -f -o /tmp/data.log ~/deploy/StartData.sh >> ~/script-log/data.log

strace输出包含

7011 write(2, "/root/deploy/StartData.sh: line "..., 80) = 80 
7011 write(2, "/root/deploy/StartData.sh: line "..., 82) = 82 
7011 exit_group(2) = ? 
7011 +++ exited with 2 +++ 

这些是/tmp/mybin.trace的最后一条消息,除此之外,没有错误消息

这真的让我感到困扰,任何建议都很高兴。

1 个答案:

答案 0 :(得分:0)

strace的输出显示在shell脚本/root/deploy/StartData.sh中发生错误,并且shell以退出代码2退出。

7011 write(2, "/root/deploy/StartData.sh: line "..., 80) = 80→错误消息,带有文件名和(可能)行号
7011 exit_group(2) = ?→程序退出并显示代码2(可能是错误指示)

根据reference of shell exit codes,这可能意味着

  

滥用外壳内置函数(根据Bash文档)

从cron运行时,您的程序/脚本似乎有问题。可能的原因可能是:

  • 该脚本没有关联的终端。
  • 该脚本在其他目录中运行。
  • (可能更多)

要获得更好的答案,请遵循注释中的提示。