Bis jetzt habe ich verwendet
pidof -o %PPID -x "my-tool"
Um die PID einer eventuell laufenden Instanz von my-tool zu erkennen.
Dies ist die Kurzversion von my-tool file, einem ausführbaren Bash-Skript
#!/bin/bash
if pidof -o %PPID -x "my-tool"; then
echo "Already running"
exit 1
fi
... if not running go on
Aber jetzt muss ich eine einzelne Instanz pro Benutzer und mehrere pro Computer zulassen , damit sogar 100 my-tool im selben Moment ausgeführt werden können, aber nur 1 pro Benutzer.
Beachten Sie, dass ich einen Test benötige, um so etwas wie einen Singleton zu erstellen. Wenn das Tool gestartet wird und eine andere Instanz ausgeführt wird, wird es sich selbst schließen.
Kurz gesagt: Ich brauche, dass ein Bash-Skript erkennen kann, ob es bereits für den aktuellen Benutzer ausgeführt wird, und in diesem Fall muss es beendet werden.
Wie man ?
pidof
, es gibt bessere Werkzeuge Lügepgrep