我正试图从下面的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
中设置的环境变量。我不确定我在这里还能做错什么,任何帮助都将不胜感激!
当出现路径问题时,通常会发生这种情况,请尝试执行以下操作。
* * * * * export NODE_PATH=<your global node module dir> && /home/user/.nvm/versions/node/v10.8.0/bin/node /home/user/testingNode/script.js
作为真正登录用户运行的更好方法:
0 0-7 * * * /bin/su - root -c "/root/killvnc.sh" 2>&1
你得到的环境与你测试的环境完全相同