I'm trying to run a command at certain intervals.
pm2 restart appname
Doing this myself works. Then I add it to a bash script.
#!/bin/bash
pm2 restart appnameRunning the bash script works: bash scriptname.sh
Then I add it to my crontab:
* * * * * /usr/local/crontab-scripts/scriptname.sh >> /var/log/cronlog.log 2>&1
This gives me the error:/usr/local/crontab-scripts/scriptname.sh: line 4: pm2: command not found
I'm not doing any of this as root, I have pm2 globally installed, I put into my script whereis pm2 and it logged the correct path /usr/local/bin/pm2. Then I tried having my script cd to that path before running pm2, no difference.
I'm out of ideas here.
01 Answer
When you call applications or commands from within scripts or CRON jobs, it helps to spell out the entire path of the application.
In your case I would try re-writing your script to:
#!/bin/bash
/usr/local/bin/pm2 restart appnameHowever, this seems like overkill and you might as well just call pm2 directly from your crontab:
* * * * * /usr/local/bin/pm2 restart appname >> /var/log/cronlog.log 2>&1