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
No known key found for this signature in database
GPG key ID: A0BE2ADB83365305

View file

@ -103,7 +103,7 @@ fn_parse_ssh() {
}
fn_run_cmd() {
if [ -n "$SSH_DEST_FOLDER_PREFIX" ]
if [ -n "$SSH_DEST_FOLDER_PREFIX" ]
then
eval "$SSH_CMD '$1'"
else
@ -305,9 +305,9 @@ if [ -n "$(fn_find "$INPROGRESS_FILE")" ]; then
fn_log_error "Previous backup task is still active - aborting (command: $RUNNINGCMD)."
exit 1
fi
else
else
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."
exit 1
fi