[ksh] Deamon stoppen in scriptje

Pagina: 1
Acties:

  • Jazzy
  • Registratie: Juni 2000
  • Laatst online: 11:33

Jazzy

Moderator SSC/PB

Moooooh!

Topicstarter
Op een server heb ik een probleem dat na een bepaalde tijd gebruikers niet meer in een applicatie kunnen inloggen omdat er afgelopen sessies 'blijven hangen'. De software denkt dat het maximaal aantal gebruikers is ingelogd maar dat is dus niet het geval. Simpel op de lossen door de betreffende deamon even te killen en opnieuw op te starten. Uit sporen op het syteem maak ik op dat zoiets al eens eerder heeft gedraaid, met de brokstukjes probeer ik dit te reconstrueren.

Dit scriptje:
code:
1
kill -9 `ps -ef|grep licd|awk '{print $2}'`
zou de deamon licd6.1 moeten stoppen. Dat gaat volgens mij wel goed maar ik krijg de melding
code:
1
kill: 64712: 0403-003 The specified process does not exist.
Om dit te proberen te begrijpen heb ik het scriptje omgevormd tot
code:
1
echo `ps -ef|grep licd|awk '{print $2}'`
zodat ik kan kijken wat kill eigenlijk voor zijn kiezen krijgt. De output daarvan is
code:
1
38354 49192
De eerste is het bewuste processid, de tweede is waarschijnlijk het id van de ps -ef. Hoe kan ik dit nou zo maken dat alleen het goede proces wordt gekilled en hij niet probeert om de ps -ef ook te killen?

Edit: het mag duidelijk zijn dat shellscripting nieuw voor mij is. ;) Ik gebruik een kornshell onder AIX 4.3.3.

[ Voor 7% gewijzigd door Jazzy op 03-03-2004 16:14 ]

Exchange en Office 365 specialist. Mijn blog.


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
grep -v grep ?

Verwijderd

grep -v grep kan, maar is niet zo netjes. De truuk is om 1 karakter van je search string als een range op te geven mbv de []-kante haakjes, eg:
code:
1
ps -ef | grep [l]icd | awk '{print $2}' | xargs kill -9

[ Voor 14% gewijzigd door Verwijderd op 03-03-2004 16:19 ]


  • Jazzy
  • Registratie: Juni 2000
  • Laatst online: 11:33

Jazzy

Moderator SSC/PB

Moooooh!

Topicstarter
Verwijderd schreef op 03 maart 2004 @ 16:19:
grep -v grep kan, maar is niet zo netjes. De truuk is om 1 karakter van je search string als een range op te geven mbv de []-kante haakjes, eg:
code:
1
ps -ef | grep [l]icd | awk '{print $2}' | xargs kill -9
Dit werkt inderdaad, ik probeer te begrijpen wat er nu veranderd is aan het zoekpatroon. Als de reguliere expressie 'licd' is dan neemt hij alle regels waar hij die term in vindt. Maar de string 'grep licd' voldoet toch ook aan [l]icd?

Is er nog een speciale reden waarom je de volgorde van mijn opdracht omgooit mbv. xargs?
Tja, dit doet de truuk en zou voor mij ook volstaan. Het gaat me uiteindelijk om het resultaat, aan de andere kant ben ik wel nieuwschierig naar de gedachte achter het alternatief van r3boot.

[ Voor 22% gewijzigd door Jazzy op 03-03-2004 16:47 ]

Exchange en Office 365 specialist. Mijn blog.


Verwijderd

Jazzy schreef op 03 maart 2004 @ 16:46:
[...]
Dit werkt inderdaad, ik probeer te begrijpen wat er nu veranderd is aan het zoekpatroon. Als de reguliere expressie 'licd' is dan neemt hij alle regels waar hij die term in vindt. Maar de string 'grep licd' voldoet toch ook aan [l]icd?
De regex is idd niet verschillend, echter zal in een process listing grep [l]icd staan ipv grep licd, waardoor automatisch de regel met grep eruit gefiltert word.
Is er nog een speciale reden waarom je de volgorde van mijn opdracht omgooit mbv. xargs?
Scheelt je de resources van het starten van een extra shell. dmv van backticks "spawn" je een nieuwe shell waarin je het gewenste commando uitvoert;

  • Jazzy
  • Registratie: Juni 2000
  • Laatst online: 11:33

Jazzy

Moderator SSC/PB

Moooooh!

Topicstarter
Verwijderd schreef op 03 maart 2004 @ 17:20:
[...]

De regex is idd niet verschillend, echter zal in een process listing grep [l]icd staan ipv grep licd, waardoor automatisch de regel met grep eruit gefiltert word.
Ah, natuurlijk. Ik wist dat het iets logisch moest zijn.
Scheelt je de resources van het starten van een extra shell. dmv van backticks "spawn" je een nieuwe shell waarin je het gewenste commando uitvoert;
Okay, voor mijn miniscriptje wat 1 keer per nacht draait maakt het niet zoveel uit maar ik zal het onthouden voor als ik nog eens een megascript ga maken. ;)

Vriendelijk bedankt verder.

Exchange en Office 365 specialist. Mijn blog.

Pagina: 1