Portál AbcLinuxu, 12. května 2025 05:36

Dotaz: Vytvoreni procesu s prirazenym PID

19.5.2010 18:58 Marena
Vytvoreni procesu s prirazenym PID
Přečteno: 303×
Odpovědět | Admin
Ahoj,

potreboval bych poradit. Potřeboval bych, aby se mi spustila alikace s urcitym PIDem. Jestli by se nasla nejaka duse, ktera by mi udelala mensi navod nebo poslat nejaky v cj/aj/nj. Chtel jsem udela kontrolu pres pidof jmeno, jenze ty aplikace se stejnym jmenem jsou spustene 2, jen maji jiny core a umisteni. Potreboval bych to dat do nejaky podminky, jakoze.
#!/bin/bash

if [ podminky ]; then
 echo "Server je jiz spusteni!"
else
 PODMINKA NA SPUSTENI VE SCREENU S PRIRAZENYM PIDEM
Asi bych si to predstavoval jako neco ve smyslu "screen -A -m -d -S `PRIKAZ`
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.5.2010 19:24 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Vytvoreni procesu s prirazenym PID
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pustit proces s určitým pid asi nepůjde, budete ty aplikace muset rozlišit jinak. Například podle parametru příkazové řádky, prostředí apod, lze to vyčíst z ps nebo /proc/<pid>/*. Nějak se ty aplikace nejspíš liší, tak se zamyslete čím a pak je podle toho rozlište v té vaší podmínce. Nejdříve si zjistěte pidof aplikace, a pak pro získané pids zjistěte, jestli je to ta co myslíte, nebo není.

(Nevím bohužel co myslíte tím "jiný core" a "jiné umístění"). Pokud třeba startovací adresář tak to by snad šlo také zjistit z prostředí.
19.5.2010 19:37 Marena
Rozbalit Rozbalit vše Re: Vytvoreni procesu s prirazenym PID
Jo jáá to tedy snad jasne upresním. :) Jedna se o World of Warcraft server, já potřebuji docílit toho, abych si udelal script na kontrolu spustene aplikace, pokud apliace neni zapnuta tak se spusti, pokud je zapnuta tak bude delay tak na 15sec, kde je cas na zrusení nebo pokracovani v prípade, ze je freez (záseknutí emulátoru). Tim core myslim prave ten emulátor. Server je zkompilovaný na stejný verzi a jako /bin pro spusteni je mangos-worldd jenze ten se kompiluje u vsech verzi, tudiz v ps, top je 2x mangos-worldd a pri kazdem restartu je prirazeno jiny PID. Tim jina cesta, myslim prave ten adresar, kde je prave ten mangos-worldd, ten je pokazdy jinde.

Ja potřebuju nejak docílit toho, abych si v te podmince nejak evidoval ten mangos-worldd ktery potrebuju (jestli to pujde podle cesty, byla by to parada. Ale ja jsem chtel vytvorit s urcitym PIDem kvuli prave podmince, aby bylo: if [ "$PODMINKA" == "2234" ]; then

Jenze, kdyz nebude urcity cislo, tak budu muset jeste popremyslet jak to tedy udelam. JA se psolehal prave na ten PID, ktery bych si eventuelne vytvoril.
19.5.2010 19:51 Ragzid | skóre: 24 | blog: Pivní koutek | Liberec-Brno
Rozbalit Rozbalit vše Re: Vytvoreni procesu s prirazenym PID
Staci trochu pohledat na MaNGOS foru. Neco podobneho jsem kdysi pouzival:
#!/bin/bash

MANGOSDIR=/home/mangos/server

if (ps -C mangos-worldd )
    then echo "status : OK"
else
        echo "status : DOWN" 
        cd ${MANGOSDIR}/bin
        
        screen -d -m -S session_name ${MANGOSDIR}/bin/mangos-worldd
fi
Obdobne i pro realmd, pokud take mrzne. A nakonec pridat zaznam do cronu aby to treba kazdou minutu kontroloval.
19.5.2010 20:19 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: Vytvoreni procesu s prirazenym PID
On tam má dva procesy téhož jména. (A to šachování se screen je proč přesně? Aby docílil toho, co dělá nohup? Nebo se ten server za běhu interaktivně ovládá a tak na to mám sezení, do kterého se mohu přihlásit?

Nicméně zpět k tazateli: když jste zmínil dvě různé cesty k binárce, tak to bude asi Vaše nejsnazší řešení. Když spustíte s plnou cestou a pak třeba i z ps to vylámete snadno (ps -o cmd).

Vaše konstrukce s podmínkou není problém, prostě si napíšete funkci bezi(identifikator_instance), která bude vracet true/false podle stavu dané instance a podmínka se podle toho zachová.

Pokud byste to mocí mermo chtěl řešit přes PID, musel byste si ho někam pro jednotlivé instance zapisovat při startu (zřejmě /var/run a pak s ním pracovat).

19.5.2010 20:35 Ragzid | skóre: 24 | blog: Pivní koutek | Liberec-Brno
Rozbalit Rozbalit vše Re: Vytvoreni procesu s prirazenym PID
screen se v tomhle pripade pouziva proto, ze ten deamon funguje zaroven jako konzole (neni nutna, ale casto se tak vyuziva).

Kazdopadne zapisovani PID po startu by melo byt v tomto pripade samozrejmosti.

Ale nerozumim tomu proc tam mangos-worldd bezi 2x, pokud na tom serveru jede jediny realm, tak neni duvod, aby tam ten proces byl vicekrat. Pokud je tak pojmenovan ten restartovaci skript, tak to je samozrejme chyba, ten by mel byt napr. mangos-restarter.sh.
20.5.2010 06:39 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Vytvoreni procesu s prirazenym PID
No a díval jste se už do toho /proc/<pid> obou procesů? Nenašel jste žádný rozdíl? Na pid se už vykašlete, tím "přiřadit asi nepude" jsem myslel "přiřadit určitě nepude".

nejak evidoval ten mangos-worldd ktery potrebuju

Jak jsem již řekl, zamyslete se a řekněte, jak rozlišujete vy ten magnos-worldd který potřebujete.

Server je zkompilovaný na stejný verzi a jako /bin pro spusteni je mangos-worldd jenze ten se kompiluje u vsech verzi, tudiz v ps, top je 2x mangos-worldd

Liší se tedy poloha binárky? Může pomoct /proc/<pid>/exe a podobně.

Josef Kufner avatar 20.5.2010 09:28 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Vytvoreni procesu s prirazenym PID
A nejsou to jen dvě vlákna?
Hello world ! Segmentation fault (core dumped)
19.5.2010 19:26 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: Vytvoreni procesu s prirazenym PID
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak to asi nedáte, tohle si řeší správa procesů jádra fork() žádné parametry nemá.

Krom toho, že i kdyby to šlo, tak by to byl problém, protože dané pid byste také musel být schopen rezervovat, aby je náhodou nedostalo něco jiného.

Asi na to budete muset jít jinak. Napadají mě dvě varianty:
http://prirucka.ujc.cas.cz/?ref=785&id=790.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.