【问题标题】:Some commands not working in the script running from the crontab -e某些命令在从 crontab -e 运行的脚本中不起作用
【发布时间】:2021-10-04 00:58:06
【问题描述】:

我正在从 crontab 运行一个脚本,我想在其中设置 npx 的符号链接。它会做一些其他的事情,这些事情取决于npx 命令本身。它在给定的时间间隔上按预期运行脚本,但它没有给我命令which npxwhereis npx 的结果。当我尝试直接从终端运行脚本时,这些命令会生成正确的路径。 请注意,我使用的crontab 是在root 用户权限下,即使用sudo crontab -e 设置并在生成“root”的脚本中使用echoing whoami 进行验证)

【问题讨论】:

  • npx 在哪里?默认情况下,cron 作业以非常小的PATH(通常只是/usr/bin:/bin)运行,如果它不在其中的目录之一中,which 将找不到它(whereis 有点不同,但可能有类似的问题)。
  • 嗨 Gordon,NPX 是 npm 附带的执行器,最小路径是什么意思...这个脚本不是在同一环境中运行...因为我能够正确当我手动运行脚本时,npx 的路径(带有which npx),谢谢!
  • 您是否有$HOME/.profile$HOME/.bash_rc 更改路径?尝试先获取该文件。
  • cron 作业不会像您的正常环境那样运行;见this Q&A。另外,请注意它确实拥有的环境是 root 的,而不是你的。

标签: bash npm cron sudo


【解决方案1】:

默认情况下,crontab 将使用 sh 运行您的 cron 作业,这可能是您没有得到任何结果的原因。

尝试通过调整 crontab 条目将 shell 显式更改为默认 shell:

*/30 * * * * /bin/bash -c "/my_script.sh"

在这种情况下,我将其更改为 bash,您可以将其更改为所需的 shell。

【讨论】:

  • 嗨,Shachar,是的,我试过了,但无法得到预期的结果,crontab 在手动运行脚本时(在 root 访问权限下)没有给出 which npx 的输出,谢谢!
  • 快速解决方法是指定完整路径 - 但是,您可能只想调整脚本的 PATH 环境变量。
猜你喜欢
  • 2020-01-02
  • 2011-09-21
  • 2020-09-19
  • 2018-09-05
  • 2017-11-27
  • 2015-10-12
  • 1970-01-01
  • 2015-05-12
  • 2021-01-14
相关资源
最近更新 更多