Nowe posty

xx FirebirdSQL server w xinetd (1)
Wczoraj o 08:31:48
xx [SOLVED] Poczta Linux.pl (9)
2022-08-09, 15:09:29
xx Dostęp z komputerów z windowsem do plików udostępnionych na serwerze linux (samb (0)
2022-08-08, 20:27:55
xx brak uprawnienia do zamontowanej partycji ntfs - elementaryOS 6,1 (5)
2022-08-08, 06:36:07
xx Jak zainstalować sterowniki do karty sieciowej TP LINK WN350GD (1)
2022-08-04, 05:55:46
xx Ubuntu vs Fedora (1)
2022-07-26, 03:40:58
xx virtualization technology (1)
2022-07-25, 21:27:10
xx Migracja z centos 6 na centos 7 (3)
2022-07-25, 07:31:19
xx akonadi w KDE5 (10)
2022-07-22, 23:34:05
xx Alternatywa dla Delphi (7)
2022-07-22, 15:27:42

Autor Wątek: Nieaktualne pliki PID - jak kasować po crash'u ?  (Przeczytany 5105 razy)

sacrebis

  • Gość
Nieaktualne pliki PID - jak kasować po crash'u ?
« dnia: 2008-02-25, 17:08:35 »
Co usuwa "stale pides" po crash'u systemu ?

Nie mogę się niczego doszukać ani w init.d, ani jakiejś kontrenej informacji co się z tymi pid plikami powinno stać. Google też nie pomaga. Znalazłem programik stalepid - ale nie widzi mi się poprawiane wszystkich skryptów init.d.

Dlaczego mnie to boli:

Mam sobie kilka chroot'ow w których chodzą sobie apache, postgres'y,serwery pocztowe etc... Czasem zdarzy się jakaś awaria zasilania/wymuszony restart i moje usługi nie chcą wstawać.

Przyczyną jest, że skrypty etc/init.d/* sprawdzają czy są pliki pid - i jeśli są to proces nie wstaje. Restart usług (usuwa pida), więc rozwiązuje problem.

Oczywiście bez chroot'a wszystkie usługi wstają, tak jak należy.

Chodzi mi o jakiś taki ogólny przepis jak to powinno działać.

Czy ja mam ręcznie czyści /var/run ???

dystrybucja: SLES 9.x
a chroot to różne: kilka mieszańców, jeden PLD, jeden Ubuntu

benyo

  • Gość
Nieaktualne pliki PID - jak kasować po crash'u ?
« Odpowiedź #1 dnia: 2008-02-25, 18:24:00 »
Jesli twoja dystrybucja tego nie ma to sam sobie napisz taki skrypt albo dodaj linijke do poczatkowego skryptu uruchomieniowego, gdzie na samym poczatku po zamontowaniu dyskow
a wpis w skrypcie bylby prosty:

/bin/rm -f /var/run/* /var/lock/* /var/run/*.pid 1>/dev/null 2>/dev/null

w miejscu wymienionych sciezek dostepu do plikow wpisz swoje takie jakie potrzebujesz, te sa przykladowe i bedzie ci po kazdym uruchamianiu kasowal wszystkie niepotrzebne pliki zanim zaczna sie uruchamiac uslugi.

sacrebis

  • Gość
Nieaktualne pliki PID - jak kasować po crash'u ?
« Odpowiedź #2 dnia: 2008-02-25, 23:01:05 »
>> Jesli twoja dystrybucja tego nie ma to sam sobie napisz taki skrypt ...

ok, mogę zrobić ale chodzi mi o to czy jest jakieś RFC, jakiś poradnik, manual cokolwiek który nakazuje/zaleca/sugeruje aby PIDy w ten sposób obsługiwać ?

benyo

  • Gość
Nieaktualne pliki PID - jak kasować po crash'u ?
« Odpowiedź #3 dnia: 2008-02-26, 08:07:47 »
Cytat: sacrebis
ok, mogę zrobić ale chodzi mi o to czy jest jakieś RFC, jakiś poradnik, manual cokolwiek który nakazuje/zaleca/sugeruje aby PIDy w ten sposób obsługiwać ?
Na tym polega wlasnie idea Open Source ze mozesz to zrobic.
Mozesz poszukac w dokumentacji swojej dystrybucji ale pliki startowe w roznych dystrybucjach roznie wygladaja i sa zorganizowane i niektorzy tworcy zadbali o to zeby byl porzadek i nastepowalo czyszczenie zbednych lockow a niektorzy nie zadbali i trzeba sobie to zrobic samemu.

sacrebis

  • Gość
Nieaktualne pliki PID - jak kasować po crash'u ?
« Odpowiedź #4 dnia: 2008-02-26, 14:30:17 »
Cytat: zbysiup
Na tym polega wlasnie idea Open Source ze mozesz to zrobic.
ale chyba Open Source nie wyklucza stosowanie standardów, specyfikacji (np. LSB) ... albo jakiś chociaż zalecenia ?

Cytat: zbysiup
Mozesz poszukac w dokumentacji swojej dystrybucji
Po pierwsze mam wiele dystrybucji - więc dużo szukania, po drugie trochę szukałem i nic nie znalazłem - w takich momentach zazwyczaj przeszukuje init.d i probuje wykombinować jak to działa - ale jak już pisałem w init.d też pusto. Być może słabo szukałem, ale jak czegoś nie mogę znaleźć w ciągu 3 godzin to pytam na forum ... więc być może pytam na złym forum ;)

Chodzi mi tylko o to czy jak usunę przy starcie w ciemno wszystkie PIDy - to nie popsuje tychże usług - np. nie będą wstawać, nie będą logować czego trzeba, nie będą robiły recovery po własnej smierci etc....

Gdyby chodziło o kilka usług to bym sobie sprawdził - ale tego jest dużo: kilka serwerów http (apache + lighttpd), 2 exim, qmail, zope'y, svn, bazy danych i jeszcze kilka - nie widzi mi się modyfikacja każdej z osobna i sprawdzania - ... a z drugiej strony mamy opory przed użyciem "rm /var/run/*" przy każdym starcie. Dlatego, szukam czegoś, gdzie jasno napisane, że w /var/run mają być tylko pliki PIDów które można sobie kasować przy staracie - a aplikacje które się do tego nie stosują są ble i niech martwią się same.

Pamiętaj jest serwer produkcyjny - a to jest zmiana ogólno-systemowa - nie mogę o tak sobie testować i sprawdzać co się np. stanie z bazami danych jak np. nie będzie miała po kill'u swojego starego pida i czy np. zrobi recovery czy też nie (tu tak sobie fantazjuje :P)

btw. problem jest jeszcze taki, niektóre usługi w niektórych chroot'ach wstają jak należy (bo np. korzystają z deamon tools albo inaczej obsługują pidy) - nie wiem

benyo

  • Gość
Nieaktualne pliki PID - jak kasować po crash'u ?
« Odpowiedź #5 dnia: 2008-02-26, 15:34:23 »
Poczytaj wiec wiecej o powloce o procesach i o PIDach czyli identyfikatorach procesoru. Przy uruchamianiu kazdy proces (rowniez uslugi) otrzymuje nowy pid wiec nie ma problemu z kasowaniem starych i nie uzywanych.

Przy prawidlowym zamknieciu systemu zabijane sa wszystkie procesy a na koncu glowny proces init o PID = 1.

Zatem po przypadkowym wylaczeniu komputera np. w skutek awarii wszystkie procesy gina i nie sa do nich przypisane juz zadne PIDY, ponowny rozruch i tak powoduje przypisane nowego pida do nowego procesu. TO samo dotyczy restartu dowolnej uslugi.

I jeszcze jedno czyszczenie pidow musi sie odbyc zanim zaczniesz uruchamiac jakiekolwiek uslugi. a z /var/run usuwasz tylko pidy a nie wszystkie pliki i katalogi.
To tyle ode mnie. Pozdrawiam