[Gelöst]]Hilfe bei Skript mit Prozessen.
-
- Beiträge: 827
- Registriert: 26.05.2008 12:04:54
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Nörten-Hardenberg
-
Kontaktdaten:
[Gelöst]]Hilfe bei Skript mit Prozessen.
Hallo,
ich benötige ein kleines Skript um ein Problem zu lösen.
Leider bin ich im Scripting noch nicht tief drin und benötige deshalb Hilfe bei folgendem Problem.
Problem:
Ich brauche ein Skript was per ps prüft ob das Programm x läuft.
Dabei muss die Ausgabe von ps -aux geprüft werden ob sie per grep zwar den gesuchten Aufruf aber nicht den grep Aufruf enthält.
Dies bräuchte ich für ein kleines Programm, dass ich per Skript starten möchte was aber nur einmal und nicht mehrmal gestartet werden soll.
Dies soll auf scripting Ebene verhindern, dass man das Programm mehrmals hintereinander starten kann solange eine Instanz läuft.
Ich hatte auch schon daran gedacht, dass ich vielleicht mit einer art Prozess ID Datei arbeite.
Somit könnte ich beim starten auch so prüfen ob das Programm läuft.
Dies ist aber zu viel Aufwand mit zu viele Problemen verbunden.
Martin
ich benötige ein kleines Skript um ein Problem zu lösen.
Leider bin ich im Scripting noch nicht tief drin und benötige deshalb Hilfe bei folgendem Problem.
Problem:
Ich brauche ein Skript was per ps prüft ob das Programm x läuft.
Dabei muss die Ausgabe von ps -aux geprüft werden ob sie per grep zwar den gesuchten Aufruf aber nicht den grep Aufruf enthält.
Dies bräuchte ich für ein kleines Programm, dass ich per Skript starten möchte was aber nur einmal und nicht mehrmal gestartet werden soll.
Dies soll auf scripting Ebene verhindern, dass man das Programm mehrmals hintereinander starten kann solange eine Instanz läuft.
Ich hatte auch schon daran gedacht, dass ich vielleicht mit einer art Prozess ID Datei arbeite.
Somit könnte ich beim starten auch so prüfen ob das Programm läuft.
Dies ist aber zu viel Aufwand mit zu viele Problemen verbunden.
Martin
Zuletzt geändert von Milbret am 25.05.2010 10:09:51, insgesamt 1-mal geändert.
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever
Re: Hilfe bei Skript mit Prozessen.
Sowas kannst du erreichen indem du mit grep nach einer RegExp suchst die Metazeichen enthält die den Sinn nicht verändern. Dann passt die RegExp immer noch auf den gesuchten String aber nicht mehr auf sich selbst.Milbret hat geschrieben: Problem:
Ich brauche ein Skript was per ps prüft ob das Programm x läuft.
Dabei muss die Ausgabe von ps -aux geprüft werden ob sie per grep zwar den gesuchten Aufruf aber nicht den grep Aufruf enthält.
Mit diesen Informationen oder einer Websuche solltest du dieses gängige Problem in den Griff bekommen.
Ob das aber der beste Weg ist um dein eigentliches Problem zu lösen ist eine andere Frage.
Use ed once in a while!
-
- Beiträge: 827
- Registriert: 26.05.2008 12:04:54
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Nörten-Hardenberg
-
Kontaktdaten:
Re: Hilfe bei Skript mit Prozessen.
Hallo Meillo,
danke für den Hinweis.
Ich werde es mal testen.
Gibt es vielleicht eine bessere Lösung?
Das Scriptig hat dann eben den Nachteil, dass ich es für jede Plattform umsetzen muss.
Deshalb wäre eine Lösung in der Programmierung des Programms eben besser.
Aber die Lösung mit einer pid Datei wäre eben auch mit Nachteilen behaftet.
Oder ich muss dann entsprechende Hinweise aus geben wenn eine Datei vorhanden ist.
Dies wäre dann zwar für den Benutzer etwas umständlich aber trotzdem eine brauchbare Lösung.
Martin
danke für den Hinweis.
Ich werde es mal testen.
Gibt es vielleicht eine bessere Lösung?
Das Scriptig hat dann eben den Nachteil, dass ich es für jede Plattform umsetzen muss.
Deshalb wäre eine Lösung in der Programmierung des Programms eben besser.
Aber die Lösung mit einer pid Datei wäre eben auch mit Nachteilen behaftet.
Oder ich muss dann entsprechende Hinweise aus geben wenn eine Datei vorhanden ist.
Dies wäre dann zwar für den Benutzer etwas umständlich aber trotzdem eine brauchbare Lösung.
Martin
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever
Re: Hilfe bei Skript mit Prozessen.
Ich kenne mich auf dem Gebiet nicht gut aus, sehe nur, dass es unschön ist. (Es mag auch andere Prozesse mit gleichem Namen geben.)Milbret hat geschrieben: Gibt es vielleicht eine bessere Lösung?
Das Scriptig hat dann eben den Nachteil, dass ich es für jede Plattform umsetzen muss.
Deshalb wäre eine Lösung in der Programmierung des Programms eben besser.
Aber die Lösung mit einer pid Datei wäre eben auch mit Nachteilen behaftet.
Oder ich muss dann entsprechende Hinweise aus geben wenn eine Datei vorhanden ist.
Dies wäre dann zwar für den Benutzer etwas umständlich aber trotzdem eine brauchbare Lösung.
Es wird schon jemand anderen hier geben der dieses Problem auch schon hatte und dir weiterhelfen kann.
Use ed once in a while!
Re: Hilfe bei Skript mit Prozessen.
Habe mit so etwas auch keine Erfahrung...aber die meisten Programm legen doch in einer Datei ihre PID ab. Ist das bei dem Programm auch der Fall? Dann könntest du einfach prüfen, ob die Datei existiert oder nicht (so machen das die meisten Skript ja auch).
Gruß
Gruß
Re: Hilfe bei Skript mit Prozessen.
Wenn du ``Daemonen'' sagst, dann gebe ich dir recht. Diese werden aber von root gestartet und können in /var/run schreiben.michaels hat geschrieben:Habe mit so etwas auch keine Erfahrung...aber die meisten Programm legen doch in einer Datei ihre PID ab.
Use ed once in a while!
-
- Beiträge: 827
- Registriert: 26.05.2008 12:04:54
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Nörten-Hardenberg
-
Kontaktdaten:
Re: Hilfe bei Skript mit Prozessen.
Okay ich danke für euer Feedback.
Ich werde es erst einmal mit einem pid File versuchen.
Da als Programmiersprache Java genutzt wird und dort scheinbar die Proccess Klasse keine ID mitliefert, werde ich dort was basteln müssen.
Wenn dies mehr Probleme machen sollte, versuche ich es mit pgrep und prüfe ob der Einsatz Sinn macht, da ich möglichst viele Systeme unterstützen möchte.
Bei Windows müsste ich schauen ob die Batch Programmierung dort soviele Lösungen bietet wie aktuell Linux.
Ansonsten muss ich dort mit pid Dateien arbeiten.
Martin
Ich werde es erst einmal mit einem pid File versuchen.
Da als Programmiersprache Java genutzt wird und dort scheinbar die Proccess Klasse keine ID mitliefert, werde ich dort was basteln müssen.
Wenn dies mehr Probleme machen sollte, versuche ich es mit pgrep und prüfe ob der Einsatz Sinn macht, da ich möglichst viele Systeme unterstützen möchte.
Bei Windows müsste ich schauen ob die Batch Programmierung dort soviele Lösungen bietet wie aktuell Linux.
Ansonsten muss ich dort mit pid Dateien arbeiten.
Martin
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever
Re: Hilfe bei Skript mit Prozessen.
Bei meinen Java Programmen mache ich es folgendermaßen:
- Beim starten erstelle ich eine .lock Datei (in der Regel im Arbeitsverzeichnis meiner Anwendung. Man könnte da auch eine Temp Datei nehmen und dieser sagen, das sie bei einem Shutdown der JVM gelöscht werden soll)
- Bei jedem Start schaust du dann einfach nach, ob die Datei schon existiert...
(auf jeden Fall ist sie OS-unabhängig)
Die Lösung ist natürlich nicht 100%ig sicher, da es durch ein killen des Prozesses dazu kommen kann, das die Datei nicht gelöscht wurde.
Die pgrep Lösung ist für Java Anwendungen meistens nicht besonders schlau, da die meisten Java Anwendungen keinen eigenen Prozessnamen erstellen...also einfach nur "java" heißen...
edit:
In dem Zusammenhang ist vielleicht noch interesant:
Du könntest dir ja auch mal
(keine Ahnung ob das für dein Problem funktioniert)
- Beim starten erstelle ich eine .lock Datei (in der Regel im Arbeitsverzeichnis meiner Anwendung. Man könnte da auch eine Temp Datei nehmen und dieser sagen, das sie bei einem Shutdown der JVM gelöscht werden soll)
- Bei jedem Start schaust du dann einfach nach, ob die Datei schon existiert...
(auf jeden Fall ist sie OS-unabhängig)
Die Lösung ist natürlich nicht 100%ig sicher, da es durch ein killen des Prozesses dazu kommen kann, das die Datei nicht gelöscht wurde.
Die pgrep Lösung ist für Java Anwendungen meistens nicht besonders schlau, da die meisten Java Anwendungen keinen eigenen Prozessnamen erstellen...also einfach nur "java" heißen...
edit:
In dem Zusammenhang ist vielleicht noch interesant:
Code: Alles auswählen
Runtime.getRuntime().addShutdownHook( Thread....)
Code: Alles auswählen
Thread.currentThread().getId()
-
- Beiträge: 827
- Registriert: 26.05.2008 12:04:54
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Nörten-Hardenberg
-
Kontaktdaten:
Re: Hilfe bei Skript mit Prozessen.
Genau dies ist das Hauptproblem mit einer pid Datei Lösung.michaels hat geschrieben:Bei meinen Java Programmen mache ich es folgendermaßen:
- Beim starten erstelle ich eine .lock Datei (in der Regel im Arbeitsverzeichnis meiner Anwendung. Man könnte da auch eine Temp Datei nehmen und dieser sagen, das sie bei einem Shutdown der JVM gelöscht werden soll)
- Bei jedem Start schaust du dann einfach nach, ob die Datei schon existiert...
(auf jeden Fall ist sie OS-unabhängig)
Die Lösung ist natürlich nicht 100%ig sicher, da es durch ein killen des Prozesses dazu kommen kann, das die Datei nicht gelöscht wurde.
Die pgrep Lösung ist für Java Anwendungen meistens nicht besonders schlau, da die meisten Java Anwendungen keinen eigenen Prozessnamen erstellen...also einfach nur "java" heißen...
Aber eine .lock Datei wäre an sich das gleiche.
Ich denke aber, dass diese Lösung am meisten Sinn macht.
Ich werde dann nur eine entsprechende Meldung ausgeben, wenn die Datei bereits vorhanden ist.
Martin
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever