Portál AbcLinuxu, 30. dubna 2025 11:20
žádný učený z nebe nespadl ;o)A kdyby ano, tak by se zabil :)
provokacna otazka: ako bude urychleny start apache, ak ho budem spustat z pythonu a nie zo shell-u ?
Asi myslel to, že sa apache bude spúšťať zároveň s mysql. Nechcem ani vidieť čo to spraví, ak budú na sebe závislé. Nakoniec ale predsa dostaneš prompt, ale keďže sa všetko ešte stále bude spúšťať, tak robiť nebudeš môcť nič. Viď Windows...Když budou na sobě dvě služby závislé, tak se současně spustit nemohou. A jestliže dáváte přednost tomu, aby se prompt objevil až když se vše nahodí, tak není problém - závislosti to zařídí.
init
. No, vela stastia. Prompt (konzolovy) ma na starosti prave tento programcek. Moze mat na starosti i spustanie xdm/gdm/kdm/*dm, to mi vsak pripada neprakticke.
aha, vy mate v umysle napisat v pythone program init
. No, vela stastia. Prompt (konzolovy) ma na starosti prave tento programcek. Moze mat na starosti i spustanie xdm/gdm/kdm/*dm, to mi vsak pripada neprakticke.
Ne, stávající init bych zezačátku nechal plavat a navíc existují alternativy. V něm úzké hrdlo nevidím. Možná, až opravdu nebude nudou co dělat...
/var
, vam nabehnu (alebo nenabehnu) vsetky sluzby, pid files, log files, atd sa otvoria na / particii (v adresari /var) a az potom sa primountuje fsck-nuty /var.
- potrebujeme interpreter, ulozeny (aj s kniznicami) na filesysteme / (/usr niektore distribucie mountuju pocas boot-u).
- potrebujem zarucit, ze syntax jazyka (a ani api pouzitych kniznic) sa nezmeni pocas zivota init skriptov. takze potrebuje dva pythony, jeden system (v /bin), druhy pre ostatnych userov (v /usr/bin), dvoje kniznice, systemove (/lib) a uzivatelske (/usr/lib). Zaroven nam to zabezpeci krasne bugy medzi verziami.
preco nie python (a ani perl, atd):Někde na disku ten interpret+příslušenství být musí. A je úplně jedno, jestli je to bash+sed+awk+find+fsck nebo Python+knihovna. Samozřejmě, že je to problém, ale je úplně stejný pro oba přístupy.- potrebujeme interpreter, ulozeny (aj s kniznicami) na filesysteme / (/usr niektore distribucie mountuju pocas boot-u).
- potrebujem zarucit, ze syntax jazyka (a ani api pouzitych kniznic) sa nezmeni pocas zivota init skriptov. takze potrebuje dva pythony, jeden system (v /bin), druhy pre ostatnych userov (v /usr/bin), dvoje kniznice, systemove (/lib) a uzivatelske (/usr/lib). Zaroven nam to zabezpeci krasne bugy medzi verziami.Totéž potřebujete zaručit i pro Bash a všechny externí programy (a jejich vstupy, výstupy a parametry), které se z něj spouští. V shellu bývá zvykem parsovat textový výstup z programů, přičemž ten nebývá _nikde_ specifikován. Cesty k programům jsou pokaždé jiné. Stačí napsat /sbin/ifconfig a na polovině systémů jsem ztracen. Různá GNU rozšíření také udělají své. Řekl bych, že Python je na tom nesrovnatelně lépe.
/etc/init.d/network restarta nikoli
service network restartAle to sem nepatří. A co se týče centralizace - musí přece existovat _jeden_ proces, který se postará o závislosti. Paralelní spouštění se bez tohoto neobejde. Leda by se příšerně hrkalo s diskem, což nechci.
Mno, myšlenka je to velmi chválihodná. S init skriptíkama jsem si také hrál. Sice nechápu, proč to musí být v pythonu (resp, co nabízí navíc proti bashu), ale proč ne.
Ale jako před každým velkým projektem je dobré si položit jednu otázku: má to vůbec smysl?
Tím chci ríct, že např rychlejší boot by mohl být až jako doplněk, rozhodně bych ho nedával na první místo. (Nebo bootujete každé 3 minuty?)
Pak by bylo dobrý udělat jednotný systém. Např Fedora má na to příkaz service, který nabízí přibližně to, co napsal autor blogu, ale třeba PID a zámky běžících služeb má na starosti initskrip dané služby. Tj. každý daemon to pak má jinde.
minimální práce s diskem během bootu
Tohle moc nechápu, to snad záleží na službách, které se spouští. Samotný PyInit toho stejně moc číst / zapisovat nebude.
-pokud to závislosti dovolí, login prompt na konzole bude dostupný i když se nějaká služba při bootu zakousne
Tomuhle bych dal PRIO=1
Ješte bych přidal runlevely.
rc:2345:wait:/etc/rc.d/rc.M
wait
za once
nieco podobne budete mat aj v ostatnych distribuciach
/etc/init.d
a /etc/conf.d
to byla paráda. Protipólem je potom CentOS se svým /etc/rc
a /etc/sysconfig
bordelem.
dalsie co by som uvital, je viacnasobne spustanie sluzby (s roznymi konfiguraciami, samozrejme).Priklad:
rc.httpd --service httpd-php4 start (config: /etc/httpd/httpd-php4.conf) rc.httpd --service httpd-php5 start (config: /etc/httpd/httpd-php5.conf)
Opravte mne, jestli se mýlím, ale není největším problémem stávajícího řešení to, že se při bootu volá na 30x bash? Python interpret se přeci startuje stejně (pomalu), co na tomto řešení bude lepšího?Mám v úmyslu pouštět interpret pythonu jednou jedinkrát. Není nejmenší důvod pouštět další, když mohu raději spustit další vlákno procesu. Zbytečně bych ztratil kontext. A budu-li chtít spustit další část kódu, tak prostě do stávajícího interpretu nahraju modul předkompilovaný do bajtkódu.
podla mna je najvacsi problem sucasnych rc skriptov ten, ze sa autori (debian/red hat/mandrake) snazia, aby vyzerali co najstrasnejsie.
v kazdom pripade, rychlost inicializacie ovplyvnuje jeden znak ... &
že se při bootu volá na 30x bash?
$time bash -c "exit" real 0m0.002s user 0m0.000s sys 0m0.000s
Řekl bych, že tohle nezdržuje
radsej 100x jeden nastroj, co robi svoju vec, a robi ju poriadne, ako 1 nastroj co robi 100 veci s bugmi
sietove: ipv4? ipv6? ipv8? ...Kdo se bojí závislostí, nesmí do lesa
rpc: xml-rpc nad https so zavislostami na libxml, libhttp, libssl, ... ?
radsej 100x jeden nastroj, co robi svoju vec, a robi ju poriadne, ako 1 nastroj co robi 100 veci s bugmiTohle je tak nesmyslné a otřepané klišé, že se nad tím už nikdo nezamýšlí. A co když _potřebuju_ udělat 100 různých věcí? Jak mám pospojovat ty jednoúčelové? Pajpou nebo raději funkčním voláním? A co je vlastně ten "nástroj", co dělá svou věc? Je to nějaký hotový program? Nebo knihovna? Nebo programovací jazyk?
Já bych naopak považoval za klišé tvrzení, že Unixovská filozofie přežila bez výrazných změn 30 let díky spiknutí vousatých ultrakonzervativních nerdů místo uznání, že prostě obstála v evoluci
init
(to je ten, co ma pid 1) a rc scriptami
(vami nazvane init skripty), co su skripty spustajuce sluzby.
#!/sbin/itype # This is a i file, used by initng parsed by install_service service system/swap { need = system/initial system/mountfs; exec start = /sbin/swapon -a; exec stop = /sbin/swapoff -a; }
zavislosti, timeouty, to nech si riesia sluzby samotne
zamky, thready, to v slusnom systeme ani nema co hladat
pridavanie/ubern
takze podme na zavislosti, ako si predstavujete riesenie? spolahnut sa na uzivatela alebo ich dynamicky vyratavat?
navrhnite riesenie a ja vam zadam problem na vyriesenie
priklad: ntpd. je jeho spustenie je finalna akcia neblokujuca ine sluzby?
Fajn. Máme na věci jiný názor a neshodneme se. Svou představu o tom, jaké vidím řešení, jsem popsal v blogu.Suhlasim s vasim nazorom ohladne sucasnej situacie, nesuhlasim s vasou vidinou riesenia. Zda sa mi, ze sa prilis zameriavate len na vam zname pouzitie (vasa distribucia/instalacia). Ako som uz pisal, kludne vam na odpoviem na otazky, kludne vas budem kritizovat (dufam ze konstruktivne)
A nechcete říct, že paralelní spouštění je blbost, že ne?to nie, ale nie je jednoznacne jasne, ktora sluzba (a kedy) je, alebo nie je ta posledna (t.j. ta, ktora sa da spustat paralelne).
jednoduchsie riesenie su urovne ... a tie napr vo ferodore su. Mozno by som skor rozmyslal nad sposobom, ako tieto urovne rozsirit (napr stromovo)
Nechápu co řešíte. Jediný požadavek, který v podstatě máte je to, aby se login objevil co nejdříve. Tak proč si ho sakra nedáte na začátek?No to jsem opravdu nerad, jestli z těch cílů, které jsem vymezil, vyplynulo pouze toto. Ale nevadí. Nechte to plavat. Z nějakých prapodivných důvodů jsme my dva většinou v opozici, takže z dalšího rozebírání stejně nic konstruktivního nevyplyne.
#!/bin/sh exec 2>&1 exec /usr/sbin/sshd -Drunit je spolehlivý a stabilní (pár řádků v C, ideálně slinkovaný s dietlibc...), služby spouští paralelně a řeší závislosti (geniálně jednoduše, viz dokumentace), služby monitoruje a případně restartuje, je možné služby ovládat příkazem sv (např. sv start sshd), ...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.