Shell节点:没有这样的文件或目录

时间:2019-04-30 11:29:06

标签: shell cron pm2

我有一个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文件吗?

2 个答案:

答案 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