tobo hat geschrieben: 13.06.2020 12:47:04
[...]
-Ist diese kill-Zeile im exit_script nicht überflüssig oder sogar kontraproduktiv?
ich bin für jegliche Vorschläge offen, aber wüsste nicht wie ich sonst aus einer Funktion heraus das ganze Skript beenden könnte - exit würde ja nur die Funktion beenden.
tobo hat geschrieben: 13.06.2020 12:47:04
-Das 2. Quoting ist dann praktisch der neue Inhalt von exit_script?
Nein, das ist eine Variante der letzten Zeilen meines Skriptes, die ein Programm starten sollen (das weiterläuft), die pid-Datei löschen und das Skript beenden sollen.
tobo hat geschrieben: 13.06.2020 12:47:04
-Wo schließt sich bei dir der Terminalemulator?
Er
soll sich am Ende schließen. Zuerst hatte ich es am Ende mit exec zum Start des Programms ($befehl) versucht, aber das beendet die Shell ja nicht normal sondern ersetzte die Shell sozusagen durch $befehl und das hat, zumindest beim Gnome-Terminal, zur Folge das das Terminal weiterläuft bis $befehl beendet wird.
tobo hat geschrieben: 13.06.2020 12:47:04
-Mit Ausgabe umleiten ist die Ausgabe von ${befehl} gemeint?
Ja, zum Beispiel funktioniert das hier im Prinip, aber erstellt mir aber wie gesagt die unerwünschte nohup,out
aber das hier funktioniert nicht mehr, sondern $befehl wird mit dem Ende des Skripts sofort wieder geschlossen:
tobo hat geschrieben: 13.06.2020 12:47:04
-Wenn ich jetzt z.B. so eine exit_script-Funktion habe:
Das versteh ich nicht auf Anhieb, das muss ich erst noch einmal durchdenken. Auf Anhieb ist mir das Killen von $PPID unklar, das ist ja der Eltern-/Vater/Mutterprozess vom Skript (keine Ahnung wer das ist, vielleicht gnome-terminal oder irgendein gnome-eigener Dämon falls ich mein Skript per hotkey aufrufe)?
flock sieht aber sehr praktisch aus. Das werde ich gleich versuchen und ich ahne, dass ich damit zumindest einen Großteil meines Problems automatisch los bin.
Edit:
Könnte mir vielleicht jemand dieses Beispiel von
https://blog.famzah.net/2013/07/31/usin ... -subshell/ erklären. Ich steige gleich bei der Zeile mit
exec {lock_fd}>... aus (der Rest wär kein Problem).
Code: Alles auswählen
#!/bin/bash
exec {lock_fd}>/var/lock/mylockfile || exit 1
flock -n "$lock_fd" || { echo "ERROR: flock() failed." >&2; exit 1; }
# ... commands executed under lock ...
flock -u "$lock_fd"