Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Überwachen ob ein Skript läuft - ausgeführt als geplante Task unter Windows Server 2008

Frage Entwicklung Batch & Shell

Mitglied: icsat

icsat (Level 1) - Jetzt verbinden

28.05.2013 um 16:03 Uhr, 2420 Aufrufe, 5 Kommentare, 1 Danke

Hallo,

ich muss prüfen, ob eine ein Batch-Skript (cmd.exe) noch läuft.

Das Problem dabei ist, dass ich in einem Batch-Skript (skript1) ein Skript (skript2) eines SW-Herstellers aufrufe, welches sofort mit ERRORLEVEL=0 zurück kommt. Dieser ERRORLEVEL bezieht sich aber nur darauf, dass ein weitetres Skript (skript3) erfolgreich gestartet wurde
Ich muss nun in skript1 abwarten, dass skript3 beendet ist, bevor ich die Verarbeitung fortsetzten kann. (OK, eigentlich startet skript3 noch ein skript4 bevor es sich beendet und ich muss auf das Ende von skript4 warten aber ist hier nicht das Problem)

Bisher (Windows Server 2003) habe ich das ganze in der Form gelöst, dass ich über "tasklist" und den eindeutigen Fenstertitel des skript3 die ProzessID ermittelt habe und in bestimmten Intervallen diese PID abgefragt habe. Ist die PID nicht mehr vorhanden konnte ich meine Verarbeitung fortsetzen.

Nun habe ich das ganze nach Windows Server 2008 portiert und habe folgendes festgestellt.
Starte ich mein Skript per Doppelklick oder per Aufruf aus einer cmd funktioniert alles wie gewünscht.
Nutze ich hingegen eine geplante Task (bzw. at aus der cmd) steht mit "tasklist" der Fenstertitel nicht zur Verfügung.

Hat jemand eine Idee, wie ich das Problem lösen kann?

Die Skripte 2 und 3 kann bzw. will ich eigentlich nicht anpassen, da es sich um Skripte eines SW-Herstellers handelt und ich diese aus Support- und Wartungsgesichtspunkten nur ungerne anfasse.
Der Softwarehersteller weiss grundsätzlich darum, dass die Jobsteuerung an der Stelle nicht optimal gelöst ist, hat aber aktuell kein Interesse dies kurzfristig zu verändern.
Es muss sich also um eine Lösung handeln, die über skript1 abzubilden ist.


Falls jemandem nicht ganz klar ist, wass ich meine. Hier ist ein kleines Beispiel in 2 Skripten:

MeinTest.bat:
01.
start "MeinTest2" "C:\temp\meintest2.bat"
MeinTest2.bat:
01.
tasklist /V /FO TABLE|find "MeinTest2" >C:\temp\find.tasklist.log 
02.
tasklist /V /FO TABLE >C:\temp\all.tasklist.log
Starte ich "MeinTest.bat" direkt enthält die Datei "find.tasklist.log" eine Zeile und die Datei "all.tasklist.log" die gesamte Tasklist.
Starte ich "MeinTest.bat" als geplante Task über "at" ist die Datei "find.tasklist.log" leer und die Datei "all.tasklist.log" wieder die gesamte Tasklist, aus der sich dann "orakeln" lässt, dass ein "cmd.exe" Prozess zu "MeinTest2.bat" gehört.


Gruß icsAT
Mitglied: certifiedit.net
29.05.2013 um 11:03 Uhr
Hi,

ein möglicher Ansatz (ungetestet) wäre evtl, dass du Abfragst, ob der entsprechende geplante Task gerade aktiv ist und welchen Status er hat.

Grüße
Bitte warten ..
Mitglied: pieh-ejdsch
29.05.2013, aktualisiert 30.05.2013
moin,

Die Skripte 2 und 3 kann bzw. will ich eigentlich nicht anpassen, da es sich um Skripte eines SW-Herstellers handelt und ich diese aus Support- und Wartungsgesichtspunkten nur ungerne anfasse.
dann baue zu dem "auf das zu wartende Script" ein Gleichnamiges Script
01.
@echo off 
02.
call "D:\auf das zu wartendende Umbenannte Original Script" 
03.
waitfor /si ScripnameFertig 1>nul
das Original benennst Du Um.

Dein 1. Script startet normal Das 2. Script und Wartet auf die Meldung "ScripnameFertig"
01.
@echo off 
02.
setlocal 
03.
set "LOG=D:\Script 1_Log.txt" 
04.
call "D:\Script 1.cmd" || >&2 echo FEHLER! Script 3 konnte nicht gestartet werden. && >>"%log%" echo FEHLER! Script 3 konnte nicht gestartet werden. &&exit /b 1 
05.
>>"%log%" echo Script 3 wurde gestartet. 
06.
echo Script 3 wurde gestartet. 
07.
 
08.
 rem Warte auf SriptEnde  
09.
waitfor ScripnameFertig 
10.
 
11.
rem hier geht es nachher weiter.

Somit belässt Du Dein HerstellerScript und hast es nur Umbenannt.

Gruß Phil
Bitte warten ..
Mitglied: icsat
29.05.2013 um 11:54 Uhr
Hi certifiedit,

das funktioniert leider nicht oder ich habe dich falsch verstanden.

Mein Skript1 läuft als geplante Task. Wenn ich die Task abfragen würde wäre sie natürlich da und aktiv. Ich muss aber wissen was mit skript3 ist.

Gruß icsAT
Bitte warten ..
Mitglied: icsat
29.05.2013 um 12:05 Uhr
Hey Phil,

danke für den Ansatz. Waitfor war mir bisher nicht bekannt.
Liegt vermutlich daran, das mir die 2008 er Kiste gerade erst vor die Nase gestellt wurde
Werde mit dem Ansatz später mal etwas testen.

Gruß icsAT
Bitte warten ..
Mitglied: icsat
30.05.2013, aktualisiert um 09:41 Uhr
Moin Moin,

ich habe das Problem zwischenzeitlich gelöst.

Danke noch mal an Phil, dessen Ansatz mich dazu bewegt hat die Dinge noch einmal anders zu betrachten.

Ich hatte mich allerdings doch gegen "WAITFOR" entschieden, da ich auch noch einen 2003er Testserver habe auf dem "WAITFOR" natürlich nicht vorhanden ist und ich ganz gerne auf allen Systemen die gleichen Skripte laufen habe. Ich wollte es dann, angelehnt an Phil's Vorschlag, alternativ mit einer Datei lösen, deren vorhanden sein oder nicht vorhanden sein ich in skript1 abfrage.

Gelöst habe ich es dann aber doch noch wieder anders. Das hat aber eigentlich nichts mehr mit meiner Fragestellung zu tun.
Ich habe mir die Skripte des SW-Herstellers noch einmal genauer angesehen und festgestellt, dass skript3 sehr wohl auf skript4 warten kann, wenn bestimmte Umgebungsvariablen gesetzt sind. Schade, dass mir die Hersteller Hotline das nicht sagen konnte. Weiter habe ich festgestellt, dass skript2 "nur" prüft ob bestimmte Umgebungsvarieblen korrekt gesetzt sind und theoretisch mehrere Instanzen von skript3 startet. (Theoretisch, weil es bei uns immer nur eine ist).
Daher übergehe ich jetzt skript2 und starte skript3 direkt aus skript1 und warte auf dessen Beendigung, welche dank der gesetzten Umgebungsvariablen erst nach Beendigung von skript4 erfolgt.
Das ist zwar nicht im Sinne des Erfinders (Softwareherstellers) aber was solls.

Gruß icsAT
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...