Toon posts:

[Windows/DOS]Herstarten van proces

Pagina: 1
Acties:

Verwijderd

Topicstarter
Nadat ik al de search heb gebruikt kwam ik bij dit topic uit:

herstart van programma na crash van dat programma

Alleen dit is ruim 2 jaar oud, dus ik mag geen nieuwe reply erop doen.
Het probleem bij dit script is dus dat wait.exe wordt ge-execute en dan word dus je volgende commando ingevoerd bij wait.exe en dan werkt die ps.exe dus niet meer.

Dus mijn vraag: hoe krijg ik het voor elkaar dat mijn executed programma niet opstart in wait.exe maar gewoon in cmd.exe

het klinkt beetje vreemd maar ja, hopelijk weet iemand de oplossing

POGING 2:

Het scriptje werkt gedeeltelijk, hij doet dus wait.exe starten, maar het commando ps.exe word opgestart in wait.exe, en het programma wat hij erna opstart, in het vorige geval dus die echo, die word dus ook gestart in wait.exe, dit heb ik gechecked dmv task manager, dus mijn vraag hierbij, hoe kan ik die ps.exe en mijn programma opstarten buiten om wait.exe heen

Volgorde van huidige script is: .bat word opgestart > wait.exe start > ps.exe word gestart in wait.exe > echo word uitgevoerd in wait.exe > wait.exe blijft draaien omdat hij terug verwijst naar begin van script.

Hopelijk nu wel duidelijk genoeg

[ Voor 35% gewijzigd door Verwijderd op 15-04-2004 10:49 ]


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

M4rkosoft, het klinkt inderdaad een beetje vreemd zoals je het nu omschrijft.
Het probleem bij dit script is dus dat wait.exe wordt ge-execute en dan word dus je volgende commando ingevoerd bij wait.exe en dan werkt die ps.exe dus niet meer.
Kun je even duidelijk proberen te omschrijven wat nu het probleem is? (Naast je referentie naar herstart van programma na crash van dat programma) :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Verwijderd

Markosoft als jij nou gewoon een keertje naar buiten gaat, met dit mooie weer. Inplaats van je ballen te breken over dit soort niet significante ballenbrekers!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Misschien kun je ter illustratie gewoon het script even posten :) Het gaat dus om ongeveer onderstaande constructie:

code:
1
2
3
4
wait.exe <argument>
ps.exe <argumenten>
echo <argumenten>
wait.exe start.bat
:?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Verwijderd

Topicstarter
Script waar het om gaat in dit geval:

code:
1
2
3
4
5
6
7
@echo off
:woei
wait 30
ps -b -pmstsc.exe > tmp.tmp
for /F %%i in (tmp.tmp) do if %%i==No "c:\progra~1\termin~1\mstsc.exe" test
del tmp.tmp
goto woei


Of iemand anders moet een ander idee hebben op het gebied van process restarts

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Een enkele wait is wel genoeg - scheelt tijd :)
Verwijderd schreef op 15 april 2004 @ 10:52:
Markosoft als jij nou gewoon een keertje naar buiten gaat, met dit mooie weer. Inplaats van je ballen te breken over dit soort niet significante ballenbrekers!
offtopic:
Ik ga er even vanuit dat jullie elkaar niet kennen: als je nu naar buiten gaat in plaats van dergelijke niet-nuttige trollerige posts te doen, hebben wij er geen last van ;)
(En als jullie elkaar wel kennen: bedenk dat het op deze manier heel vreemd leest aangezien er vele anderen meelezen die niet weten dat jullie elkaar kennen :* )


Anyway, hoe ziet het script er dus uit en wat lukt er precies niet?
"ps.exe word gestart in wait.exe" snap ik niet echt :)

Overigens kan hetzelfde ook in een VBSCript, dan heb je geen "DOS-scherm" in beeld. Kijken of een bepaald proces draait:
code:
1
2
3
4
5
for each process in GetObject("winmgmts:{impersonationLevel=impersonate}"). _
ExecQuery ("select * from Win32_Process")
  c = instr("notepad.exe",process.name) 
  if c > 0 then notepaddraait = true
next

En dan natuurlijk in een loopje zetten, verder afmaken en notepad weer starten als notepaddraait = false.

Maat als je geen VBScript kent zou ik bij een batch blijven als je niet het op je heupen krijgt en wat nieuws wilt gaan leren :P

edit: aha hij staat er al. Wat gaat er precies verkeerd dan? Lijkt niets mis mee.
AL zeg ik het zelf 8)7

[ Voor 5% gewijzigd door F_J_K op 15-04-2004 11:08 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

F_J_K schreef op 15 april 2004 @ 11:07:
offtopic:
Ik ga er even vanuit dat jullie elkaar niet kennen: als je nu naar buiten gaat in plaats van dergelijke niet-nuttige trollerige posts te doen, hebben wij er geen last van ;)
(En als jullie elkaar wel kennen: bedenk dat het op deze manier heel vreemd leest aangezien er vele anderen meelezen die niet weten dat jullie elkaar kennen :* )
Ik ken hem wel hoor :) was als geintje bedoeld :X
hihi 8)7

Verwijderd

Topicstarter
OK, ik kan de situatie ook wel ff hier schetsen:

Ik wil een Terminal maken, dit heb ik gedaan dmv een windows 2000 pro machine automatisch te laten inloggen, en daarna een terminal session te maken.
In die terminal session zeg ik dat ze maar 1 applicatie mogen gebruiken, dus zodra die word afgesloten sluit de session naar de TS weer.
Dit alles lukt natuurlijk wel, maar nu komt het punt, de gebuikers mogen nix anders doen dan die session gebruiken.
Dus ik had bedacht als je de shell nou eens verandert naar mstsc.exe ( client voor TS ) dan krijg je direct die session, maar dan kom ik bij het volgende punt, zodra die mstsc.exe gestopt wordt, dmv het stoppen van de applicatie, blijft de gebruiker achter met een blauw scherm, dat is niet de bedoeling.
De Terminal Session moet gewoon opnieuw opstarten dan.

Nu had ik dus bedacht shell te vervangen door dat scriptje, zodat ie gewoon checked of de TS session nog draait, zoniet start hem dan maar weer op.
Maar nu kwam dus het volgende punt aan de orde, die wait.exe gooit alles in de war.

Script doet dus volgende: wait.exe start > ps.exe start in wait.exe ( geen enkel idee waarom maar het gebeurt ) en dus ook mijn mstsc.exe word gestart in wait.exe

Als er iemand ander idee heeft, share het dan maar :)

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Set WshShell = WScript.CreateObject ( "WScript.Shell" )
proces = "mstsc.exe"
programma = "c:\progra~1\termin~1\mstsc.exe test"
WScript.Sleep 1000
draait = true
Do while draait = true
    draait = false
    for each process in GetObject("winmgmts:{impersonationLevel=impersonate}"). _
ExecQuery ("select * from Win32_Process")
        c = instr(proces,process.name) 
    if c > 0 then draait = true
    Next
WScript.Sleep 500
Loop

WshShell.Run programma

Dit start het maar een keertje opnieuw op --> test makkelijker met bijvoorbeeld notepad.exe ipv mstsc.exe. Je moet het dus alleen nog even in een oneindige loop zetten.

Maar waarom sluit je de sessie als dat programma niet meer draait? Kan je niet beter afdwingen dat het programma meteen weer start?

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Topicstarter
Ik heb het niet verzonnen helaas :P neej ze mogen nix anders dan dat programma gebruiken, en als je dat kiest dmv die Terminal Services Client, dan sluit TS de connectie wanneer je het programma afsluit.
Makkelijker zou idd zijn als je profile oid maakt voor die specifieke user maar ja ;)
Pagina: 1