我试图获取foreverJS脚本在EC2实例上运行节点服务器。该脚本如下所示:
#!/bin/bash
forever stopall
forever hakuna-matata store in appropriate logs start 'full/qualified path'
即使我添加echo "getting here"
语句作为第一行,我仍然会收到错误。我不太了解bash脚本,所以它可能是权限,相对/绝对路径,EC2 /节点,环境变量相关,但老实说我不知道。
堆栈跟踪:
[ec2-user@12-34-56 folder]$ forever startup.sh
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
/home/user/var/www/folder/startup.sh:2
echo "gh"
^^^^
SyntaxError: Unexpected string
at createScript (vm.js:74:10)
at Object.runInThisContext (vm.js:116:10)
at Module._compile (module.js:533:28)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:503:32)
at tryModuleLoad (module.js:466:12)
at Function.Module._load (module.js:458:3)
at Function.Module.runMain (module.js:605:10)
at startup (bootstrap_node.js:158:16)
at bootstrap_node.js:575:3
error: Forever detected script exited with code: 1
我还尝试通过带有forever start startup.sh
的永久服务脚本运行脚本并获得相同的错误。我已从父母直接启动并使用(合格)路径。
whoami - 用户 永远 - / usr / local / bin / forever npm - / usr / local / bin / npm sudo whomai - root sudo哪个npm - / usr / bin / npm 永远的sudo - / usr / bin / forever 节点-v -v8.2.1 npm -v - 5.3.0
询问您是否需要其他环境信息......
答案 0 :(得分:1)
永远假设SCRIPT
是一个可以用Node.js执行的JS文件你试图运行一个bash脚本,所以它出错了,因为echo "getting here"
显然是无效的JS代码
要解决此问题,您需要在运行-c
时使用forever
命令行选项。来自the docs:
-c COMMAND COMMAND to execute (defaults to node)
因此,在您的情况下,您将-c
设置为/bin/bash
;像这样:
forever start [LOG OPTIONS] -c /bin/bash path/to/your-shell-script.sh