我有一个cron作业,每分钟运行一次Shell脚本。但是我不断得到
/usr/bin/env: node: No such file or directory
restarting
nohup: failed to run command ‘npm’: No such file or directory
作为输出。
我尝试在全球范围内安装pm2,但这不起作用。
这是我的Shell文件:
#!/bin/bash
PATH=$PATH: /home/dev/bin/npm
pID=$(pgrep -x "PM2")
if [ -n "${pID}" ];
then
#do nothing
echo $pID "already running. not restarting."
else
# start it
echo "restarting"
nohup npm ./home/dev/public_node/server.js --production &
fi
它应该通过pm2启动server.js文件吗?
答案 0 :(得分:1)
您编辑了上一个问题,从找不到pm2
到找不到node
,但一种解决方法是通过确定以下任意工具的完整路径来解决的:
NPM="`which npm`"
if [ "x" == "x$NPM" ]; then
(>&2 echo "NPM not installed")
exit 1
fi
# Run by using the variable like it's a regular command
# e.g.
nohup $NPM ./home/dev/public_node/server.js --production &
答案 1 :(得分:1)
我要感谢@Florian Schlag帮助我找到答案并给我正确的答案。我在下面粘贴了我的文件以供参考。请注意,我不得不更改一些文件,但是可以从输出npm错误中推导出来。
#!/bin/bash
PATH=$PATH:/home/<user>/bin/
NPM="`which npm`"
if [ "x" == "x$NPM" ]; then
(>&2 echo "NPM not installed")
exit 1
fi
pID=$(pgrep "PM2" -f)
if [ -n "${pID}" ];
then
exit 0
else
# start it
echo "restarting"
nohup $NPM start ./<file path ton script> --production &
fi