diff options
-rwxr-xr-x | _bin/get_mail.sh | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/_bin/get_mail.sh b/_bin/get_mail.sh new file mode 100755 index 0000000..a8288cc --- /dev/null +++ b/_bin/get_mail.sh @@ -0,0 +1,30 @@ +#!/bin/sh +# +# Run the command to get emails, and record its PID, which is used +# to kill the program before run it again. +# This is an workaround to solve the stuck issue with `offlineimap`. +# + +# Command to get emails +GET_CMD="offlineimap -o -1" + +# PID file +PID_FILE="${HOME}/.cache/get_mail.pid" + +# Log file +LOG_FILE="${HOME}/.cache/get_mail.log" + + +# Kill the previous process at first. +# For `offlineimap`, it sometimes just stucks ... +if [ -e "${PID_FILE}" ]; then + kill -SIGKILL `cat ${PID_FILE}` + rm ${PID_FILE} +fi + +if [ -e "${LOG_FILE}" ]; then + mv ${LOG_FILE} ${LOG_FILE}.old +fi + +${GET_CMD} > ${LOG_FILE} 2>&1 & +echo $! > ${PID_FILE} |