Toon posts:

linux pid

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo heren (en dames),

Ik zit met een klein probleem, misschien weten jullie er antwoord op :).
Is het mogelijk een proces, bijvoorbeeld ./blabla.sh te laten starten met een eigen in gestelde pid?

Wat linux nu doet is zelf een pid toewijzen, maar ik wil eigenlijk dat het pid-nummer het zelfde blijft elke keer als ik het proces zou killen en restarten :).

Iemand enige idee hoe ik dit kan doen?

Bedankt alvast!

  • alx
  • Registratie: Maart 2002
  • Niet online

alx

Volgens mij kun je niet (portable) een pid reserveren. Waarom wil je dit doen?

Als je het pid in een ander programma nodig hebt (bv om jouw proces te signalen) en het daar hard in wilt coden, kun je beter een scriptje maken dat z'n pid in een lock file in /tmp zet en dan jouw prog start met exec. De pid blijft hetzelfde na een exec en kan je dan dus vinden in de lock file.

Wellicht is het reserveren van een pid bruikbaar voor een proces dat z'n pid 1x pid opvraagt, het vervolgens onthoudt en steeds nodig heeft en (steeds) gemigreerd moet kunnen worden naar een ander systeem. Zo'n proces mag zich wel wat behulpzamer opstellen met zulke eisen. Maar dit lijkt me wat ver gezocht.

Dus wat is het doel?
(En waar heb je zelf al gezocht?)

[ Voor 5% gewijzigd door alx op 14-05-2006 01:11 ]


  • zomertje
  • Registratie: Januari 2000
  • Laatst online: 03-02 16:28

zomertje

Barisax knorretje

Of het proces opvragen en daaruit het pid vissen wanneer je het wil killen :)

(zoek eens naar ps, grep, cut)

[ Voor 19% gewijzigd door zomertje op 14-05-2006 08:37 ]

het ultieme jaargetijde.... | #!/usr/bin/girl | Art prints and fun


  • Wilke
  • Registratie: December 2000
  • Laatst online: 13:05
Verwijderd schreef op zondag 14 mei 2006 @ 00:46:
Hallo heren (en dames),

Ik zit met een klein probleem, misschien weten jullie er antwoord op :).
Is het mogelijk een proces, bijvoorbeeld ./blabla.sh te laten starten met een eigen in gestelde pid?
Nee.

Maar, als het je er om gaat het proces te killen vanuit een script, de variable '$!' bevat het process-id van het laatste in de background gestarte proces.

Dus zoiets:

code:
1
2
3
4
5
6
7
8
#/bin/sh

/pad/naar/blabla.sh
pid=$!

....

kill $pid


Moet werken.

Verwijderd

Topicstarter
Bedankt alvast voor de reacties! :).

Mijn doel is om een programma te laten lopen, en deze te laten monitoren of deze nog loopt.
Nu wou ik dus een cronjob aanmaken die kijkt of de pid nog bestaat, als deze niet bestaat moet hij het programma opnieuw starten. Echter, omdat linux dus zelf pid's beheert krijgt het programma telkens een andere pid. :).

Verwijderd

Dat gaat dus perfect met een klein shellscriptje of door alledaagse unix-tools te gebruiken zoals cut en grep.

Verwijderd

Kijk ook eens naar het commando pidof <programma>. Hiermee krijg je een lijst met pid's terug welke voldoen aan de programma naam die je hebt meegegeven.

Als je overigens wil controleren of een proces nog draait, is het aan te raden niet alleen naar het pid te kijken. Het is altijd mogelijk dat het proces wat je monitort is gestopt en een andere nieuw proces het betreffende pid toegewezen wordt. Als je dan alleen op pid controleert lijkt het alsof je proces nog draait terwijl dit een heel ander proces is. Controleer dus altijd op meerdere eigenschappen, zoals pid i.c.m. opstart commando.

[ Voor 61% gewijzigd door Verwijderd op 14-05-2006 15:22 ]

Pagina: 1