我正在尝试从下面的crontab中运行一个非常简单的Node.js测试脚本(console.log(2+2);
):
* * * * * /home/user/.nvm/versions/node/v10.8.0/bin/node /home/user/testingNode/script.js
但是我收到错误:
Error: Cannot find module '/home/user/testingNode/script.js'
但是,当我尝试使用Node在cron之外运行脚本时,它可以很好地工作并输出4
:
/home/user/.nvm/versions/node/v10.8.0/bin/node /home/user/testingNode/script.js
我使用nvm在服务器上安装了Node v10.8.0,并将节点路径设置为指向全局node_modules
目录,因此echo $NODE_PATH
返回:
/home/user/.nvm/versions/node/v10.8.0/lib/node_modules
但是我的猜测是cron在运行时会忽略.bash_profile
中设置的环境变量。我不确定在这里我还能做错什么,任何帮助将不胜感激!
答案 0 :(得分:0)
通常在出现路径问题时发生,请尝试执行以下操作。
* * * * * export NODE_PATH=<your global node module dir> && /home/user/.nvm/versions/node/v10.8.0/bin/node /home/user/testingNode/script.js
答案 1 :(得分:0)
以真正登录的用户身份运行的更好方式:
0 0-7 * * * /bin/su - root -c "/root/killvnc.sh" 2>&1
您将获得与测试相同的精确环境