BASH: Nur eine Instanz eines Bash Skriptes starten

In einigen Fällen darf ein Skript nur eine Instanz starten, z.B. Aufbereitung für Backup. Für diesen Zweck hab ich hier das kleine Bespiel eingestellt.

Sollten mehrere Benutzer das Skript starten können ist natürlich darauf zu achten das sie alle Schreibrechte auf das PID File haben.
LOCK_FILE="${BASE_PATH}/test.pid"
Und hier das komplette Beispiel :
#!/bin/bash
BASE_PATH=$(dirname "$(readlink -f "$0")")
SCRIPT=$(basename "$0")
LOCK_FILE="${BASE_PATH}/test.pid"

function check_process () {
        PID_FILE="${1}"
        if [[ -z "${PID_FILE}" || ! -n "${PID__FILE}" ]]; then
                if [ -f ${LOCK_FILE} ]; then
                        # Pid File auslesen
                        pid=$(cat ${PID_FILE})
                        chkpid=$(ps -ax | grep "/bin/bash" | grep "/${SCRIPT}" | grep $pid | grep -v grep)
                        if [ $? -ne 0 ]; then
                                rm ${PID_FILE}
                        else
                                # Skript läuft noch -> keine doppelte ausführung wird beendet
                                echo "the script is already running -> PID:$pid"
                                exit 1
                        fi
                fi
        else
                echo "no pid file given please check parameters"
                exit 9
        fi
        echo $$ > ${PID_FILE}
}

check_process "${LOCK_FILE}"

echo "Script ${BASE_PATH}/${SCRIPT} started"

# endlosschleife - debug
while true; do
echo "l" 
sleep 10
done

“Die Organisationen stecken Millionen von Dollars in Firewalls und Sicherheitssysteme und verschwenden ihr Geld, da keine dieser Maßnahmen das schwächste Glied der Sicherheitskette berücksichtigt: Die Anwender und Systemadministratoren.”
Kevin Mitnick