Gibt es ein Skript oder eine Möglichkeit in Linux, dass, wenn ich versuche, ein Shell-Skript / einen Shell-Prozess auszuführen, wenn dasselbe ausgeführt wird, es dazu auffordert, dass dasselbe ausgeführt wird, und beendet wird, andernfalls wird es fortgesetzt.
Akzeptierte Antwort:
Sie können diesen einen Liner verwenden, um zu tun, was Sie wollen:
$ pgrep script.bash && echo "already running" || ( ./script.bash & )
Beispiel
Angenommen, ich hätte dieses Skript:
$ cat script.bash
#!/bin/bash
echo "Hello World"
sleep 10
Wenn wir unseren Einzeiler verwenden:
$ pgrep script.bash && echo "already running" || ( ./script.bash & )
Hello World
$
Wir führen es erneut aus:
$ pgrep script.bash && echo "already running" || ( ./script.bash & )
10197
already running
$
10 Sekunden warten und erneut ausführen, es funktioniert wieder:
$ pgrep script.bash && echo "already running" || ( ./script.bash & )
Hello World
$