rc-scripts + *.init

Jacek Konieczny jajcus w pld.org.pl
Śro, 7 Maj 2003, 19:50:35 CEST


On Wed, May 07, 2003 at 06:01:17PM +0200, Paweł Gołaszewski wrote:
> On Mon, 5 May 2003, Jacek Konieczny wrote:
> > Mnie brakuje jeszcze jakiegoś sensownego odpalania usług, które same z
> > siebie nie przechodzą w tło, nie odczepiają sie od terminala, albo nie
> > zmieniają uprawnień. Teraz jest rzeźbienie z "setsid", "su", "&", a
> > efekt końcowy jest daleki od ideału.
> 
> Inna sprawa, że programy należy poprawiać, żeby robiły to jak należy...

Trudno opiekować się łatami do każdego takiego programu. Autorzy często
nie widzą potrzeby na takie poprawianie programów (nie przeszkadza im,
że usługa chodzi z uid=0, albo mają ją odpaloną przez supervise lub 
z inittab).


> > - podczepiał jego stdout/stderr do sysloga lub pliku
> 
> To nie jest często najlepszy pomysł. Wyjście z programów bywa w bardzo 
> dziwnej często postaci...
To byłaby opcja. Można też zrobić coś bardziej ogólnego - podpięcie pod
dowolny program/filtr (ale wolałbym uniknąć odpalania jakiegoś shella
przy tym).

> > Mógłby uruchamiać program z argv[0], aby jego nazwa zgadzała się z nazwą
> > uruchamianej obsługi (inaczej zdarzają się dziwne rzeczy).
> > 
> > Przykłady użycia dla pakietu janchor (zobaczcie jak jest teraz):
> > 
> > W %install pakietu (i oczywiście %files)
> > ln -sf /sbin/daemonize /etc/sysconfig/daemonize/janchor
> 
> Dlaczego akurat w ten sposób, a nie po prostu wywalołanie aplikacji?

Aby np. pidfile był kasowany po zakończeniu pracy demona demonize musiał
by działać do zakończenia pracy demona i to jego pid byłby w pidfile.
Wtedy "killproc demon" powinno zabijać daemonize i to właściwe
daemonize. Póki pidfile jest prawidłowy, to nie ma problemu, ale jak coś
się stanie z pidfile, to killproc mógłby zabijać niewłaściwe procesy, a
tak to po nazwie trafi na właściwy. Przynajmniej tak wychodzi z moich
doświadczeń z rzeźbieniem w *.init.

Jeśli założymy, że pidfile nie musi być kasowany (nie zawsze to jest
dobre założenie) i np. skasuje go skrypt *.init, to daemonize może się
zakończyć po uruchomieniu właściwych procesów i to rzeźbienie nie byłoby
już konieczne.

Pozdrowienia,
        Jacek



Więcej informacji o liście dyskusyjnej pld-devel-pl