gpt4 book ai didi

bash - 从命令行 bash 运行时无法从 crontab 运行 bash 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 12:06:32 30 4
gpt4 key购买 nike

我有一个奇怪的问题,即能够从命令行运行 bash 脚本,但不能从 root 的 crontab 条目运行。我正在运行 Ubuntu 12.04。

* * * * 1-5 root /home/xxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/jmeter-cron-randomise.sh >> /home/xxxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/cron.log

如果我使用 bash 从 cmd 行运行脚本,它工作正常但 sh 失败并出现以下错误:

> jmeter-cron-randomise.sh: 7: jmeter-cron-randomise.sh: arithmetic
> expression: expecting primary: " % 1 "

用谷歌搜索这个问题后,似乎标准 shell 没有与 bash 相同的数学运算符,如 %(模数)。我不确定为什么 cron 作业在脚本中失败?我假设这是因为它没有使用 bash shell?它肯定是由 cron 守护进程触发的(可以在/var/log/syslog 中看到)。非常感谢任何帮助。

最佳答案

您可能需要告诉 cron 要使用的 shell 是 bash shell,因为它默认为 sh。您可以通过将此行放入您的 crontab 来为所有 crontab 条目执行此操作:

SHELL=/bin/bash

请注意,这将导致 crontab 中的所有脚本都在 bash 下运行,这可能不是您想要的。如果您想将 crontab 行本身更改为仅运行 bash,请将其更改为:

* * * * 1-5 root /bin/bash /home/xxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/jmeter-cron-randomise.sh >> /home/xxxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/cron.log 2>&1

请注意,我还导致将 stderr 写入 cron.log 文件 (2>&1),这可能不是您想要的,但这是很常见的做法。这可能有助于您进一步诊断脚本中的错误。

关于bash - 从命令行 bash 运行时无法从 crontab 运行 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50549881/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com