【问题标题】:How do I get crontab to work with this script?如何让 crontab 使用此脚本?
【发布时间】:2014-03-18 18:42:43
【问题描述】:

位于文件系统 -> tmp/crontab.iRppRO 我有这个

1 * * * * /bin/bash ./usr/share/cacti/cli/cacti_moto_script.sh

这是我的脚本,当我在终端中运行时它运行良好。它位于 /usr/share/cacti/cli/cacti_moto_script.sh

这是脚本。

 #!/bin/bash
php -q add_device.php --description="x.x.x.x" --ip="x.x.x.x" --template=29 --community="Canopy"
php -q add_device.php --description="x.x.x.x" --ip="x.x.x.x" --template=29 --community="Canopy"
php -q add_device.php --description="x.x.x.x" --ip="x.x.x.x" --template=29 --community="Canopy"
php -q add_device.php --description="x.x.x.x" --ip="x.x.x.x" --template=29 --community="Canopy"
php -q add_device.php --description="x.x.x.x" --ip="x.x.x.x" --template=29 --community="Canopy"
php -q add_device.php --description="x.x.x.x" --ip="x.x.x.x" --template=29 --community="Canopy"

我知道我已经安排了每 1 分钟一次的 crontab(只是试图让它先工作),但我希望它每小时一次。

【问题讨论】:

  • 我刚刚注意到您没有告诉我们它是如何出错的。为什么脚本的路径以./usr而不是/usr开头?
  • 我的上级告诉我它需要一个 .
  • 当设置通过 crontab 运行时,脚本没有运行会出错。
  • 你的上级对.的看法是错误的

标签: centos crontab cacti


【解决方案1】:

检查您的环境变量。

Cron 作业不会继承 shell 的环境变量。他们通常只获得一些变量设置,例如$HOME$PATH(通常只有/usr/bin:/bin)、$SHELL$PWD 和其他一些设置。

您的脚本需要的任何环境变量都必须明确设置。您可以在 crontab 本身中执行此操作,也可以更新脚本以设置它们(后者可能是更好的方法)。

顺便提一下问题中的 crontab:

1 * * * * /bin/bash ./usr/share/cacti/cli/cacti_moto_script.sh

将(尝试)每小时运行一次命令,在整点后一分钟。要每分钟运行一次,请使用* * * * *

假设您的脚本以#!/bin/bash 开头(必须在第一行的开头),并且它具有执行权限(chmod +x),您不需要显式调用/bin/bash。您可以直接执行脚本。 (毕竟,这就是 #! 行的用途。)

【讨论】:

  • 我的脚本具体需要设置哪些环境变量?
  • @GarrettVW:这取决于你的剧本。您需要查看交互式 shell 中的环境并确定需要哪些变量。不知道add_device.php 做了什么,就无法判断。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-01
  • 2021-09-27
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
相关资源
最近更新 更多