繁体   English   中英

Ubuntu cron shebang 不工作

[英]Ubuntu cron shebang not working

我有一个脚本作为shebang #!/usr/bin/env node

当 cron 运行我的脚本时,我收到此错误/usr/bin/env: node: No such file or directory

当我以我的用户身份运行脚本时,脚本运行良好,只是不像 cron。 我猜这是因为 node 不在运行 cron 的用户的 PATH 上?

我怎样才能让这个shebang与cron一起工作?

$ which node给了我/home/myuser/.nvm/v0.11.14/bin/node

Cron 作业在受限环境中运行。 在交互式 shell 中,您的$PATH可能设置在您的$HOME/.bash_profile$HOME/.bashrc Cron 作业在未提供这些文件的环境中执行,因此您特定于用户的$PATH设置将不可用。

您可以通过临时创建一个 crontab 条目来查看该环境的样子:

* * * * * printenv > crontab-environment

您可以在 crontab 中显式设置$PATH ,或者在命令本身中:

* * * * * PATH=$PATH:/home/myuser/.nvm/v0.11.14/bin some_command

或在您的 crontab 中的单独一行中:

PATH = /usr/bin:/bin:/home/myuser/.nvm/v0.11.14/bin

您不能(直接)使用通常的PATH=$PATH:/new/dir语法在环境设置行中将目录附加到$PATH ,因为变量引用不会在这样的行中替换。 它们在 crontab 命令行处理。

man 5 crontab了解详情。

另一种选择是在脚本本身中使用显式完整路径,更改

#!/usr/bin/env node

#!/home/myuser/.nvm/v0.11.14/bin/node

您需要为每个node安装在不同位置的系统进行自定义。 或者您可以安排将node (或nodejs ?)安装在一致的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM