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

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Um einen Kommentar hinterlassen zu können, erhalten Sie nach dem Kommentieren eine E-Mail mit Aktivierungslink an ihre angegebene Adresse.
“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