[OpenBSD] Proces in de gaten houden en evt. starten

Pagina: 1
Acties:
  • 119 views sinds 30-01-2008
  • Reageer

  • Surfer
  • Registratie: December 2001
  • Laatst online: 30-12-2025
Ik heb een OpenBSD 3.2 systeem met PoPToP en userland PPP (een proces dat VPNs regelt met thuisgebruikers). Het proces werkt bijna feilloos. Het enige is dat het proces (/usr/local/sbin/pptp) na het "ophangen" van een VPN nog wel eens zelf ook wil stoppen. Hij verdwijnt dan gewoon uit de ps lijst. Het probleem is dat ik niets kan vinden in logs of iets dergelijks dat ie gestopt is. En omdat het niet veel voor komt, kan ik er ook niet constant op letten.

Mijn vraag is: Is er een applicatie/progje/script/manier die op gevestigde tijden kan kijken of het proces nog draait, en actie onderneemt (zijnde het betreffende proces starten) op het moment dat het proces niet meer draait)?

“I'd give an arm to be ambidextrous!"


Verwijderd

code:
1
2
3
4
5
6
7
8
#!/bin/sh
while :; do
    PID="`ps ax | grep [p]ptp | awk '{print $1}'`"
    if [ x"${PID}" = x"" ]; then
        /usr/local/sbin/pptp
    fi
    sleep 3
done


En anders de daemontools van Dan Bernstein installen ;)

[ Voor 56% gewijzigd door Verwijderd op 28-04-2004 16:09 ]


Verwijderd

Waarom zo'n endless scriptje? Cron is veel makkelijker, gewoon elke minuut starten. :).

  • Emmeau
  • Registratie: Mei 2003
  • Niet online

Emmeau

All your UNIX are belong to us

deamon in /etc/inittab zetten met een respawn?

voorbeeldje: a1:2345:respawn:/usr/local/sbin/pptp 10
(ofzo, effe uit het hoofd, check de help voor syntax en details

If you choose to criticise you choose your enemies


Verwijderd

Verwijderd schreef op 28 april 2004 @ 16:23:
Waarom zo'n endless scriptje? Cron is veel makkelijker, gewoon elke minuut starten. :).
Daar heb je een punt, weet je dat ;) (ok, het gaat wel weer een syslog message genereren per uitvoer, maar het is idd netter dan while :; do sleep;done)

  • Surfer
  • Registratie: December 2001
  • Laatst online: 30-12-2025
OK, thanks voor de replies!

Ik heb het nu als volgt gedaan:


file "/etc/chkpptp/script" met als inhoud
code:
1
2
3
4
5
6
#!/bin/sh
    PID="`ps ax | grep pptpd | awk '{print $1}'`"
    if [ x"${PID}" = x"" ]; then
    date >> /etc/chkpptp/resetlogje
    /usr/local/sbin/pptpd
    fi


Dat werkt prima! Nu nog ff uitzoeken hoe cron ook al weer werkt... Nog weinig gebruik van gemaakt...

Thanks in ieder geval!

“I'd give an arm to be ambidextrous!"


  • Wilke
  • Registratie: December 2000
  • Laatst online: 23:50
De daemontools (die r3boot al noemt) zijn hier speciaal voor gemaakt, daar zou ik dus ook 'es naar kijken.

  • Surfer
  • Registratie: December 2001
  • Laatst online: 30-12-2025
Wilke schreef op 28 april 2004 @ 17:35:
De daemontools (die r3boot al noemt) zijn hier speciaal voor gemaakt, daar zou ik dus ook 'es naar kijken.
Ik zal morgen even kijken... Op zich vind ik het wel prima als dit script ook werkt, maar het is wellicht handig als er al een tool voor ontwikkeld is...

“I'd give an arm to be ambidextrous!"


Verwijderd

persoonlijk denk ik dat de daemontools een beetje overkill zijn voor wat jij wilt. Je moet voor daemontools een bepaalde directory structuur aanmaken, met een aantal scripten, en dat is niet triviaal en redelijk gedocumenteerd. Een script zoals bovenstaand (met enige aanpassingen, het is niet perfect) is wellicht een betere oplossing.

  • Surfer
  • Registratie: December 2001
  • Laatst online: 30-12-2025
Verwijderd schreef op 29 april 2004 @ 00:14:
persoonlijk denk ik dat de daemontools een beetje overkill zijn voor wat jij wilt. Je moet voor daemontools een bepaalde directory structuur aanmaken, met een aantal scripten, en dat is niet triviaal en redelijk gedocumenteerd. Een script zoals bovenstaand (met enige aanpassingen, het is niet perfect) is wellicht een betere oplossing.
Wat betreft dat script heb je in ieder geval gelijk. Je hebt me met je voorbeeldje een heel eind op weg geholpen, en het werkt op zich ook wel, maar er is nog één klein hobbeltje te overbruggen: Van de 10 keer dat je "ps -ax | grep [naam] " doet, komt er ongeveer 3 keer een proces "grep [naam]" bij te staan. Ik kan geen verband vinden wanneer die dat wel of niet doet, waarschijnlijk heeft het te maken met de tijd die het grep proces nodig heeft om te stoppen en weer te verdwijnen uit de ps lijst. Maar als dat "grep [naam] " proces dus wel in het lijstje staat, stapt het script over de if heen en doet niets :(

Kan ik dit ook afvangen in dit script denk je, of moet ik me gaan verdiepen in het daemontools verhaal (wat dus wel een beetje overkill is)...

“I'd give an arm to be ambidextrous!"


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

Spider.007

* Tetragrammaton

code:
1
PID="`ps ax | grep pptpd | grep -v grep |awk '{print $1}'`"
:)

---
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


  • MikeN
  • Registratie: April 2001
  • Laatst online: 20-02 17:03
code:
1
    PID="`ps ax | grep pptpd | awk '{print $1}'`"

veranderen in:
code:
1
    PID="`ps ax | grep pptpd | grep -v grep | awk '{print $1}'`"

? :p

[edit]
Spider :w :+

[ Voor 20% gewijzigd door MikeN op 29-04-2004 11:09 ]


  • Surfer
  • Registratie: December 2001
  • Laatst online: 30-12-2025
Wow, gelijk een second opinion :)

Super, hij werkt nu perfect! nu nog ff een beetje fiddelen met crontab en dan zijn we er.

Thanks :>

“I'd give an arm to be ambidextrous!"


  • Surfer
  • Registratie: December 2001
  • Laatst online: 30-12-2025
Heb crontab nu ook ok.

Maar hij doet het niet. Hij start het script wel:

Code uit /var/cron/log:
code:
1
Apr 29 05:32:01 klus CRON[18483]: (root) CMD (/etc/chkpptpd/script)


En hij voert het ook netjes uit, maar als het proces dus niet gestart is, en het script moet dus /usr/local/sbin/pptpd uitvoeren, gebeurd dat op een of andere manier niet. Handmatig het script draaien werkt het prima (dan ben ik wel ge-su'd naar root) en zo te zien aan de entry van cron/log draait die ook onder root.

Wat gaat er fout? Er komt ook geen entry in /var/log/messages van "te weinig rechten" ofzo

“I'd give an arm to be ambidextrous!"


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

Spider.007

* Tetragrammaton

background het pptpd proces direct na het opstarten? Heb je al geprobeerd om bijvoorbeeld de exitcode na het starten van dit proces naar een bestand te schrijven zodat je deze kunt analyseren? Verder kun je ook proberen of het werkt om alle paden naar alle executables voluit te schrijven. (dus /usr/bin/grep) Dit is namelijk het meest voorkomende probleem :)

---
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


  • Surfer
  • Registratie: December 2001
  • Laatst online: 30-12-2025
Spider.007 schreef op 29 april 2004 @ 13:01:
background het pptpd proces direct na het opstarten? Heb je al geprobeerd om bijvoorbeeld de exitcode na het starten van dit proces naar een bestand te schrijven zodat je deze kunt analyseren? Verder kun je ook proberen of het werkt om alle paden naar alle executables voluit te schrijven. (dus /usr/bin/grep) Dit is namelijk het meest voorkomende probleem :)
Ja, het pptpd proces background inderdaad automatisch. Hij staat dan ook zonder & in rc.local.

Ik heb in ieder geval alle paden naar grep, awk, date e.d. erin gezet. Deed het nog steeds niet.

Ik het kader van de voortgang heb ik nu in ieder geval het scriptje gewijzigd zodat het volgende er nu in staat:
code:
1
2
3
4
5
6
7
8
while :; do
    sleep 60
    PID="`/bin/ps ax | /usr/bin/grep pptpd | /usr/bin/grep -v grep | /usr/bin/awk '{print $1}'`"
    if [ x"${PID}" = x"" ]; then
    /bin/date >> /etc/chkvpn/resetlog
    /usr/local/sbin/pptpd
    fi
done


Deze staat nu als /etc/chkvpn/script& in rc.local

Dit heb ik getest en dat werkt goed. Later nog maar eens puzzelen waarom ie met cron niet werkt...

“I'd give an arm to be ambidextrous!"


Verwijderd

Verander
code:
1
/usr/local/sbin/pptpd

eens in
code:
1
/usr/local/sbin/pptpd >/een/pad/naar/log.file 2>&1

Dan zien we wat voor foutmelding pptpd mogelijk geeft.
Pagina: 1