(shell 脚本文件)pm2:在 crontab 任务中找不到命令
(shell script file) pm2: command not found in crontab task
我的shell脚本
#!/bin/bash
pm2 start server.js
我的 crontab 任务
* * * * * /home/ec2-user/abcd/test.sh > /home/ec2-user/cron.log 2>&1
我从日志中得到的:
home/ec2-user/abcd/test.sh: line 2: pm2: command not found
如何解决?
备注:
1.When我执行./test.sh,运行正常
2.which pm2 - 显示
~/.nvm/versions/node/v14.16.1/bin/pm2
问题可能是因为在执行 cron 作业时没有设置 PATH
环境变量,这就是为什么你的 shell 脚本找不到 pm2
.您必须输入 pm2
.
的完整地址
例如 pm2
在 /usr/bin/
中:
#!/bin/bash
/usr/bin/pm2 start server.js
或者您可能只想在 shell 脚本中要执行的命令之前设置 PATH
env。
正常情况下,当您在终端中执行程序时,环境变量设置正确。这就是为什么你可以 运行 你的 shell 脚本在你的终端没有任何问题。
像其他答案中提到的那样设置路径命令。
PATH="/usr/bin:/bin:/home/ec2-user/.nvm/versions/node/v14.16.1/bin"
接下来,找到您的 server.js 文件的路径,并使用该路径添加 pm2 启动命令。
pm2 start /home/ec2-user/ .....your path to the file..... /server.js
完整代码:
#!/bin/bash
PATH="/usr/bin:/bin:/home/ec2-user/.nvm/versions/node/v14.16.1/bin"
pm2 start /home/ec2-user/ .....your path to the file..... /server.js
我的shell脚本
#!/bin/bash
pm2 start server.js
我的 crontab 任务
* * * * * /home/ec2-user/abcd/test.sh > /home/ec2-user/cron.log 2>&1
我从日志中得到的:
home/ec2-user/abcd/test.sh: line 2: pm2: command not found
如何解决?
备注:
1.When我执行./test.sh,运行正常
2.which pm2 - 显示
~/.nvm/versions/node/v14.16.1/bin/pm2
问题可能是因为在执行 cron 作业时没有设置 PATH
环境变量,这就是为什么你的 shell 脚本找不到 pm2
.您必须输入 pm2
.
例如 pm2
在 /usr/bin/
中:
#!/bin/bash
/usr/bin/pm2 start server.js
或者您可能只想在 shell 脚本中要执行的命令之前设置 PATH
env。
正常情况下,当您在终端中执行程序时,环境变量设置正确。这就是为什么你可以 运行 你的 shell 脚本在你的终端没有任何问题。
像其他答案中提到的那样设置路径命令。
PATH="/usr/bin:/bin:/home/ec2-user/.nvm/versions/node/v14.16.1/bin"
接下来,找到您的 server.js 文件的路径,并使用该路径添加 pm2 启动命令。
pm2 start /home/ec2-user/ .....your path to the file..... /server.js
完整代码:
#!/bin/bash
PATH="/usr/bin:/bin:/home/ec2-user/.nvm/versions/node/v14.16.1/bin"
pm2 start /home/ec2-user/ .....your path to the file..... /server.js