Ну с ходу придумалось как-то так:
#!/bin/bash
mkdir -p "$HOME/tmp"
PIDFILE="$HOME/tmp/myprogram.pid"
if [ -e "${PIDFILE}" ] && (ps -u $(whoami) -opid= |
grep -P "^\s*$(cat ${PIDFILE})$" &> /dev/null); then
echo "Already running."
exit 99
fi
/path/to/myprogram > $HOME/tmp/myprogram.log &
echo $! > "${PIDFILE}"
chmod 644 "${PIDFILE}"
И в крон типа:
*/5 * * * * $HOME/cron/watchdog.sh > $HOME/cron/watchdog.log 2>&1
Вообще то что вы хотите называется watchdog ищите по этому слову, реализаций хватает на любом скриптовом языке.