Ubuntu cron shebang 不工作
Ubuntu cron shebang not working
我有一个脚本作为 shebang #!/usr/bin/env node
。
当 cron 运行s 我的脚本时,我得到这个错误 /usr/bin/env: node: No such file or directory
。
当我 运行 脚本作为我的用户时,脚本 运行 很好,只是不像 cron。我猜这是因为节点不在 运行s cron?
用户的路径上
如何让这个 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
?)安装在一致的位置。
我有一个脚本作为 shebang #!/usr/bin/env node
。
当 cron 运行s 我的脚本时,我得到这个错误 /usr/bin/env: node: No such file or directory
。
当我 运行 脚本作为我的用户时,脚本 运行 很好,只是不像 cron。我猜这是因为节点不在 运行s cron?
用户的路径上如何让这个 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
?)安装在一致的位置。