Zwei Skripte sollen nicht zeitgleich laufen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von drm, 04.12.2007.

  1. drm

    drm Eroberer

    Dabei seit:
    29.08.2006
    Beiträge:
    59
    Zustimmungen:
    0
    Hallo zusammen,

    ich habe zwei Skripte: script1.ksh und script2.ksh

    Diese beiden Skripte sollen nicht zeitgleich laufen. Beide Skripte sollten das jeweils gegenseitig prüfen. Wie kann ich das am besten realisieren?

    Ich habe schon überlegt das irgendwie mit ps zu machen, weiß aber nicht genau wie ich prüfen soll. Kann mir dabei jemand helfen? Ich nutze übrigens die ksh!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Du koenntest eine Art lock-Datei erzeugen, zum Beispiel in /tmp
    Am Anfang beider Skripte wird getestet, ob diese Datei vorhanden ist. Falls ja, endet das Skript, falls nein, wird die Datei angelegt (mit touch dateiname) und der Rest des Skriptes ausgefuehrt. Am Ende dieses Blockes muss die Datei dann wieder geloescht werden.
     
  4. drm

    drm Eroberer

    Dabei seit:
    29.08.2006
    Beiträge:
    59
    Zustimmungen:
    0
    @rikola: Ja, das wäre eine Möglichkeit an die ich noch gar nicht gedacht habe. Hört sich nicht schlecht an.

    Ist das wirklich die "schönste" Lösung, oder hat jemand noch eine weitere Alternative. Wie wäre es wenn man mit ps - u "user" schaut was gerade ausgeführt wird und darauf prüft? Was ist vom Stil besser?
     
  5. #4 2TAKTER, 04.12.2007
    2TAKTER

    2TAKTER Foren As

    Dabei seit:
    26.11.2007
    Beiträge:
    94
    Zustimmungen:
    0
    Ort:
    Würzburg (zugezogen)
    oder machst ein exit 0 bis exit 9 und lässt den rückgabewert dieses skripts vom jeweils anderen skript auslesen um zu wissen wie weiter zu verfahren ist.
     
  6. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Eigentlich ist keines der beiden schön, weil beide eine Race-Condition hervorrufen können. Die sauberere Idee ist jedoch die mit dem lock-File, welche am besten noch die Prozess-ID des anderen Prozesses beinhaltet. So kannst du auch prüfen, ob das andere Program nicht gecrasht ist (sprich PID nicht mehr im System bekannt).

    Wirklich sauber liesse sich das mit Semaphoren programmieren, jedoch weiss ich nicht, obs das für die Shell gibt (perl supported das meines Wissens).
     
  7. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Ist es vielleicht auch moeglich, beide Skripte zu einem zusammenzufassen und innerhalb des einen Skriptes die Bedingungen zu pruefen, welcher Teil denn laufen soll? Haengt natuerlich von Sinn und Zweck der beiden Skripte ab.
     
  8. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    @rikola: So, oder ein Wrapperscript, welches die Scripte aufruft wäre natürlich auch eine schöne Lösung.
     
  9. Ale-x

    Ale-x bash lehrling

    Dabei seit:
    13.04.2007
    Beiträge:
    109
    Zustimmungen:
    0
    Ort:
    Osnabrück
    mit ps würde es ja auch gehen

    wenn das script läuft dann kommt 2 zurück und wenn es nicht läuft 1
    ps user | grep -c "scriptname"
     
  10. caba_

    caba_ (caba{_,}|manuw)

    Dabei seit:
    07.08.2007
    Beiträge:
    334
    Zustimmungen:
    0
    Also sowas mach mich generell via "pidfile". allerdings lege ich die nicht in /tmp an weil /tmp automatisch geleert wird.
    Meistens benutz ich dafür ein unterordner bzw ein dot.ordner.
    Beispiel mein Backupscript legt am anfang eine Datei Namens "/home/manuel/.backups/backup.pid" an in der Datei auch die PID steht.

    Somit kann ich a) in auch in anderen Script prüfen ob gerade ein ein Backup gemacht wird, ist also das was du willst.
    und b) sehe ich auch wenn die datei nicht gelöscht wird das was nicht ganz ok sein kann.

    im prinzip machst du am anfang deines script einfach ein "touch /path/file" und am ende "rm /path/file"

    in allen anderen scripten kannst dann sowas wie
    Code:
    if [ -f "/path/file" ]; do echo "rennt..." ;done
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    /tmp wird üblicherweise nach einem Reboot geleert -> dann ist auch das Programm weg. Also eigentlich gar nicht so ungeeignet?

    Der wohl korrekte Pfad für ein PID-File ist, wenigstens unter Solaris, /var/run wenn ichs korrekt im Kopf habe.
     
  13. caba_

    caba_ (caba{_,}|manuw)

    Dabei seit:
    07.08.2007
    Beiträge:
    334
    Zustimmungen:
    0
    Naja, aber ich möchte eventuell nicht das die Pid nach einem reboot weg ist.
    Da ich so auch noch nach 2-3 reboots/oder spätestens nach den nächsten start des Programms feststellen kann ob das Programm vorgestern oder wann auch immer ordentlich beendet hat.

    /var/run ist richtig ja. Ich ich halte mich da in der Regel selten dran.
    meine Pid files liegen meistens im gleichen ordner wie programm oder in ~/.$programm
     
Thema:

Zwei Skripte sollen nicht zeitgleich laufen

Die Seite wird geladen...

Zwei Skripte sollen nicht zeitgleich laufen - Ähnliche Themen

  1. Systempartition um den Speicherplatz der zweiten Disk erweitern

    Systempartition um den Speicherplatz der zweiten Disk erweitern: Guten Tag liebe Leute Ich habe einen virtuellen Server mit 2 Disk a je 25GB. Nun möchte ich, das meine Hauptpartition um diese zusätzlichen 25GB...
  2. Zweite Systemd-Konferenz Ende September in Berlin

    Zweite Systemd-Konferenz Ende September in Berlin: Die Systemd-Konferenz Ende September in Berlin ist die zweite Konferenz zum System- und Service-Manager Systemd und liegt zeitlich kurz vor der...
  3. Zweite Vorschau auf Android N mit Vulkan-Unterstützung

    Zweite Vorschau auf Android N mit Vulkan-Unterstützung: Einen Monat nach der ersten hat Google eine zweite Vorschau auf die kommende Android-Version und zugehörige Werkzeuge vorgestellt. Neu sind in...
  4. Neuer Kernel-Zweig nur für Sicherheitskorrekturen

    Neuer Kernel-Zweig nur für Sicherheitskorrekturen: Sasha Levin von Oracle hat angekündigt, von den stabilen Kernel-Versionen eigene Versionen pflegen zu wollen, die bis auf Sicherheitskorrekturen...
  5. Red Hat überschreitet Umsatzmarke von zwei Milliarden

    Red Hat überschreitet Umsatzmarke von zwei Milliarden: Red Hat hat die Geschäftszahlen des Quartals vom Dezember 2015 bis Februar 2016 vorgelegt, das für den Linux-Distributor zugleich das Ende des...