Fix to assure only one instance is running.

Since this script runs under /usr/bin/env, running 'pgrep $0' will fail
due to it being a child of 'bash'. In order to fix this, pgrep must use
the `-o` flag (oldest pid, or in this case, the leader), and `-f` which
searches the full process name.
This commit is contained in:
Nathan French
2018-01-19 13:42:54 -05:00
parent c313e0a322
commit bfa1fd092e
+3 -3
View File
@@ -103,7 +103,7 @@ fn_parse_ssh() {
} }
fn_run_cmd() { fn_run_cmd() {
if [ -n "$SSH_DEST_FOLDER_PREFIX" ] if [ -n "$SSH_DEST_FOLDER_PREFIX" ]
then then
eval "$SSH_CMD '$1'" eval "$SSH_CMD '$1'"
else else
@@ -305,9 +305,9 @@ if [ -n "$(fn_find "$INPROGRESS_FILE")" ]; then
fn_log_error "Previous backup task is still active - aborting (command: $RUNNINGCMD)." fn_log_error "Previous backup task is still active - aborting (command: $RUNNINGCMD)."
exit 1 exit 1
fi fi
else else
RUNNINGPID="$(fn_run_cmd "cat $INPROGRESS_FILE")" RUNNINGPID="$(fn_run_cmd "cat $INPROGRESS_FILE")"
if [ "$RUNNINGPID" = "$(pgrep "$APPNAME")" ]; then if [ "$RUNNINGPID" = "$(pgrep -o -f "$APPNAME")" ]; then
fn_log_error "Previous backup task is still active - aborting." fn_log_error "Previous backup task is still active - aborting."
exit 1 exit 1
fi fi