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

linux – Ubuntu cron shebang不工作

发布时间:2020-12-13 23:51:34 所属栏目:Linux 来源:网络整理
导读:我有一个脚本作为shebang#!/usr/bin/env节点. 当cron运行我的脚本时,我收到此错误/usr/bin/env:node:没有这样的文件或目录. 当我以我的用户身份运行脚本时,脚本运行正常,而不是作为cron.我猜这是因为节点不在运行cron的用户的PATH上? 我怎样才能让这个sh
我有一个脚本作为shebang#!/usr/bin/env节点.

当cron运行我的脚本时,我收到此错误/usr/bin/env:node:没有这样的文件或目录.

当我以我的用户身份运行脚本时,脚本运行正常,而不是作为cron.我猜这是因为节点不在运行cron的用户的PATH上?

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

$节点给了我什么
/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

或者在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

您需要为在其他位置安装节点的每个系统自定义此选项.或者您可以安排将节点(或nodejs?)安装在一致的位置.

(编辑:李大同)

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

    推荐文章
      热点阅读