aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-x_bin/get_mail.sh30
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}