staging.inyokaproject.org

Reihenfolge im Shell Script

Status: Gelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

gnude

Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Hallo ich habe ein Shell Script mit dem ich mehrere eMail Konten Syncronisieren möchte. Dazu nutze ich das Tool "imapsync". Nun kann dieses Toll (beim gleichen Benutzer) nicht mehrfach gestartet werden. Genau das passiert aber wenn ich es per Shell Script aufrufe. Gibt es eine Möglichkeit die Befehle hintereinander zu starten, so das also der erste imapsync aufruf erst durchlaufen muss bevor er im Script mit den nächsten Parametern gestartet wird?

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

gnude schrieb:

[…] das Tool "imapsync" […] kann […] nicht mehrfach gestartet werden. Genau das passiert aber wenn ich es per Shell Script aufrufe.

Das ist ungewöhnlich. Normalerweise startet die Shell Programme im eigenen Prozess und erzeugt keinen neuen Prozess. Im Gegenteil: Man muss der Shell explizit sagen, wenn sie ein Programm per fork starten soll.

Vielleicht entscheidet sich jedoch imapsync selbst zu einem fork-Aufruf. Dann sollte aber dessen Dokumentation erklären, wie man das abstellt.

Aus Sicht der Shell ist das, was Du beabsichtigst, das Standardverhalten.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

gnude schrieb:

ich habe ein Shell Script mit dem ich mehrere eMail Konten Syncronisieren möchte. Dazu nutze ich das Tool "imapsync". Nun kann dieses Toll (beim gleichen Benutzer) nicht mehrfach gestartet werden. Genau das passiert aber wenn ich es per Shell Script aufrufe. Gibt es eine Möglichkeit die Befehle hintereinander zu starten, so das also der erste imapsync aufruf erst durchlaufen muss bevor er im Script mit den nächsten Parametern gestartet wird?

Du kannst recht einfach mit flock erreichen, dass Dein Skript nicht parallel ausgeführt wird:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/sh

# Vorbereitung, parallel

(
  flock 9
  # ab hier garantiert nicht parallel

  imapsync ...
) 9<"$0"

# Nachbereitung, parallel

Oder wolltest Du was anderes? Geht es darum, dass imapsync generell nicht zwei mal laufen kann oder dass es nicht zwei mal auf dasselbe Postfach zugreifen kann?

Antworten |