I know this is a hugely popular type of question so I apologise for that, but I'm truly stuck and I've read through the cron wiki and tried all those suggestions.
I've also tried everything this guy lists in his question, namely:
- adding bash path to crontab
- specifying full path to processes inside bash script
- prefixing the script inside crontab with /bin/bash
- sweating blood since I have a wedding to go to and desperately need this damn script to just work
I can confirm the script works when running from my terminal.
So here goes...
# add bash to cronjob path PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # start litecoin daemon on boot @reboot /opt/litecoin-0.14.2/bin/litecoind # check every 2 minutes to see if block scrape running and restart it if not */2 * * * * /home/grayedfox/github/blockscrape/restartBlockscrape.sh
#!/bin/bash NODEPATH=$(which node) PROCESS="$NODEPATH /home/grayedfox/github/blockscrape/main.js" if pgrep -f "$PROCESS" > /dev/null; then echo "Blockscrape is doing it's thing - moving on..." else echo "Blockscrape not running! Starting again..." $PROCESS fi
I would expect, even if the job fails, to see some sort of error somewhere but I get nothing and see nothing!
Update: I can actually see the cron job being run by checking the /var/log/syslog output.
The output is:
CRON: (grayedfox) CMD (/home/grayedfox/github/blockscrape/restartBlockscrape.sh) CRON: (CRON) info (No MTA installed, discarding output)
The script also sits inside the directory of the node script it calls (although I specify full path as I understand the script, when run by cron, has it's
pwd as $HOME).