I'm trying to use crontab to check and re-run a long running script.
I've created a script that checks the status and runs the long-running script if needed.
I'm running the long running script with nohup to keep it running when I log out.
The keep-alive script:
```
#!/bin/bash
BASE_PATH=~/scripts
LOG_PATH=${BASE_PATH}/keep_alive.log
write_to_log () {
date >> ${LOG_PATH}
echo ${1} >> ${LOG_PATH}
echo "--------------" >> ${LOG_PATH}
}
pid=$(pgrep long_script)
if [ -z "${pid}" ]; then
write_to_log "long_script is no runnig, starting..."
nohup ${BASE_PATH}/long_script.py &
fi
```
crontab entry:
```
*/30 * * * * /home/user/scripts/keep_alive.sh
```
When I run the script manually (in bash, ./keep-alive.sh) all works well and the long script starts.
From crontab, the script starts and exits immediately (no issue with the paths/expression), and I see a log written, but the long script stops. So my conclusion is that nohup doesn't work the same for crontab as in bash.
I tired using setsid or disown, but got the same results.
How can I solve it?
Thanks.