【问题标题】:chpasswd is unknown command when called in cronjob?在 cronjob 中调用 chpasswd 是未知命令?
【发布时间】:2015-07-12 17:46:51
【问题描述】:

我对以下内容感到好奇:

我有一个 bash 脚本,它通过 cronjob 每月执行一次。以下行在通过 cronjob 运行时给出错误“未知命令”:

echo $P | chpasswd

当我直接执行 bash 脚本时,它工作正常。

有人有想法吗?

【问题讨论】:

  • 为您的cron 工作提供的 PATH 是什么? chpasswd 存储在哪里?由于cron提供的路径中没有列出chpasswd所在的目录,所以找不到。 cron 的环境非常有限;任何最不寻常的东西都意味着需要非常小心,要么更全面地设置 PATH,要么指定命令的绝对路径名。
  • 你如何设置Pecho 回显它?它不是每个月都设置相同的值吗?这样做明智吗?

标签: bash crontab


【解决方案1】:

将评论转化为答案。

为您的cron 工作提供的PATH 是什么? chpasswd 存储在哪里?由于chpasswd存储的目录没有在cron提供的路径中列出,所以找不到。 cron 的环境非常有限;运行任何最不寻常的东西都意味着需要非常小心。

要么在cron 作业运行的脚本中更完整地设置PATH,要么指定不在/bin/usr/bin 中的命令的绝对路径名。

顺便说一句,你如何设置Pecho 来回显它?它不是每个月都设置相同的值吗?这样做明智吗?

在 Stack Overflow 上还有许多其他问题,关于从 cron 作业运行命令时遇到的困难。除其他外,请参阅 Bash script not running in cron correctlyPerl script works but not via cronIs there a special restriction on commands executed by cron?,仅举三例。

【讨论】:

  • 谢谢。我的 chpasswd 位于 @ /usr/sbin - 我添加了绝对路径,现在它在通过 cronjob 调用时可以工作。 P每个月设置不同。有固定部分和可变部分,它们组合为 P。可变部分以只有我知道的方式计算,因此我每次都知道有效密码。
猜你喜欢
  • 1970-01-01
  • 2015-05-01
  • 2011-08-22
  • 2019-07-21
  • 2016-12-16
  • 2020-11-19
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
相关资源
最近更新 更多