#!/usr/bin/env bash # Check every ten seconds if the process identified as $1 is still # running. After 5 checks (~60 seconds), kill it. Return non-zero to # indicate something was killed. monitor() { local pid=$1 i=0 while ps $pid &>/dev/null; do if (( i++ > 3 )); then echo "Max checks reached. Sending SIGKILL to ${pid}..." >&2 kill -9 $pid; return 1 fi sleep 60 done return 0 } read -r pid < ~/.offlineimap/pid if ps $pid &>/dev/null; then echo "Process $pid already running. Exiting..." >&2 exit 1 fi imapfilter offlineimap -o -u quiet & monitor $! #offlineimap -a Toradex -o -u quiet & monitor $!