加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

当它从命令行bash运行时,无法从crontab运行bash脚本

发布时间:2020-12-15 19:00:08 所属栏目:安全 来源:网络整理
导读:我有一个奇怪的问题,即能够从命令行运行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
我有一个奇怪的问题,即能够从命令行运行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 "

用Google搜索了问题后,似乎标准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),这可能不是您想要的,但这是很常见的做法.这可以帮助您进一步诊断脚本中的错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读