Ještě jsem se nesmířil, vadí mi, že porušuje "Keep it simple, stupid" a " doing one thing and doing it well", takové věci se rády vymstí v budoucnu ... ale taky se těším na další pokračování.
Nepobral jsem ale jednu věc: Píše se tam, že "konfigurační soubory – odpadá nutnost psaní redundantního kódu démonů", ale tak stejně musím psát kód pro ty cíle a jejich závislosti, takže buď to udělají maintaineři jak v systemd nebo v sysinituV nebo to v obou stejně udělám já?
Po 30 letech života systému přinese používání "Keep it simple, stupid" neoptimální granularitu systému, příliš mnoho jednoduchých prvků, které se svou funkcí překrývají nebo duplikují funkce jiných prvků, logickým evolučním a optimalizačním krokem je pak integrace služeb, která granularitu systému zoptimalizuje. Tedy systemd. Ten nějakou dobu poroste, až granularita se stane neoptimální a dojde k evolučnímu zvratu a návratu k "Keep it simple, stupid", a časem se celý cyklus bude zase opakovat.
Ano, možná. Ale zase na druhou stranu i jádro je blob, či black box, pro uživatele vyšších vrstev. sytemd vytváří topologicky protiváhu jádru, black box, přes který ovládáte služby systému. To, že to uživateli zůstává skryto, je evoluční výhoda, optimalizace granularity systému, protože v budoucnosti bude možnost měnit vnitřek tohoto blobu, aniž by bylo třeba měnit jeho komunikaci s okolím. Je možný i návrat zpět, když se do systemd v budoucnosti přidá vhodné API pro vyčlenění ovládání některých služeb do jiné části systému.
Stejným evolučním vývojem si prošly i programovací jazyky, od strojového kódu k Javě, která má vlastní virtuální počítač a vlastní instrukce, dnes už zase virtuální (JIT). I tento vývoj narážel na odpor části odborné veřejnosti. Časem možná systemd přeroste ve virtuální operační systém, s vlastními virtuálními službami, které bude realizovat přes funkce jádra, tak jak to dělá VM Javy.
Půjde pak udělat jednu věc, za běhu vyměnit operační systémy, aniž by bylo třeba měnit nastavení aplikací. Situace za pár let bude taková, že poběží miliardy IOT zařízení a bude třeba mít prostředky k automatizované aktualizaci jejich software, včetně operačního systému, situace kdy by nějaký admin vůbec věděl, kde mu co běží, ani nenastane, bude pracovat jen s datovou abstrakcí na úrovni systemd. Jednotným způsobem bude spravovat najednou miliony zařízení s různými operačními systémy, ale jednotným systemd (prakticky virtuálním OS).
Microsoft je už v tomto popředu s automatickou aktualizací W10.
Tak ona je to celkem otázka. Podle mě není "linux" tak oblíbený proto, protože se čeká až to bude stejný blob jako W -W10. A co se týká aktualizací - no to potěš, jestli budou jak na widlích ....
"Půjde pak udělat jednu věc, za běhu vyměnit operační systémy, aniž by bylo třeba měnit nastavení aplikací"
A čemu? Jádro bude celkem stejné a zbytek spolyká systemd
No protože budete mít ten OS někde v těžebním stroji na asteroidu vzdáleném miliony kilometrů od Země a životnost toho stroje bude několik desítek let, vzhledem k nutné údržbě bude neúnosné mít v provozu mnoho verzí operačních systémů na strojích různých generací.
To samé třeba v autonomních automobilech zde na Zemi. Bude neúnosné spravovat sw automobilů na dálku s tím, že budou v provozu modely za 20 let s různými verzemi OS. A předpisy se pro ně budou měnit co půl roku, jak známe byrokracii.
Nevím jestli vzdálenost hraje roli na úspěch aktualizace systému, teda krom výpadku, ale to ani systemd nevyřeší. Ale jinak to vypadá s tím Marsem poutavěji.
A když se vám systemd mění pod rukama tak za 20 let to bude únosné? A když se změní 2 požadavky byrokracie jak píšete, tak bude lepší updavovat blob systemd, nebo kdyby byl napsán modulárně, tak jenom modul nebo 2 a ty sestémy, které by tyto části ani nepotřebovali->neměly, by riziko aktualizace ani nepostihlo?
Pro aplikace se nic nemění, pokud je spouštíte stejným příkazem a dáváte jim stejné parametry, případně za běhu. Odkud to leze je jedno. Pokud se to rozbije v systemd, tak je to stejné jako by se to rozbilo v jiném init. BUď služba dostane co potřebuje a nebo ne.
Android nedospěl ani tak k oknům, jako k fragmentům. Ovšem na Androidu mohou běžet aplikace s Fragmenty nebo jen s Aktivitami. Na distribuci se systemd už některé appky neběží bez kompatibility se systemd, tedy stejně, jako se zavedením fragment už by nešly spustit některé aplikace jen s aktivitami
Budete mít možnost volby, zda bezbolestně změnit os a systemd s tím, že pro aplikace se nic jakoby nezmění, a nebo vyměnit aplikace.
Aha. To jako za dvacet let bude v OS porad uplne stejny format binarek a urcite i uplne stejne verze knihoven, aby se to nemuselo rekompilovat. Nebo budeme vsichni mit pocitace narvane jadry a RAM do takove miry, ze to vse pojede v interpretovanem jazyce nebo s nejakym just in time kompilatorem?
To samé třeba v autonomních automobilech zde na Zemi. Bude neúnosné spravovat sw automobilů na dálku s tím, že budou v provozu modely za 20 let s různými verzemi OS. A předpisy se pro ně budou měnit co půl roku, jak známe byrokracii.
To chci videt. OS v novych autech bude desetkrat tak velky, nez ten v tech 20 let starych. A nebude tam ani pamet na ulozeni novych predpisu. Ono se staci podivat, jak do rok stareho telefonu uz nejde narvat novejsi verzi OS a poku jde, tak jen pokud ma clovek obzvlaste pevne nervy, aby vydrzel nekolikaminutovou odezvu, protoze tomu "staremu" telefonu schazi 8 jader a 64 GB RAM, aby to utahl.
Proč by měl jakýsi nedefinovaný "zbytek" polykat systemd? Ten spolkne jen to, co umožní spuštění vyžádaných a nezbytných systémových aplikací. Zásadní otázkou je udržet objem těch systémově nezbytných v omezení nedovolující b(l)obtnání. V archu si mohu nastavit vše, co chci a považuji to za rozumné i s ohledem na systém.
Kontrolní otázka: kolik vám doma běží různých operačních systémů? Nápověda: jeden v TV, další v každém monitoru, mobilu, tabletu, počítači, routeru ... Takže už dnes je to desítky různých OS a jejich verzí. Dnes prakticky je nikdo nespravuje, ale to se s IOT bude muset změnit, bude to mnohem dynamičtější infrastruktura.
Opravdu nevim, proc by nekdo zacal vydavat updaty jen proto, ze mame IoT. Updatuje se prece koupi nove televize nebo mixeru a nez se koupi updatuje, bude lednicka v botnetu A, zachodove splachovadlo v botnetu B a mycka na nadobi v A a C. Nejhorsi bude pracka, protoze ta bude napadena malware, ktery pri programu na prani vlny a pri prani pri nizkych teplotach nastavi 90°C. Vyrobcum to bude jedno, protoze podpora konci mesic po zaruce.
No nevím k čemu by komu bylo více než 640 kB paměti :-) IOT se nebuduje jako informační síť konzumentů, ale producentů.
Budou vznikat problémy jako to, že ve skladech nebude dost kávy, protože kávovary špatně odhadly budoucí spotřebu kvůli chybě OS, nebo co by bylo daleko horší, že se kávy vypěstuje více, než se prodá a cena kávy klesne a dojde k velkým finančním ztrátám.
Budoucí kávovary budou vytvářet specifické chutě kávy (frakční destilací polosyntetické, nebo geneticky upravené kávy, přimícháním horkého vzduchu do páry), které budou přesně odpovídat chuti majitele kávovaru, aniž by si to on uvědomoval. Kávovar na základě evolučního algoritmu sám zjistí, jaká káva jeho uživateli chutná, což pozná podle četnosti vaření kávy :-)))
No on už to není jen init, ale i řízení služeb, tedy skutečně systemd přebírá funkci os, plánování zpracování úloh. Je tedy šance vytvořit jednotné rozhraní pro správu úloh nezávislou na os a verzi. Bude možné na základě toho efektivně a dynamicky řídit zpracování ve vzniklém distribuovaném systému, což může být na základě vlastní zkušenosti daného zařízení a nebo díky signálům přicházejícím po síti, tak aby v daném okamžiku běžely jen potřebné služby. Celý distribuovaný systém bude žít vlastním životem, jako nějaký komplexní organismus. Nebude v něm místo pro adminy. Řízení výkonu a jeho optimalizace půjde automatizovat.
Příklad: serverovna se sama přizpůsobí aktuálnímu výkonu, bez toho, že by nějací admini naskriptovali chování jednotlivých serverů. Což povede k úsporám energie, zvýšení výkonu, zvýšení odolnosti proti útokům, serverovna se bude moci sama učit, jak se přizpůsobit požadovanému výkonu. Admini maximálně budou psát šablony strategií chování pro zvláštní situace.
Ale proti tomu já nic nemám, naopak. To je podle mě správný systémový přístup. Jde ale o to, že dnes už nějaký systém je a ta Vámi popisovaná vrstva, která má přinášet tu abstrakci (systemd) je abstraktní jenom pro ty systémy, které místo abstrakce mají na systemd závislost. Jinými slovy, na jádru být abstraktní musí nebo jdou do háje a na softwaru nad už jen vytvářejí závislost. Jak bych to napsal? Tam není abstrakce (zjednodušeně) jádro + init (nějaký) + software, nýbrž jádro+ systemd + software na systemd závislý. A co pak je ta feature? Že můžu vyměnit i jádro? To můžu i dnes. Systemd nevyměním. tak v čem je ta možnost změny?
Můžu se zeptat, kdy ti naposledy doktor kontroloval dávkování prášků?
Init nespoučtí tasky, nepřiděluje systémový čas, nic. Ten se stará o to, že když proces A potřebuje využívat službu B, služba B poběží a bude správně konfigurovaná. To, jestli daemon alokuje 100kB nebo 100MB dat, jestli běží interně v jedno nebo 128 vláknech, to ani nepotřebuje, ani nesmí, vědět. A je zodpovědný za to, že pokud chce uživatel nějakou kombinaci modulů (web server + Wayland + Gnome), pozapíná včechno, co je k této konfiguraci potřeba.
No a pokud uživatel nepoužívá web server + Wayland + Gnome v době od 3:00 - 5:00 v noci často, měl by to systém sám poznat a službu vypnout. Tedy jakási funkce inteligentního OS, správa prostředků na vyšší úrovni. A takového budoucího chování je systemd předobrazem a nebo ho v budoucnosti alespoň umožní. Svými funkcemi se tak bude blížit OS. Bude spravovat systém z hlediska vnějších požadavků, základní OS pak z hlediska možností přidělování zdrojů.
Z logiky věci plyne, že tyto funkce je vhodné rozdělit. Ostatně v hlavě to máte taky tak, základní OS - podvědomí řídí činnost vašeho organismu, přiděluje například kyslík jednotlivým orgánům, a vědomí (systemd) určuje, co s tím organismem podniknete :-)))
Ostatně v hlavě to máte taky tak, základní OS - podvědomí řídí činnost vašeho organismu, přiděluje například kyslík jednotlivým orgánům, a vědomí (systemd) určuje, co s tím organismem podniknete :-)))
Kdyby pridelovani kysliku ridilo podvedomi, asi bychom se prilis vysokeho veku nedozili. Pokud systemd ma byt jakymsi podvedomim OS, tak to s Linuxem vidim blede, protoze prave podvedomi je zodpovedne za hafo problemu, kterymi lidmi trpi.
". Ostatně v hlavě to máte taky tak, základní OS - podvědomí řídí činnost vašeho organismu, přiděluje například kyslík jednotlivým orgánům, a vědomí (systemd) určuje, co s tím organismem podniknete :-)))"
Tak to není. Podvědomí člověka určuje všechno a už je dokonce dokázané, že rozhodnutí které zdánlivě dělá člověk, je několik (asi) milisekund před tím nadiktováno podvědomím.
"No a pokud uživatel nepoužívá web server + Wayland + Gnome v době od 3:00 - 5:00 v noci často, měl by to systém sám poznat a službu vypnout"
:-D Noční můra. Jen taková situace, řekněme, že by mi server startoval 2s, tak když v té noci mi tam budou chodit lidi po 10 minutách, tak každému začne odezva startem serveru?
Podvědomí člověka určuje všechno a už je dokonce dokázané, že rozhodnutí které zdánlivě dělá člověk, je několik (asi) milisekund před tím nadiktováno podvědomím.
Není to dokázané. To jsou pouze závěry lidí, kteří jsou bohužel více filozofové a humanisté než přírodovědci. To je totéž, jako kdybych za vznik události považoval dobu, kdy se informace objeví na monitoru a potom bych byl velmi překvapen, že se ještě před tím cosi děje (dekódování obrazové informace v monitoru, zápis do framebufferu na grafickou kartu, zavolání printf, potom přijde někdo nový a za vznik myšlenky označí právě to volání printf a je opět překvapen, že tomu printf něco předchází. Přitom to větvení, které v konečném důsledku vede až k tomu výpisu na monitoru mohlo dojít někdy miliony instrukcí před tím. A často ani to větvení nelze označit za vznik myšlenky.
Je jedno video (asi na matfyzu), kde nějaký filozof vypráví o času a důsledky pro vědomí, důsledky pro současnost apod. sem tam se opírá o závěry vědy. V diskusi na konci ho přítomní kvantový a relativističtí fyzici trochu uzemní s tím, že ty koncepty, na kterých on vystavěl svou přednášku vůbec nelze vykládat takto.
V těchto věcech je nutná spolupráce mezi mnoha obory a to, že jeden signál na eeg předchází jiný signál ještě neznamená nic o kauzalitě. Navíc se to komplikuje tím, že mozek umí události posunout do minulosti (např. známý efekt, když otočíte hlavou a podíváte se hodiny - někdy máte dojem, že první sekunda trvá o dost déle, než další - je to způsobeno tím, že mozek zpětně nahradil "rozmazaný obraz" během otáčení hlavy prvním "snímkem" hodin). Motion blur očí ve skutečnosti vůbec nevnímáme. (Ne že by to nešlo, ale je třeba se aktivně na to soustředit.)
Tak nevím, já to četl jako prokázané. Zdůvodňovali to tím, že mozek impuls upraví tak, jak má zafixováno podvědomě a z toho se tvoří vědomí. Jedno je jisté. Z křišťálové koule to neleze a mozek, resp. podvědomí, je tvořeno nastavením neuronů a z toho taky vylézají vědomé myšlenky, takže z čeho by to pak pocházelo než z individuálního nastavení mozku? Z nastavení krku? Nebo levé nohy?
" V diskusi na konci ho přítomní kvantový a relativističtí fyzici trochu uzemní s tím, že ty koncepty, na kterých on vystavěl svou přednášku vůbec nelze vykládat takto."
No, oni se totiž hádají vědci i mezi sebou a trochu to souvisí i s kvantovou fyzikou. Zde už bych se ale pouštěl na tenčí led. Jak přesně interpretovat zákony kvantové fyziky nevím. Četl jsem, pochopil jsem ale to je tak vše.
Zdůvodňovali to tím, že mozek impuls upraví tak, jak má zafixováno podvědomě a z toho se tvoří vědomí. Jedno je jisté. Z křišťálové koule to neleze a mozek, resp. podvědomí, je tvořeno nastavením neuronů a z toho taky vylézají vědomé myšlenky, takže z čeho by to pak pocházelo než z individuálního nastavení mozku?
No to jo, ale slyšel jsem interpretace, že to znamená, že člověk nemá svobodnou vůli, protože se myšlenka tvoří ještě dřív, než si to člověk uvědomí. To je nesmysl, protože i to "uvědomování si" nutně vyžaduje aktivitu neuronů a tedy začíná ještě před tím, než si to člověk uvědomí. Na to není nic divného a překvapilo mě, jak si to někteří lidé vykládají. Prostě to, že se na eeg objeví aktivita 200ms před tím, než si něco uvědomím, to neznamená, že mi to nařídilo podvědomí a já jsem jen jeho otrokem. Je spíš otázkou, zda tyto pojmy mají vůbec nějaký smysl, případně jak je vůbec definovat.
" protože se myšlenka tvoří ještě dřív, než si to člověk uvědomí"
No, já si to tak vykládám, ale spíš tak, že se
1. aktuální rozpoložení (situace, nálada ....) +
2. požadavek na akci (tedy cokoliv vyžadující vůli)
zkombinují a prožene se to podvědomím tvořeným
3. podvědomím (vypěstovaném životním prostředím a životem v něm) a taky
4. přes dědičné podvědomí a pak z toho "vyleze" nějaké vědomí
Takto nějak jsem to z textu pochopi
rumpkernel a je obslouzen v radu milisekund http://www.skjegstad.com/blog/2015/08/17/jitsu-v02/ nebo treba http://erlangonxen.org/ (tam demo)
V nicem z toho se pochopitelne s necim takovym obrovskym, nenazranym a komplexnim jako je systemd nebo Windows 10 IoT nepocita.
Ne. Pokud mám dnes Debian + Gnome a odinstaluji systemd, tak můžu nainstalovat co chci a nepojede to kvůli systemd-logind. Musím mít script, který napsali v Gnome pro Ubuntu aby to jelo. Takže máme systemd, který lze vyměnit, ale není za co, aby to fungovalo,
Jiinými slovy: systemd můžete vyměnit pouze pokud zachováte rozhraní systemd. To je trošku non-sence
Jo, to jsou dobré otázky. Ale fakt nad tím uvažuju už asi měsíc, protože hned jak se k tomu dostanu, budu přecházet na Gentoo hlavně kvůli tomu, že budu muset na serverech. Uhnízdil jsem se na Debianu a teď tohle. Nejsem si ale jistý, jestli bych to forkoval, abych si zanesl závislosti ze systemd a pak je musel kroutit a dodržovat, kdyby to pak jinak nešlo, jestli by nebylo lepší začít od začátku a hezky část po částech začít od initu a pak přidávat další moduly aby to nebylo tak zadrátované a fungovaly tak nějak samostatně. Fakt nad tím přemýšlím
"Jiinými slovy: systemd můžete vyměnit pouze pokud zachováte rozhraní systemd. To je trošku non-sence"
Fakt? Koupil jsem si nový auto. Furt má tři pedály, volant a šaltpáku. Prostě stejný driver interface pro ovládání směru a rychlosti. Přitom je od jinýho výrobce a podstatně novější. To je trošku non-sense, ne?
"Takže máme systemd, který lze vyměnit, ale není za co, aby to fungovalo"
Takže ono se nedá forknout systemd, seknout API a znovu to rozkouskovat? Myslel jsem, že systemd je pod nějakou formou GPL. Kdyby kritici využili energii, kterou vynakládají na kritiku systemd a na osobní ataky na Poeteringa k tvorbě lepšího initu, tak si systemd neškrtne.
Koupil jsem si nový auto. Furt má tři pedály, volant a šaltpáku.
Auto se systemd ma pedalu devet, saltpaku nema, misto volantu ma dvoje riditka, z nichz kazde ovlada jedno kolo. Radi to samo a pedaly se mackaji vzdy dva az tri najednou. To muze byt dost problem, protoze vetsina lidi ma jen dve nohy.
To jako vážně myslíš že mám čas 3 roky něco předělávat po teamu lidí, kteří na tom soustavně makají? To si zrovna do toho tvého auta můžeš odlít nový motor až se ti pokazí, takový fork.
"Fakt? Koupil jsem si nový auto. Furt má tři pedály, volant a šaltpáku. Prostě stejný driver interface pro ovládání směru a rychlosti. Přitom je od jinýho výrobce a podstatně novější. To je trošku non-sense, ne?"
Jo? A když teď na debianu 8 odiinstaluji gnome a vrátím tam init tak to spustím? Neboli když sednu třeba za "automat" tak má stejný interface? nebo když vezmeš pedály z ferari tak ti sednou do felicie? Tady padá ten "systemd" interface
Kdyby kritici využili energii, kterou vynakládají na kritiku systemd a na osobní ataky na Poeteringa k tvorbě lepšího initu, tak si systemd neškrtne.
Tenhle argument slýchám už dlouho, když se vám to nelíbí, tak si napište lepší init. No, co tahle třeba zachovat možnost použít původní sysv / upstart / cokoliv? Myslím, že by spousta lidí neměla se systemd takový problém, kdyby měla možnost jej prostě nepoužívat. Nebo si jej používat tam, kde chtějí. Jak vypadala diskuse v Debianu, kdy někteří chtěli zachovat možnost volby init systému, všichni víme.
No však jo. Ti co remcali mohli klidně začít makat na podporování původního initu. Je to hromada práce kterou ovšem nikdo nechtěl dělat, vývojáři z Debianu raději chtěli věnovat úsilí lepší podpoře systemd. Stejné to bylo ve Fedoře.
Jak vypadají diskuze na devel listech distribucí často vidíme - hromady keců, ale skutek utek. Pokud se někdy někdo dal do skutečné práce, nikdo by problém neměl. Ono přeplatit si diskuzní list a poslat mail je jedna věc, ale dát se do maintainingu 350 init skriptů je věc jiná...
No však jo. Když už někdo dostane prostor a prasí to jako slon v porcelánu, tak všichni kývejme jak kývací panáčci. Případně abychom pokaždé, co začne někdo něco prasit, nebyli za lenochy a kecaly, tak začněmě po skupinkách prasit to samé. ale jinak, jinak se ani neozývejme. Však jsme jenom uživatelé, taková nepodstatná skupina lidí co nemá u linuxu co dělat. Ale pozor, kdo se ozve a komu se něco nelíbí, tak už aby dělal na svém řešení, jinak je nějaký lempl. Hmmmmm
> Je to hromada práce kterou ovšem nikdo nechtěl dělat, vývojáři z Debianu raději chtěli věnovat úsilí lepší podpoře systemd.
Máš pro tohle tvrzení nějaký důkaz?
Podle mně dostupných informací totiž věc rozhodovala TC, došlo k plichtě mezi Upstartem a Systemd a pro Systemd rozhodl hlas jediného člověka - předsedy TC.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727708#6734
Hm, asi ano. Zagoogloval jsem a vypada to, ze je to kachna, ktera vznikla nejak takto: http://www.english.illinois.edu/-people-/faculty/debaron/essays/legend.htm
Problém je, že SystemV ve skutečnosti není init. Aspoň ne init snů.
1. Od initu bych jako uživatel čekal, že mu řeknu "dneska chci desktop s KDE" nebo "teď přepni Gnome a web server na testování" a on se postará. Jak tohle řeší SystemV? Několik levelů, když chci na pětku, projede všechno <= 5 a tím to hasne. Otázka je, mám mít Gnome s vyšším číslem než KDE, nebo naopak? A nepopere se to o paměť a procesor, když v jednom případě poběží obojí? A proč se web server spustí vždycky, i když ho někdy vůbec nechci? Takže občůrávky v podobě změny symlinku na jiný init.d a potupný reboot jak ve widlích...
2. Jako admin bych čekal, že spustí službu a budu mít jednotný ovládání všech služeb. Jak to dělá starý řešení? Unifikace pomocí switche ve skriptu, kde se kompatibilita dostahuje prostě tím, že se větve jmenují stejně? A tím, že část skriptu kopíruju, u části musím hluboce studovat fungování souvisejících věcí a musím fakt dobře vědět, co ten deamon potřebuje, jaký má parametry,...? Není lepší jenom deklarovat "pro db server spusť a, b, c, d. D spusť v okamžiku, kdy a, b a c už běží." a neřešit, ve skriptu pro c, že parametr x daemona a musí být 7?
3. Jako programátor nechci zabíjet čas psaním skriptu ani rvaním furt stejných věcí (jako ověření běhu služby apod.) do kódu a opakovaným testováním. Jedna věc má být na jednom místě, ne v pěti daemonech. Ono to totiž není jenom napsat, ale i otestovat furt ty samý věci dokola. Když někdo garantuje otestovanou funkcionalitu, která pokryje třeba 10% práce na projektu za cenu pěti řádků v deklaračním souboru, tak bych byl pitomec duplikovat to a znovu testovat. Init skript to nenabízí.
No a protože na to všichni kašlali a furt zápasili s tou parodií na init, tak uspěl jeho náhradou první, kdo byl ochotný něco udělat a měl dost prořízlou hubu, aby to okecal a zdůvodnil. No a protože jeho řešení je lepší než žádný řešení a s alternativou se nikdo nezdržoval, ... Takže asi tak.
1. Od initu bych jako uživatel čekal
Otázkou je, zda je init tou správnou vrstvou, na které by se to mělo řešit. Máme virtuálky, máme kontejnery, ty si zapněte a vypněte, kdy potřebujete. Případně nevidím problém se relognout z gnome do kde a v terminálu si pustit service httpd start
.
2. Není lepší jenom deklarovat "pro db server spusť a, b, c, d. D spusť v okamžiku, kdy a, b a c už běží." a neřešit, ve skriptu pro c, že parametr x daemona a musí být 7?
Tak především žádné takové složité závislosti nejsou v praxi potřeba. DB server si můžete pustit jako uživatel klidně příkazem pg_ctl start -D /data
a máte to. Hromada démonů (a s nástupem systemd se to nemění), má ovládátko typu daemon_ctl.
V tomto případě je systemd v nevýhodě, protože zatímto do původního init skriptu byla možnost si vedle standardních start, stop, status apod. přidat třeba configtest. Takže admin příkazem service httpd configtest
zkontroloval nastavení a příkazem service httpd reload
jej potom nechal zavést. U systemd o tuto možnost přicházíte a je nutné pro kontrolu volat apachectl -t -D cosi ...
(což je samozřejmně správné řešení).
3. Jako programátor nechci zabíjet čas psaním skriptu
Tohle čtu pořád dokola. Opravdu je taková zátěž, pro někoho, kdo napíše tisíce řádků kódu pro jeho skvělý program, pozměnit nějaký template? Stejně se s těmi rc skripty nic jiného nedělalo. Napsat akce pro start, stop, hotovo. Stejně se to píše i do systemd unity. Tak jaký je rozdíl. Za život jsem napsal mnoho rc skriptů, stejně tak několik unit pro vlastní potřebu, rozdíl v tom fakt nevidím. Ano, zápis unit souborů je přehlednější.
Hromada démonů (a s nástupem systemd se to nemění), má ovládátko typu daemon_ctl.
Což vypovídá o kvalitě dříve používaných správců služeb. Kdyby poskytovaly potřebné služby, málokdo by měl potřebu psát si vlastní ovladač služby. To, že se to zatím nemění, je přirozené – nikdo nemůže čekat, že s vydáním první verze systemd na něj přejdou všechny projekty a veškerý legacy kód zahodí. Ostatně, stačí se porozhlédnout tady v diskusi, co se děje, když vývojáři Gnome prohlásí, že nehodlají udržovat kód, který s DE nesouvisí, a začnou využívat logind.
kdo napíše tisíce řádků kódu pro jeho skvělý program
Dotyčný je asi dobrý v psaní toho svého programu, ale v psaní shell skriptů bude spíš průměrný nebo podprůměrný. Proč by měl svůj čas ztrácet tím, že bude bastlit nějaký skript, proč by měl svůj skvělý program kazit tím, že pro něj napíše špatný init skript? Jistěže to nakonec nějak splácá, ale má to smysl? Nemohl by ten čas využít lépe?
pozměnit nějaký template? Stejně se s těmi rc skripty nic jiného nedělalo
Pak je ale nesmysl, aby těch pár hodnot bylo schovaných v nějakém skriptu, prakticky se to nedá kontrolovat a testovat, snadno tam omylem uděláte něco jiného, než chcete. Všude, kde to jde, je snaha nepsat jak se má něco dělat, ale napsat jenom co se má udělat a to jak nechat na univerzálním otestovaném programu.
Což vypovídá o kvalitě dříve používaných správců služeb. Kdyby poskytovaly potřebné služby, málokdo by měl potřebu psát si vlastní ovladač služby.
Taky to vypovida o komplexite tech demonu. U databazi je to celkem bezne, ze mate vlastni "konzoli" na startovani. Kdyz startujete databazi "z ruky" tak mate k dispozici ruzne parametery a nektere veci ani jinak nez z konzole nejdou. Doted platilo, ze kdyz jste Oracle nastartovali "z ruky" tak jste zaroven overili ze mate vsechny parametry OS v poradku. A startup "script" byl vlastne jen wrapper okolo te konzole.
To ted - se systemd - konci. A bude zajimavy videt jak to dopadne za par let, treba se kazda verze RHEL 7.x bude chovat trochu jinak. Protoze s kazdou verzi ubude nejaka "unixova" vlastnost.
PS: predchozi verze systemd mazala odhlasenym uzivatelum shared-memory segmenty, nova jim dokonce zabiji procesy.
Mícháte dohromady dvě věci. Jedna věc je konfigurace. Ta opravdu může být komplexní a budete ji raději nastavovat přes nějakou management konzoli. Ale není důvod, aby se tahle konzole starala o správu procesu – stačí, když správci procesů předá informaci, co a s jakou konfigurací se má spustit. Díky architektuře systemd pak může mít pořád informace o příslušném procesu a může ho ovládat.
PS: predchozi verze systemd mazala odhlasenym uzivatelum shared-memory segmenty, nova jim dokonce zabiji procesy.
To nevadí, že jste si ani nepřečetl release notes. K nadávání na systemd úplně stačí znát polopravdy vyčtené z diskusí…
Pane Jirsák, říkal jsem si, že nebudu zbytečně trollit, ale na ten váš systemd fanatismus se nedá nereagovat. Myšlenka systemd není z principu úplně špatná, ale provedení je taková katastrofa, že bych zodpovědným jedincům do smrti zakázal práci s výpočetní technikou, včetně chytrých telefonů, televizí, kávovarů a nevím, čeho ještě. Nevím, jaké jsou vaše zkušenosti z opravdového nasazení, moje jsou takové, že poslední dobou systemd může za většinu problémů (pardon, jak by řekl LP, nejde o problémy, ale o vylepšení). Vaše argumenty, jak to usnadní práci, jsou pro většinu programátorů jen žvást. Spousta OSS SW běhá na mnoha platformách, od Win, přes Linux, *BSD, někdy až po opravdové UNIXy (kterých už moc nezbylo). Takže programátor má několik možností - zakouká se slepě do systemd a všechny ostatní platformy odepíše (nebo bude doufat, že se najde někdo, kdo mu bude zpětně systemd věci vykuchávat a upravovat to pro jiné platformy), nebo bude řešit variantu se systemd a bez a nebo se prostě na systemd vykašle a místo zápasu s API, který se mu mění pod rukama raději (jako už 1000x předtím) upraví/vytvoří skript. Mluvit o tom, že například několikrát zmiňované databáze opravdu není možné testovat jen podle běžícího procesu, ale stejně k sobě budou mít vždy vlastní monitoring, to asi nemá ani cenu.
To, že jiné platformy nemají rozumného správce procesů, znamená, že ho nesmí mít ani linux?
Jinak mně je systemd celkem jedno, mně vadí akorát to, když někdo kritizuje věci, které nejsou pravda. Když bude někdo kritizovat SysVinit proto, že někde v diskusi četl, že žere psi, budu mu oponovat úplně stejně.
Mluvit o tom, že například několikrát zmiňované databáze opravdu není možné testovat jen podle běžícího procesu, ale stejně k sobě budou mít vždy vlastní monitoring, to asi nemá ani cenu.
Cenu to nemá. Nevšiml jsem si, že by tu někdo něco takového psal, ale četl jsem jenom pár komentářů.
Tak já si dovolím tvrdit, že kritizuji pouze to, co je pravda a s čím mám osobní zkušenosti - systemd je stále se měnící nedodělek s nepředvídatelným chováním a nemá v produkci co dělat.
Hlavně nemůžu pochopit, jak mohly velké distribuce na ten krám tak rychle přejít... Jinak jsem celkem v klidu, dokud je SLES 11 podporovanej, dávame ten, až bude nutné přejít na 12, tak se ukáže, jak umí SuSE podporovat zákazníky :D
Což vypovídá o kvalitě dříve používaných správců služeb.
Programy *_ctl nejsou jen o akcích start a stop. Jsou to dálková ovládání master procesu daného démona a řeší mnoho dalších věcí. Bylo by dost divné, kdyby do sebe systemd absorboval dálkové ovládání každého jednotlivého démona.
bastlit nějaký skript, proč by měl svůj skvělý program kazit tím, že pro něj napíše špatný init skript?
Ale no tak... Co je těžkého na tom vzít template rc skriptu a dopsat jeden řádek do start a druhý řádek do stop? Které budou úplně stejné, jako v systemd unitě.
Všude, kde to jde, je snaha nepsat jak se má něco dělat, ale napsat jenom co se má udělat a to jak nechat na univerzálním otestovaném programu.
No to je sice hezké, ale jak u systemd unity, tak u rc skriptu stejně skončíte u toho, že musíte napsat jak se má daný program spustit a ukončit. Ani systemd nemá křištálovou kouli a nevyvěští si, jak má udělat akci (tedy to "co") "prosím zapni mi můj program". Stejně mu tam do ExecStart musíte napsat příkaz na spuštění toho programu.
Bylo by dost divné, kdyby do sebe systemd absorboval dálkové ovládání každého jednotlivého démona.
Divného na tom není nic. Systemd nepřevezme konkrétní ovládání, jenom umožní komunikaci mezi ovladačem a službou. Tím pádem nebude potřeba proprietární apachectl, ale budete moci službu ovládat libovolným nástrojem, který to bude umět. Třeba univerzální konzolí, která bude umět ovládat různé služby (a nebude to dělat nebezpečným voláním konzolových nástrojů na pozadí doprovázeným modlitbami, aby nedošlo k chybnému souběhu).
Co je těžkého na tom vzít template rc skriptu a dopsat jeden řádek do start a druhý řádek do stop?
Co je výhodného na tom psát to do nějakého skriptu, když to mohou být dva řádky v konfiguračním souboru? Navíc u normální aplikace stačí jeden řádek… A hlavně, že je to tak jednoduché a stačí napsat dva řádky na správné místo, to víte vy. Ale autor toho programu to nejdřív musí zjistit – a přesvědčit se o tom, že opravdu kvůli těm dvěma řádkům musí existovat celý ten skript.
stejně skončíte u toho, že musíte napsat jak se má daný program spustit a ukončit
Normální program se spouští tak, že se napíše jméno spouštěné binárky a případně seznam parametrů. Ukončuje se tak, že se mu pošle příslušný signál.
Stejně mu tam do ExecStart musíte napsat příkaz na spuštění toho programu.
Tedy mu akorát řeknu, co má spustit. A nemusím se zabývat hloupostmi, jako jak a kam si poznamenat PID procesu, jak zjistit, jestli proces stále běží, jak ho ukončit…
Systemd nepřevezme konkrétní ovládání, jenom umožní komunikaci mezi ovladačem a službou.
Jak? To by ta služba musela implementovat nějaké komunikační rozhraní systemd a stala by se tak na něm závislá. To snad nikdo soudný nemůže chtít (bez ohledu na oblíbenost toho kterého systému, byl bych proti i u nejlepšího init systému na světě - bez ohledu na to, že nic takového ani existovat nemůže, protože na každou situaci se hodí něco jiného).
Třeba univerzální konzolí, která bude umět ovládat různé služby (a nebude to dělat nebezpečným voláním konzolových nástrojů na pozadí doprovázeným modlitbami, aby nedošlo k chybnému souběhu).
To univerzální rozhraní už mám dneska. Říká se tomu shell. V této konzoli můžu ovládat veškeré prvky OS. (Závorku jsem četl, jestli se nějaký admin u práce s OS musí modlit, tak by měl pravděpodobně změnit zaměstnání.)
Tedy mu akorát řeknu, co má spustit. A nemusím se zabývat hloupostmi, jako jak a kam si poznamenat PID procesu, jak zjistit, jestli proces stále běží, jak ho ukončit…
To nemusíte ani u rc skriptu, protože to už v tom template vyřešené je.
To univerzální rozhraní už mám dneska. Říká se tomu shell.
Pod pojmem univerzální rozhraní si představuju něco, k čemu můžu připojit, co mne napadne – shell, GUI konzoli, webové rozhraní nebo třeba vzdálený management.
Závorku jsem četl, jestli se nějaký admin u práce s OS musí modlit, tak by měl pravděpodobně změnit zaměstnání.
Jak tedy v shellu řešíte to, že zjistíte stav, po té dáte pokyn ke změně – jenže mezi tím se stav mohl změnit?
To nemusíte ani u rc skriptu, protože to už v tom template vyřešené je.
K čemu je tedy celý ten rc skript dobrý, když je to jenom neustále se opakující šablona, ve které se jen změní dva řádky kódu? Není lepší ten opakující se kód někam vytknout a v konfiguraci služby nechat jenom ty dva řádky? Přičemž pořád nevím, proč jsou dva, normální procesy se ukončují zasláním signálu.
Jak tedy v shellu řešíte to, že zjistíte stav, po té dáte pokyn ke změně – jenže mezi tím se stav mohl změnit?
Jak se mohl změnit? Sám od sebe se nezmění. Služba, která běží, mohla náhodou spadnout, ale já nepoužívám služby, které jen tak padají (uptime 3 roky u mě znamená, že démoni, kteří nastartovaly při bootu běží 3 roky, nic menšího neakceptuji). I kdyby se vypnula, tak co? Pokud dám příkaz start, tak se znova zapne. Pokud dám stop, tak se neprovede nic. Pokud dám restart po změně konfigurace, tak se znova nahodí. V praxi navíc stav služeb nezjišťuji, takže se nedostanu do situace, že se mezitím změnil. Udělám rovnou tu akci, kterou chci. Ano, teoreticky lze vymyslet hromadu race, které jsou ale jen teoretické, protože v běžné praxi nenastanou, protože se ten systém používá určitým způsobem.
Není lepší ten opakující se kód někam vytknout a v konfiguraci služby nechat jenom ty dva řádky?
Ano, hromada rc systému přesně takhle vypadá. Ani nepoznáte, že píšete v bashi, protože vše společné je v základu.
Přičemž pořád nevím, proč jsou dva, normální procesy se ukončují zasláním signálu.
No tak si tam tu stop akci nedávejte a nechte jen volat sigterm. Jsou některé procesy, které (ačkoliv samozřejmě reagují na sigterm) tak mohou před samotným ukončením potřebovat ještě nějaké činnosti. Pokud je nepotřebují, ExecStop nechte prázdný.
Jak se mohl změnit? Sám od sebe se nezmění.
Sám od sebe se nezmění, ale může ho změnit nějaká událost nebo někdo jiný. Například zkontrolujete konfiguraci služby, je OK, tak necháte službu znovu konfiguraci načíst – jenže mezi tím došlo ke změně konfigurace. Třeba to způsobí nějaký automat jako utilita pro Let's Encrypt. Nebo nějaká úloha z cronu, třeba něco jako logrotate. Možná s tou konfigurací bude takový nástroj dokonce pracovat „bezpečně“, takže odstraní původní soubor a pak tam nahraje nový. A zrovna v tom okamžiku, kdy tam soubor nebude, se ho pokusí služba načíst. A možná dokonce bude chytrá, a když zjistí, že konfigurační soubor neexistuje, vytvoří nový defaultní. Pak se dostane ke slovu ta utilita, která tam chtěla nakopírovat tu změněnou konfiguraci, a spadne, protože nepředpokládala, že tam ten soubor bude.
Ano, je to nepravděpodobné. Ale rozhraní, které je postavené na tom, že špatně funguje jenom občas, není dobré.
Ano, teoreticky lze vymyslet hromadu race, které jsou ale jen teoretické, protože v běžné praxi nenastanou, protože se ten systém používá určitým způsobem.
Tenhle způsob uvažování stojí za všemi problémy se souběhem akcí.
Jsou některé procesy, které (ačkoliv samozřejmě reagují na sigterm) tak mohou před samotným ukončením potřebovat ještě nějaké činnosti.
Pak to mají dělat v reakci ne ten signál. Jinak opět může dojít k tomu, že necháte provést akce před ukončením, ale k samotnému ukončení pak už nedojde.
Sám od sebe se nezmění, ale může ho změnit nějaká událost nebo někdo jiný. Například zkontrolujete konfiguraci služby, je OK, tak necháte službu znovu konfiguraci načíst – jenže mezi tím došlo ke změně konfigurace. Třeba to způsobí nějaký automat jako utilita pro Let's Encrypt. Nebo nějaká úloha z cronu, třeba něco jako logrotate. Možná s tou konfigurací bude takový nástroj dokonce pracovat „bezpečně“, takže odstraní původní soubor a pak tam nahraje nový. A zrovna v tom okamžiku, kdy tam soubor nebude, se ho pokusí služba načíst. A možná dokonce bude chytrá, a když zjistí, že konfigurační soubor neexistuje, vytvoří nový defaultní. Pak se dostane ke slovu ta utilita, která tam chtěla nakopírovat tu změněnou konfiguraci, a spadne, protože nepředpokládala, že tam ten soubor bude.
Obávám se, že v systému, kde se budou služby chovat takto, tedy že si vytvoří default conf, že si odněkud vytáhnou starý conf pokud se jim ten nový nelíbí apod. těch races budete mít daleko víc a fakt by mě zajímalo, jak by třeba systemd řešil služby, které si, dle vašeho popisu, doslova dělají co chtějí. Takto se ty systémy neprovozují. Můžeme si vymyslet spoustu absurdních situací, kde to či ono nebude fungovat, ale v reálu se ty služby takto nechovají. Takový systém by se nedal používat.
Jak to tedy řešíte vy, aby služba nastartovala s vámi určenou a validovanou konfigurací, bez ohledu na to, co se děje okolo? Nebo to neřešíte a spoléháte na to, že jste jediný, kdo na tom systému reálně může provést nějaké změny, které službu ovlivní? Pokud je to ten druhý případ, jak dobře to vaše řešení škáluje?
A co třeba cron nebo sudo – takové služby nepoužíváte, když si nevystačí se shellem, ale mají proprietární nástroj pro konfiguraci?
cron má proprietární nástroj pro konfiguraci? Od kdy? crontab -e volá $EDITOR na kopii cron souboru z poolu. Klidně si vem jiný editor, změň soubor přímo v tom poolu a restartni crond.
sudo totéž v bledě modrém.
Pokud je to ten druhý případ, jak dobře to vaše řešení škáluje?
Škáluje co? Jako že 30 lidí bude současně nastavovat jednu službu? To teda moc dobře neškáluje, protože tam často ani není 30 věcí k nastavení ;-).
Jak to tedy řešíte vy, aby služba nastartovala s vámi určenou a validovanou konfigurací, bez ohledu na to, co se děje okolo?
No kupodivu tak, že po instalaci služby a jejím nastavení udělám service sluzba start a ona, světe div se, běží. Pokud ji chci spouštět při bootu, tak chkconfig sluzba on. Dokonce úplně stejně po instalaci na systémem se systemd po instalaci služby a jejích nastavení udělám systemctl start sluzba, systemctl enable sluzba (a takové věci jako hraní si s mask / unmask raději nebudu komentovat - viz diskuse o tom, jak v systemd skutečně zabránit tomu, aby se nějaký služba spustila).
crontab -e
i sudo
jsou proprietární nástroje pro konfiguraci. Když budete přímo editovat příslušný soubor, může to dopadnout dobře, ale také nemusí. Postup, který jste popsal, je popis konkrétní implementace těch proprietárních nástrojů. Takže vám nestačí znát standardní unixové nástroje, musíte znát ještě postup pro tu kterou konkrétní aplikaci.
Problém se souběhem může nastavit i v případě dvou konkurenčních přístupů, nemusí jich být dvacet.
Tvrdíte, že pořádná služba nepadá z ničeho nic a tedy nepotřebujete automatický restart procesů. Ale při správě služeb vám vůbec nevadí, že spoléháte na to, že to snad dobře dopadne – a kdyby se náhodou projevil nějaký problém způsobený souběhem, nevadí, prostě to zkusíte ještě jednou. Neměla by správa služeb být stejně spolehlivá, jako to vyžadujete od služeb?
jsou proprietární nástroje pro konfiguraci
Co je na tom proprietálního? Oba nástroje jen zavolají editor (který dokonce ani nevláčejí sebou, prostě použijí ten který je uveden v proměnné prostředí, případně defaultní), předají mu soubor k editaci a po zavření editoru jen zkontrolují správnost a upozorní démona (v případě cronu). Nic proprietálního na tom nevidím, naopak je to krásná ukázka použití již existujícího. Ale dokonce ani tyto nástroje nemusíte použít. Můžete klidně editovat sudoers nebo crony ručně.
Tvrdíte, že pořádná služba nepadá z ničeho nic a tedy nepotřebujete automatický restart procesů.
Ano.
Ale při správě služeb vám vůbec nevadí, že spoléháte na to, že to snad dobře dopadne – a kdyby se náhodou projevil nějaký problém způsobený souběhem, nevadí, prostě to zkusíte ještě jednou.
Já jsem někde tvrdil, že to snad dobře dopadne a náhodou a že to zkusím ještě jednou? Prosím o citaci. Ne, já svůj systém znám. To, že se konfigurace a restart služby podaří, není náhoda. Možná pro někoho jo, ale takového člověka bych neoznačil slovem administrátor.
Proprietární je ten správný postup. Ručně to editovat můžu, ale není zaručeno, že to bude fungovat. Není to krásná ukázka použití existujícího, je to ukázka hacku, jak s omezenými nástroji docílit bezpečné změny konfigurace.
Kdyby to nebyly proprietární nástroje, nepotřebujete crontab -e
a visudo
, když oba dva dělají to samé.
Já jsem někde tvrdil, že to snad dobře dopadne a náhodou a že to zkusím ještě jednou?
Tvrdil jste, že souběhy teoreticky nastat mohou, ale vy je neřešíte, protože to používáte určitým způsobem.
Ne, já svůj systém znám. To, že se konfigurace a restart služby podaří, není náhoda.
OK, máte svůj malý systém, ve kterém znáte všechny vazby, konkurenční přístup řešíte tak, že si pohlídáte, abyste žádné konflikty nezpůsobil. Já mám raději, když problém konkurenčního přístupu vůbec nemůže vzniknout. A v komplexních systémech je to nutnost, protože tam nikdo nemůže znát celý systém a posoudit, jestli někde náhodou nevzniknou nechtěné interakce.
Tvrdil jste, že souběhy teoreticky nastat mohou, ale vy je neřešíte, protože to používáte určitým způsobem.
Což ale vůbec neimplikuje to, že se to náhodou podaří a když ne, tak to zkusím ještě jednou. Pokud si z celého stavového prostoru vyberu jen ty stavy, ve kterých nastat konflikty nemohou a mezi těmito stavy se pohybuji, tak se mě ty konfliktní stavy netýkají.
OK, máte svůj malý systém, ve kterém znáte všechny vazby, konkurenční přístup řešíte tak, že si pohlídáte, abyste žádné konflikty nezpůsobil. Já mám raději, když problém konkurenčního přístupu vůbec nemůže vzniknout. A v komplexních systémech je to nutnost, protože tam nikdo nemůže znát celý systém a posoudit, jestli někde náhodou nevzniknou nechtěné interakce.
Samozřejmě. Malý systém. Když dojdou argumenty ... Mě by spíš zajímalo, jak se v produkční praxi stane, že nějakou službu budou konfigurovat dva a více adminů současně. Služba se typicky jednou nainstaluje a potom běží až do odstavení systému. Pokud nějaká služba potřebuje změnu konfigurace (což se mimochodem dá dosáhnout i tak, že se vedle nainstaluje služba s novou konfigurací a jen se zmigrují data), tak se pověří jeden konkrétní admin a ten rekonfiguraci provede. K žádnému souběhu nedojde.
Jestli je je vaší praxi běžné, že různí admini nastavují jen tak z plezíru různé služby do různých stavů a restartují je kolegům pod rukama, tak tomu se běžně říká sabotáž a s takovým "adminem" vyrazím první dveře a poženu ho třeba až na úřad práce (což teda v mém případě je jen do vedlejší budovy).
A hlavně nevím, jak by jakýkoliv systém na světě mohl zabránit tomu, že nějaký admin nastaví službu do stavu A a druhý admin tutéž službu paralelně do stavu B. Výsledkem stejně bude nakonec buď A nebo B. Možná se to náhodně 50:50 trefí do zamýšleného stavu, ale za dobrý výsledek to nepovažuju.
Prostě ten souběh se musí řešit na úplně jiné vrstvě.
Pokud si z celého stavového prostoru vyberu jen ty stavy, ve kterých nastat konflikty nemohou a mezi těmito stavy se pohybuji, tak se mě ty konfliktní stavy netýkají.
Nejde tenhle princip rozšířit na celý software? Prostě si nadefinujete, že ho používáte jenom způsobem, ve kterých funguje správně, a chyby se vás tím pádem netýkají. Akorát nevím, jestli bude software to vaše rozhodnutí respektovat.
Mě by spíš zajímalo, jak se v produkční praxi stane, že nějakou službu budou konfigurovat dva a více adminů současně.
Jak? No třeba administrátor databáze potřebuje přidat úlohu do cronu, a administrátor poštovního souboru potřebuje přidat svou úlohu do cronu. A ejhle, oba konfigurují stejnou službu.
A hlavně nevím, jak by jakýkoliv systém na světě mohl zabránit tomu, že nějaký admin nastaví službu do stavu A a druhý admin tutéž službu paralelně do stavu B. Výsledkem stejně bude nakonec buď A nebo B. Možná se to náhodně 50:50 trefí do zamýšleného stavu, ale za dobrý výsledek to nepovažuju.
Buďte rád, že stejný názor nemají třeba autoři bankovních aplikací. Že by prohlásili, že když vám mají přijít na účet dvě platby, přičte se vám buď jedna, nebo druhá, a neexistuje způsob, jak takovému konfliktu zabránit. Naštěstí ty způsoby existují, dva nejjednodušší jsou zamykání (před začátkem změny získám výhradní přístup, provedu změnu, a zámek vrátím), nebo verzování – načtu údaje s verzí, provedu změny, uložím verzi se zvýšenou verzí, pokud aktuální verze je nižší než nově ukládaná verze.
A ejhle, oba konfigurují stejnou službu.
Ano, ale za dva různé uživatele, takže každy z nich si zavolá crontab -e nebo každý z nich bude editovat svůj vlastní soubor. Potom ale nebude mít typicky právo zrestartovat tu službu, takže pokud nebude mít inotify (což momentálně nevím, zda crond nad poolem má), tak se jeho změny neprojeví.
Buďte rád, že stejný názor nemají třeba autoři bankovních aplikací.
Předpokládám, že ze sebe vzájemně nemusíme dělat blbce. Pokud ano, tak polopatě: stavy A a B jsou vzájemně protichůdné a nedají se sloučit. Zatímco bankovní transakce jsou samostatné. Pokud dva různí admini budou nastavovat jeden systém, tak ten s 50% pravděpodobností skončí nastavený špatně.
Proto říkám, že tento problém je nutno řešit na jiné vrstvě a nezadávat adminům protichůdné požadavky na jednu službu.
A co když ty dva požadavky A a B nejsou protichůdné a dají se sloučit? Třeba ta výše uvedená konfigurace cronu, pokud obě dvě úlohy mají běžet pod rootem (což je u správcovských úloh docela běžné).
Proto říkám, že tento problém je nutno řešit na jiné vrstvě a nezadávat adminům protichůdné požadavky na jednu službu.
Otázka je, zda si ten zadavatel v danou chvíli uvědomí, že administrátor databáze i administrátor poštovního serveru asi budou požadavky řešit pomocí cronu. Dokonce ani zadavatel těch úkolů nemusí být jedna a táž osoba.
Otázka je, zda si ten zadavatel v danou chvíli uvědomí, že administrátor databáze i administrátor poštovního serveru asi budou požadavky řešit pomocí cronu. Dokonce ani zadavatel těch úkolů nemusí být jedna a táž osoba.
Tomu se potom říká, že levá ruka neví co dělá pravá. Opět to není asi to nejvhodnější prostředí pro provoz serverů.
Jinak k tomu prvnímu odstavci, k čemu směřuješ? Je to tak, že služba, která nemá rozhranní pro administraci, které by umožnovalo přidávat jednotlivé záznamy a hlídalo by si stav, tak stejně funguje tak, že se v nějakém editoru otevře soubor a po jeho zavření se zkontroluje a aplikuje. Pokud toto udělají dva různí admini ve stejný čas, tak vyhraje konfigurace toho, kdo ten soubor uloží jako druhý. No a ten první admin si toho buď všimne, nebo ne. Každopádně služba nebude v očekávaném stavu.
Nejsem si jistý, jestli by pomohlo, aby každá služba měla vlastní nastavátko, které transkakčně vyřeší konfiguraci paralelními adminy. Evidentně to v praxi není takový problém, aby se to muselo řešit. A pokud to někdo potřebuje řešit, třeba přidávat položky do konfigurace tak často, že hrozí souběh, tak na to jsou už roky hotová řešení, nepřistupuje se ke konfiguračnímu souboru přímo, ale konfigurace se provádí prostřednictvím jiné služby, která řeší mimo jiné i souběh. Kdo chce použít, může, kdo nechce, nemusí.
Jde o to, že to dokonalé konfigurační rozhraní „textový soubor editovatelný libovolným editorem“ má také svoje mouchy. A ta výhoda, že existuje spousta unixových nástrojů pro práci s textovými soubory, je také víceméně teoretická, protože málokdy použijete něco jiného, než textový editor. Nemluvě o tom, že rozhraní „textový soubor“ ani nedokáže službu informovat o změně, to je potřeba provést jiným způsobem – dotazováním, restartem služby, signálem, inotify…
Takže tu sice máme univerzální konfigurační rozhraní postavené na textových souborech, ale to není dokonalé, takže je logické hledat lepší řešení. Nemusí to být zrovna systemd, a i kdyby bylo, přijde po něm zase něco dalšího.
Jde o to, že to dokonalé konfigurační rozhraní „textový soubor editovatelný libovolným editorem“ má také svoje mouchy.
Tak jistě že má.
A ta výhoda, že existuje spousta unixových nástrojů pro práci s textovými soubory, je také víceméně teoretická, protože málokdy použijete něco jiného, než textový editor.
No na konfiguraci, kde chci něco upravit, použiji typicky textový editor (krom takových onlinerů jako echo "neco" >> soubor.conf
, které osobně nemám příliš rád). Ale ty ostatní textové nástroje jako grep apod používám jinak denně a častěji, než editor samotný (ale zase ne příliš často na konfiguráky).
ale to není dokonalé
Nic není dokonalé. Ani to lepší řešení nad konfiguráky by také nebylo dokonalé. Dokonce by přineslo své vlastní problémy, které před tím neexistovaly. Jak říká Murphy, vše se pokazí a pokazí se to v nejnevhodnější situaci.
Nevybavuji si jediné jednotné řešení konfigurace, které by někdy neselhalo (naposledy jsem se pokoušel konfigurovat NetworkManager čistě dle návodu a výhradně pomocí nástrojů k tomu určených - nevím proč, ale po třetí přidané statické routě to přestalo fungovat - takový nástroj je naprosto k ničemu). A potom je ten průser mnohem větší, než když se nějaký admin překlepne v jednom konfiguráku. Totéž je s tím systemd. Když se v initrc pokazí jeden skript, tak se v podstatě nic neděje a navíc každý admin má schopnost jej opravit nebo alespoň obejít. Když se pokazí něco v systemd, tak je admin většinou v prd...
Ne, myslím v balíku systemd jako celek. Tak třeba se pravidelné kazí journald logy. LP sice tvrdí, že dělají maximum proto, aby to přečetlo i vadné logy a ale pravidelně se stává, že se rozbije (mimo jiné) index bootů a nelze se vrátit zpět před vadný log. (Jako ono to nějak obejít jde, lze si vypsat seznam uid všech bootů nalezených v logu a potom si zobrazit každý jednotlivý log, ale to asi není zamýšlené použití nástroje journalctl.)
Když si spustím journalctl --verify
, tak jsem zatím nenašel stroj, kde by nějaký log nebyl failed. Jsou to všechno zdravé stroje, které běží roky spolehlivě, fs je v pořádku atd. Prostě si to samo ničí vlastní soubory.
Nebýt možnosti forward to syslog, tak je admin bez logů.
Ty chyby s journald jsou nahlášené, má ty samé problémy také někdo jiný?
To si děláš srandu, nebo máš klapky na očích? Jistě že jsou nahlášené a hlásí se už roky. Některé bugy journald skončily označené jako notabug (z toho lze vyvodit, že vadné logy jsou vlastnost), některé smazané apod, k některým napsal povídání i LP apod.
Mne nezajímají hlášené nějaké chyby. Vy jste psal o své vlastní zkušenosti, tak by mne zajímalo, jestli ty vaše konkrétní chyby jsou nahlášené.
Některé bugy journald skončily označené jako notabug (z toho lze vyvodit, že vadné logy jsou vlastnost),
Ne, to z toho vyvodit nelze.
některé smazané apod, k některým napsal povídání i LP apod.
Nic z toho ale nevypovídá o reálných chybách journald
.
Pokud k tomu chcete přistupovat způsobem, že všechno, co je nahlášené jako chyba journald
, je automaticky chyba journald
, protože systemd
, nemáme se o čem bavit. I v této diskusi je vidět, že někteří lidé prostě hodně nemají rádi systemd a svedou na něj cokoliv, s největší radostí pak na systemd svedou to, že mají obě ruce levé. Nemyslím si, že by se tihle lidé bugzille vyhýbali. Proto se ptám konkrétně na ty vaše chyby, protože u těch se asi můžu spolehnout na to, že je to opravdu vlastní zkušenost a ne „někde na internetu jsem četl“, a na to, že popis chyby bude plus mínus odpovídat realitě a popisovat skutečný problém. Kdybych si chtěl číst pohádky o tom, jak je všechno špatně, protože všichni jsou debilové, přečetl bych si nějaký komentář od j.
Nic z toho ale nevypovídá o reálných chybách journald.
Prosím? Takže bugy na vadné logy journald nejsou o chybách journald? Takových hlášení jsou v bugzilách desítky. Nebudu tu chybu hlásit ještě jednou sám za sebe (snad stačí nahlásit chybu jednou, není potřeba hlásit tutéž chybu (chybu stejné třídy) v každé jednotlivé instanci), jen proto, aby to skončilo jako duplicate nějakého jiného bugreportu označeného jako notwantfix, notabug apod.
To za prvné. Za druhé, a tady opět očekávám nějakou jízlivou reakci. Proč bych měl psát bug na něco, co se projevuje ve 100% případů? To autoři nebo testeři neodhalili? Nebudu ani psát bugreport na ten NetworkManager. Pokud nikdo z autorů nevyzkoušel přidat více statických rout, tak už jen toto je pro mě signálem ten soft prostě nepoužívat, protože při takovém způsobu vývoje a (ne)testování bych pravděpodobně hned po té narazil na další "vlastnost", kterou se autor neobtěžoval vyzkoušet. Toto je pro mě při výběru softu mimořádně důležité. Naopak si vážím projektů, které na férovku zruší z plánovaného release ohlášenou vlastnost, protože sami nejsou spokojeni s tím, jak ten kód vypadá. Ten projekt je dlouhodobě stabilní a je to právě důsledkem tohoto způsobu myšlení autorů.
v této diskusi je vidět, že někteří lidé prostě hodně nemají rádi systemd
Už jsem tu někde psal, že zrovna journalctl považuji za to lepší ze systemd a dokonce jsem oponoval lidem, kteří se obávali toho binárního formátu. V různých db mám hromadu TB dat a není nejmenší důvod, aby se ta data kazila jen proto, že jsou ve formátu té konrétní db. Proč se kazí logy journald neví, nevyčuměl jsem to z ničeho, vše ostatní v pohodě běží. Byl bych rád, kdyby nástroj jako journald fungoval správně.
Takže bugy na vadné logy journald nejsou o chybách journald?
Ne, hlášení chyby o vadném logu journald nemusí znamenat chybu v journald. Už jsem viděl asi tak milion hlášení, kdy někdo hlásí chybu v nějakém programu, a chyba je přitom v jiném programu, mezi židlí a klávesnicí, nebo o chybu vůbec nejde.
Nebudu tu chybu hlásit ještě jednou sám za sebe
Tak se pak nedivte, že ta „chyba“ není opravená.
bugreportu označeného jako notwantfix, notabug
K takovému označení mohou vést různé důvody. Vývojář si nemyslí, že jde o chybu, a oznamovatel ho o tom nedokáže přesvědčit. Vývojář nedokáže chybu reprodukovat a oznamovatel už nijak nereaguje. A nebo také to, že vývojář je hlupák a zjevnou chybu zazdí. S tím posledním opravdu nic neuděláte, ty první dva případy může pomoci vyřešit někdo, u koho se také chyba projevuje, a kdo to dokáže popsat lépe nebo bude schopen spolupracovat na opravě té chyby.
Proč bych měl psát bug na něco, co se projevuje ve 100% případů?
Reakce bude jízlivá, protože tohle si nic jiného nezaslouží. Stačilo by uvědomit si, že nejste pupek světa, a že to, že se vám chyba projevuje ve 100 % případů, neznamená, že se projevuje všem. Klidně je možné, že jste jediný, komu se projevuje.
Ten projekt je dlouhodobě stabilní a je to právě důsledkem tohoto způsobu myšlení autorů.
Jako příklady uvádíte systemd a NetworkManager. Oba jsou to komplexní systémy, které vstupují do oblasti, kde panuje pěkný nepořádek, a snaží se ten nepořádek nějak uklidit a postupně proměnit v nové čisté řešení. Nebo-li se musí poprat se spoustou podivuhodných hacků a zároveň se snažit nespadnou do stejné pasti. To není věc, kterou je možné obecně testovat, protože vždy přijde někdo s nějakou novou kombinací hacků, kterou nikdo neotestoval. To nemůžete srovnávat s „jednoduchými“ aplikacemi typu databáze nebo souborový systém (přičemž zde „jednoduchý“ a „komplexní“ nijak nesouvisí s tím, jaké jsou nároky na autory – je to prostě jiný typ problému).
Proč se kazí logy journald neví, nevyčuměl jsem to z ničeho, vše ostatní v pohodě běží. Byl bych rád, kdyby nástroj jako journald fungoval správně.
To by nepochybně byli rádi i autoři journald. To, že nedokážete zjistit, v čem je problém, je pochopitelné a nevytýkám vám to. Ovšem je trochu zvláštní to samé pak vytýkat jiným (autorům journald), ale dá se to pochopit, oni jsou „majitelé“ journald, ne vy. Ale když tu chybu nenahlásíte, nemůžete se divit, že ji nikdo neopraví. To, že se ta chyba projevuje vám, opravdu neznamená, že se musí projevovat i někde jinde. Proto je důležité, aby chybu nahlásil někdo, kdo je ochoten spolupracovat na jejím odstranění – v první řadě je potřeba v spolupráci s autorem přijít na to, co je ve vašem prostředí specifické. Když už se podaří dojít do stavu, kdy vývojář dokáže chybu reprodukovat, bývá oprava většinou triviální.
Ne, hlášení chyby o vadném logu journald nemusí znamenat chybu v journald.
Samozřejmě, že nemusí. Ale pokud jsou nahlášeny s tím, že všechno kolem je zdravé a jediný problém je s logy journald, tak ano, stále to nemusí být problém journald, ale je to nejlogičtější začátek hledání příčiny. Jenže z té bugzilly není často cítit ani žádná snaha to začít řešit.
Stačilo by uvědomit si, že nejste pupek světa
Uvědomuju. Proto taky takový software nepoužívám. Pokud mám tu možnost. Problém se systemd patrně časem vyřeším tak, že postupně přejdu na FreeBSD. Potenciální bariera je mnohem menší, než jsem čekal (prakticky nulová), některé služby (u kterých to bylo výhodné) už jsem tam popřehazoval a takovou pohodu s prací s OS jsem dlouho nezažil. Pokud se časem někdo zblázní i ve FreeBSD, stále bude mnoho projektů, kam dál.
To není věc, kterou je možné obecně testovat, protože vždy přijde někdo s nějakou novou kombinací hacků, kterou nikdo neotestoval.
Nevyčítám NetworkManageru, že nepracuje správně na nějakém hraničním routeru s milionem portů v nějakém složitém stavu. Vzal jsem čistou minimální instalaci enterprise distra, vzal jsem do ruky manual a jel jsem podle manualu. První věc, kterou u síťového stroje chcete udělat je nastavit síť. Nepovedlo se. Na kompletně čisté instalaci, která je ve stavu, který je plně v režii autorů distribuce. Možná je chyba v dokumentaci, nevím, je mi to jedno. Network Manager používat nemusím a nebudu. Se systemd je to poněkud horší.
To by nepochybně byli rádi i autoři journald.
Z těch bugreportů bohužel nic takového cítit není.
Tohle opět krásně vystihl Michal Kubeček (který, tuším, přímo pracuje v jedné enterprise distribuci):
https://www.abclinuxu.cz/zpravicky/systemd-230-a-systemd.conf-2016/diskuse#53
@Heron: Ja ta obdivujem. Venovat tolko usilia a snazit sa logicky vysvetlit nieco cloveku, co ma evidentne casu jak invalidny dochodca (a neustale vo svojich "prispevkoch" ignoruje vsetky logicke argumenty a snazi sa svoje subjektivne postoje vydavat za univerzalne pravdy)...
Ja na to nikdy nemam nervy, vzdy po par odpovediach usudim, ze ti co su schopni pochopit, uz moje stanovisko davno pochopili - no a ti ostatni to pravdepodobne nepochopia nikdy (alebo im o pochopenie vobec nejde).
Problém se systemd patrně časem vyřeším tak, že postupně přejdu na FreeBSD.
Jo, to muzete. Potiz ale je, ze spousta softu v BSD pochazi z Linuxu a v Linuxu se mnozi soft, ktery je na systemd zavisly. Portace pak znamena, ze ta zavislost z toho musi byt nejak vykuchana, coz muze byt stale slozitejsi.
A pro spoustu uzivatelu prechod na BSD neni zrovna jednoduchy. Maloktere BSD distro ma instalator tak snadny, jako ma dnes Linux. A pokud ho ma, tak vyvojari bohuzel obvykle prestali podporovat 32 bity, kterych okolo lezi porad jeste hodne.
Potiz ale je, ze spousta softu v BSD pochazi z Linuxu a v Linuxu se mnozi soft, ktery je na systemd zavisly.
Toho jsem si vědom, ale nevím, jak danou situaci řešit. A nejsem sám. Víceméně doufám, že dlouhodobě rozumné projekty, které používám, budou rozumné i v budoucnu. Zaručené to nemám, jako nic na světě.
Ne, hlášení chyby o vadném logu journald nemusí znamenat chybu v journald.
Ono je uplne jedno, ci je to chyba. Dulezite je, ze poskozeni zurnalu nejspise zpusobi jeho necitelnost a takovyhle system by se hlavne nemel spolehat na to, ze bude vzdy slunecne pocasi a vysoky rosny bod. Cilem by mela byt alespon jakasi citelnost logu i v pripade, ze dojde k problemu. A to zajisti textovy format mnohem spolehliveji, nez jakysi podivny format binarni. Textovy format pak zajisti i to, ze ty logy muzu zkusit ciste kdecim a nejen pomoci nejakeho bazmeku, ktery dodavaji se systemd.
Tohle vůbec nezávisí na tom, zda jde o textový nebo binární formát. I textový i binární formát může být udělaný tak, že se bude z chyby velmi špatně zotavovat, ale i tak, že chybu správně detekuje a co nejdřív se z ní zotaví. Naopak u čistě textového formátu (ne žádné XML apod.) se snadno může stát, že chybu vůbec nepoznáte.
journalctl
umí logy textově zobrazit i exportovat, takže to „kde co“ můžete použít na ten vyexportovaný soubor.
Ano, journald by měl zajistit, že i v různých podivných situacích budou logy dostupné. Jenže tady je to plné komentářů, jak s tím všichni mají špatné osobní zkušenosti, jak je na to spousta bugreportů, ale odkaz na bugreport nikde, detailnější popis chyby nikde. Mně je to podezřelé. Já když se potýkám s takovouhle protivnou chybou, znám odkaz na bugreport, a/nebo popíšu detaily, v jaké to nastává situaci, jak se to projevuje… Kdybych chybu popsal způsobem „nic nefunguje, nikomu to nefunguje, nikoho to nezajímá a je zbytečné to hlásit“, připadal bych si, že mi vůbec nejde o řešení té chyby, a že jsem si prostě jenom přišel zanadávat.
https://www.google.cz/search?q=journald+corruption - cca 115 milionů výsledků... to bude nějaká blbost u pár uživatelů, ne? Momentálně mám po ruce jediný stroj se systemd a světe div se, journalctl --verify tvrdí, že má nějaké soubory poškozené. Se strojem jinak žádné problémy nejsou, v podstatě na něm nic neběží, jen se na něm testoval upgrade na SLES 12.1. Jinak szstemd má momentálně otevřených 312 issues, nejstarší starý skoro rok, nikomu se to nechce řešit... Tomu říkám kousek softwaru ;)
I textový i binární formát může být udělaný tak, že se bude z chyby velmi špatně zotavovat, ale i tak, že chybu správně detekuje a co nejdřív se z ní zotaví.
Aha. Tak tady bych uvital priklad txtoveho formatu, ktery se z vhyby spatne zotavi tak, ze uz nepujde precist a opravit ani hexaeditorem.
Export logu journactl jsou mi na dve veci, kdyz jsou poskozene a nejdou exportovat.
Z binárního formátu přečtete úplně to samé, jako přečtete z textového. Akorát tomu binárnímu formátu musíte rozumět, stejně jako rozumíte tomu textovému.
Aha. Akorat, ze binarnimu formatu nikdo nerozumi tak jako textovemu. Takze kdyz mam textovy format, tak to v necem otevru a ctu. Kdyz mam format binarni, tak stravim pul dne hledanim dokumentace a jejim studiem a dalsiho pul dne pokusy o desifrovani poskozeneho logu dle nastudovaneho materialu. Pricemz si muzu byt jisty, ze to vse do priste zapomenu a budu moci zacit znovu, coz se mi u textaku tezko stane. A pokud v tech logach je zapnuta komprese, tak to muzu rovnou zabalit, protoze zmena jedineho bitu ma dalekosahle dusledky, coz u textaku nemuze nastat.
Opravdy me presvedceni o vyhodach binarniho formatu sili s kazdym vasim prispevkem.
Takže rozdíl není v tom formátu, ale ve vašich schopnostech. Na tom se shodneme.
Tak jiste, az ty logy budou obsahovat nahodna cisla, bude rozdil v tom,ze je diky nedostatku jasnozrivosti nedokazu interpretovat.
Navrhuji, aby skolni ucebnice nadale byly tisteny v binarnim formatu, aby pristi generace byly na systemd lepe pripraveny, nez ja, stara struktura, co se ucila cist akorat normalni text.
Tohle už se fakt nedá říct jinak, slušnost stranou, Jirsák, ty jsi normální kokot. Jestli věříš jen polovině toho co píšeš, tak patříš do ústavu. To je jako říct, že přečíst zašifrovanou zprávu bez klíče je jen o schopnostech a v podstatě by to měl každej umět, nebo je debil. Ale primární účel logu je, aby BYL ČITELNÝ! Raději uvidím v 1000 řádkovým logu 10 řádků nesmyslů, než abych kvůli těm 10ti rozdrbaným řádkům neviděl vůbec nic. Takže řeknu ti to znova. systemd je někde mezi alfou a betou, v produkci nemá co dělat, LP je arogantní fracek a jestli to takhle půjde dál, Linux půjde do prdele a každej, kdo potřebuje stabilní OS minimálně na servery, tak uteče k nějakýmu BSD. Mimochodem, instalace OpenBSD je sice v CLI, ale jinak je tak jednoduchá, že by to zvládla i moje malá dcera, kdyby jí někdo přečetl a přeložil co to píše a co to chce.
A do které kategorie se dá zařadit kódování bez rozumné dokumentace? Buď je to dementní kódování, nebo je to šifrování ve stylu "security through obscurity"? Substituční šifra je ve své podstatě taky jen kódování. Nic to nemění na tom, že když se něco pokazí, jsem prostě v tu chvíli v zadeli. Mimochodem, systemd po nějaké aktualizaci dokonce nedokázalo přečíst svoje vlastní logy z minulé verze. Tak to má vypadat? Ne, děkuji. Takhle by to opravdu nešlo. Prostě jsi pro mě kretén, kterej se zamotal do své vlastní blbosti a teď jsi se dostal do stavu, že za žádnou cenu nechceš vypadat jako debil, což si o tobě každej normální člověk myslí víc a víc s každým tvým dalším příspěvkem.
Binární formát pro logování je výhodnější v úspoře paměti a rychlejším zápisu, takže se sníží možnost ztráty dat. Ono zapsat "03:25:38.22" nebo 0x03253822 je 11B vs. 4B.
Ztráta dat se v bináru řeší líp, padne potřeba ASCII/UTF8, která tě hodně omezuje např. v samoopravným kódu, crc, odlišení hlavičky atd.
Nečitelnost v texťáku nevadí, pokud máš možnost tu binárku vytáhnout ze stroje ven a prohnat převodníkem. Taky to tak dělávám, XML s popisem chyb + binárka, kterou přechroupe prográmek.
Když máš na logování vyčleněno 1kB zálohované RAM v embedded systému, jinou možnost, než binárka a přechroupávač na PC nemáš (událost + modul + datum + čas + závažnost události dají klidně jenom 20B).
Když máš na logování vyčleněno 1kB zálohované RAM v embedded systému, jinou možnost, než binárka a přechroupávač na PC nemáš.
Tak vetsina lidi tady pri diskusi o logovani asi nema na mysli embeded systemy, ale vetsi stroje, tak od netbooku vyse. Pokud mate embeded system, tak si nejsem jisty, jestli zrovna systemd je ta idealni volba. Porad to bobtna a vtahuje to do sebe stale dalsi funkce, ktere predtim delalo neco jineho. Pokud chcete logovat binarne, asi by bylo lepsi si to resit nejakym vlastnim bazmekem, pokud takova vec uz nekde mimo systemd neexistuje.
Nezapomněl. systemd používám, vím co dokáže. ;-) Momentálně se snažím pochopit poslední changelog a to, co lennart boys vyvedli s odstřelením procesů po odhlášení uživatele a jaké je podle nich tedy správné řešení (tedy kromě toho nastavit si logind, protože se změnil default - bůh ví jak dlouho tam tam možnost bude). Prostě rozbili desítky let funkční nohup a screen / tmux. Přečetl jsem 5 man stránek a nechápu, jak se to má the systemd way nahradit. To, že taková nuance systemd-boys od nikdy nezajímala vím, ale někdy bych chtěl pro ukojení vlastní perverze zjistit, jaká je podle nich ta správná cesta.
Mno:
# apt install libpam-systemd # loginctl enable-linger username
$ cat ~/.config/systemd/user/tmux.service: [Unit] Description=Start tmux in detached session [Service] Type=forking ExecStart=/usr/bin/tmux new-session -s %u -d ExecStop=/usr/bin/tmux kill-session -t %u [Install] WantedBy=default.target
a nastavit spouštění po loginu:
$ systemctl --user enable tmux
Funguje. Ať si každý sám za sebe rozhodne, jestli je to pro něj ok.
Tam je problém v tom, že tmux sice můžete spustit kdy chcete, jenže ve chvíli, kdy se z daného stroje kompletně odlásíte (všechny vaše session - což je typicky jen jedna session, právě ta, ve které chcete nechat spuštěný ten tmux / screen i po odhlášení ze ssh), tak systemd všechny vaše procesy zabije. Takže i ten tmux / screen. Dá se to vyřešit nějakým nastavením logind a použitím systemd-run. Nezkoušel jsem, nepátral jsem. Chci mít tmux nastartovaný trvale (v tomto případě tedy od prvního přihlášení).
Jak? To by ta služba musela implementovat nějaké komunikační rozhraní systemd a stala by se tak na něm závislá. To snad nikdo soudný nemůže chtít (bez ohledu na oblíbenost toho kterého systému, byl bych proti i u nejlepšího init systému na světě - bez ohledu na to, že nic takového ani existovat nemůže, protože na každou situaci se hodí něco jiného).
Jasne ze by to slo. Staci prepsat vsechen SW aby konzole komunikovala se serverem pres d-bus :). A je to. Ne samozrejme si delam, pr*el.
V pripade toho Oracle to dnes funguje tak, ze spustite sqlplus a ten spusti process oracle jako syna. Tomu synovi preda nejake parametry pres environment, a pak s nim komunikuje pres presmerovany stdin/stdout. Pekne "unixove". Ta databaze bezi takovem single-user mode, kdy je mozne menit nektere parametry anebo spustit jeji restore. Pokud pak zadate urcity prikaz tak ze syn odforkuje a stane se samostatnym demonem.
To ze by nekdo tohle prekopal kvuli tomu, aby mohl byt systemd (dbus) prostrednikem, mezi konzoli a demonem, to je totalni sci-fi. Hadam, ze ani ostatni databaze na tohle nebudou chtit pristoupit.
Staci prepsat vsechen SW aby konzole komunikovala se serverem pres d-bus
Tohleto nevyslovujte ani ze srandy. Už dneska se najdou magoři, kteří tohle vzali vážně (naštěstí se lze jejich výtvorům vyhnout), čím méně jich bude, tím lépe.
V pripade toho Oracle to dnes funguje tak, ze spustite sqlplus a ten spusti process oracle jako syna. Tomu synovi preda nejake parametry pres environment, a pak s nim komunikuje pres presmerovany stdin/stdout. Pekne "unixove". Ta databaze bezi takovem single-user mode, kdy je mozne menit nektere parametry anebo spustit jeji restore. Pokud pak zadate urcity prikaz tak ze syn odforkuje a stane se samostatnym demonem.
+1, skvělé.
V objektových systémech se to řeší tak, že rozhraní zajišťující tyto akce jsou metody bez parametrů, objekt si konkrétní parametry načte z db, či konfiguračního souboru, který se určí při vytvoření objektu. Nepotřebujete pak žádné skripty, které říkají, jak se co se má dělat, ale jen konfigurační soubory, které říkají, s čím se má pracovat. Logika chování pak existuje jen v jediné kopii a aplikace je přenositelná mezi všemi systémy, které implementují toto rozhraní.
V dobách kdy vznikala filosofie Unixu, takové paradigma ale neplatilo, bylo stále ovlivněno zpracováním programů na štítcích, kdy jste vzal jednu krabici štítků a tu strčil do třídičky a výslednou sadu štítků strčil do sčítačky. (roura :-)))
Kulturní vzorce chování se jen tak nemění.
Herone, asi takhle. Když jsem po devíti letech profi vývoje SW s koncem WinXP přešel na Linux začal si tam oťukávat programování, tak co mě odradilo od démonů bylo právě googlení, jak napsat init script, co kde změnit a co a proč tam je to, co tam je. Naprosto zbytečný.
Navíc pokud pro init.d existuje šablona skriptu a měníš v ní jenom parametry, co by se stalo, kdyby ta šablona prostě byla program, který si ty parametry vycucne z jednoho nebo dvou řádků v konfiguráku a udělá to stejný?
A problém je, že každý napsaný řádek zvyšuje riziko chyby. Ať je to skript, nebo kus programu. A i přiohnutý modul podle šablony se musí otestovat, takže unit testy nebo práce tesťáka navíc...
co by se stalo, kdyby ta šablona prostě byla program, který si ty parametry vycucne z jednoho nebo dvou řádků v konfiguráku a udělá to stejný?
Nestalo by se nic. Viděl jsem implementace, které fungovaly přesně takto. V rc skriptu byl jen nutný obal (v podstatě je source jiného skriptu) a ty dva řádky se tam napsali v podstatě jako argument nějaké funkce obalené nějakými dalšími drobnostmi (v podstatě definice fce, která se snaží tak nevypadat).
A problém je, že každý napsaný řádek zvyšuje riziko chyby. Ať je to skript, nebo kus programu. A i přiohnutý modul podle šablony se musí otestovat, takže unit testy nebo práce tesťáka navíc...
Start a stop akce tvého programu předpokládám testuješ vždy. V čem je rozdíl, když se ta start akce zavolá pomocí systemd a nebo pomocí skriptu v bashi?
tak se mrkni, jak vypadaji init skipty v bsd:
#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: inetd
# REQUIRE: DAEMON LOGIN FILESYSTEMS
# KEYWORD: shutdown
. /etc/rc.subr
name="inetd"
desc="Internet \"super-server\""
rcvar="inetd_enable"
command="/usr/sbin/${name}"
pidfile="/var/run/${name}.pid"
required_files="/etc/${name}.conf"
extra_commands="reload"
load_rc_config $name
run_rc_command "$1"
... a je to furt shell. to, ze v nekterych distibucich bylo zvykem prasit superdlouhy init skripty se spoustou boilerplate kodu neni problem initu, ale tech distribuci.
#!/sbin/runscript depend() { use net before nfs after logger } start() { ebegin "Starting cupsd" checkpath -q -d -m 0775 -o root:lp /var/cache/cups checkpath -q -d -m 0775 -o root:lp /var/cache/cups/rss checkpath -q -d -m 0755 -o root:lp /run/cups checkpath -q -d -m 0511 -o lp:lpadmin /run/cups/certs start-stop-daemon --start --quiet --exec /usr/sbin/cupsd eend $? } stop() { ebegin "Stopping cupsd" start-stop-daemon --stop --quiet --exec /usr/sbin/cupsd eend $? }
.... strasnej problem ... a narozdil od toho srace to vazne nastartuje nebo zastavi presne podle ocekavani.
Dotyčný je asi dobrý v psaní toho svého programu, ale v psaní shell skriptů bude spíš průměrný nebo podprůměrný.
Programátor, který umí jen jeden konkrétní jazyk, je kodér a ne programátor. Je řada kvalitních jazyků, které jsou užitečné v konkrétních kontextech. Arduino si nadatluju v C, pro ovládací aplikaci vezmu třeba Qt/C++, pro přenositelnou vokýnkovou aplikaci vezmu Javu, jednoduché webovky k tomu udělám v PHP a spouštěcí skripty v BASHi. Jazyky jsou si v principech podobné, stačí se učit "dialekt", něco ze syntaxe a sémantiky.
Proč by měl svůj čas ztrácet tím, že bude bastlit nějaký skript
Protože shellové skripty jsou běžně používaný standard, stejně to potřebuje při práci v konzoli, a hlavně jsou univerzální. Kvůli nějakým startovacím skriptům se nemusím učit sémantiku a syntaxi dalšího jazyka, který nikde jinde k ničemu nevyužiju. Použiju to, co je spolehlivé, odzkoušené a standardní. Není potřeba psát žádný speciální parser, nemusím se učit syntaxi a semantiku něčeho, co nikde jinde nevyužiju.
Nemohl by ten čas využít lépe?
Ano mohl, místo učení se jednorázově použitelného jazyka nějakých "jednotek" se naučím lépe psát v shellu, který je univerzální.
Já jsem psal, že dotyčný programátor bude průměrný nebo podprůměrný v psaní shell skriptů – a vy jste k tomu doplnil, že bude také průměrný nebo podprůměrný v C, Qt/C++, Javě a PHP. Já dodávám, že pokud to dobře dopadne, bude nadprůměrný v tom, v čem píše ten svůj program – ani ne celý jazyk plus platformu, ale tu část platformy, kterou pro svůj program používá.
Mezi „být dobrý programátor“ a „umět jazyk“ je rozdíl třeba jako mezi „znát pravidla šachů“ a „být dobrý šachista“.
stejně to potřebuje při práci v konzoli
Já při práci v konzoli rozhodně bash znát nepotřebuju. A naopak neznám init systém, který by jako shell používal zsh.
Kvůli nějakým startovacím skriptům se nemusím učit sémantiku a syntaxi dalšího jazyka, který nikde jinde k ničemu nevyužiju.
Syntaxe je to nejmenší. Sémantiku se učit musí, protože init skripty nejsou jen tak nějaké skripty nezávislé na prostředí. Init skripty jsou komponenty daného init systému, obecně nepřenosné mezi init systémy – a pouze shodou okolností mají stejnou syntaxi, jako nějaký shell.
To je problém Unixu, který má zakódovaný v DNA, je to bashismus, tedy řešení všeho pomocí pár atomických funkcí s hojným používání copy and paste, čímž přirozeně vzniká velká redundance kódu a systém se stává nemodifikovatelný. Udržuje se ale dobře, jako každý spagetti kód, protože všechny potřebné změny lze udělat v blízkém okolí místa, které jste identifikoval jako relevantní. Souvislosti vás zajímat v danou chvíli nemusí, protože ty se projeví samy a ty pak následně zalátáte jinde. Nemusíte hledat to jedno místo, kde se nachází definice, mezi mnoha jinými definicemi (nevýhoda malé redundance kódu)
Když jsem začínal s Linuxem, prohlížel jsem si web, LibreOffice a trochu programování. No to byl SysV nebo upstart (už nevím) a později jsem trochu použil ten upstart ale nic jsem s ním jiného nedělal než vypnul nějakou službu bránící v restartu (nebo co dělala to už také nevím). Až poté jsem využil systemd a to už byl všude.
Proč by to uspávání měl řešit systém nebo init? Je na aplikaci, aby si řekla, co (ne) potřebuje, ne? Jenom DB server ví, kolik má zrovna požadavků, jak velký má tabulky, ... a musí si žádat o to, co potřebuje.
S tohle logikou systém na serveru pro IZS systém vyhodnotí, že minimum požárů je v pondělí od dvou do pěti ráno a sestřelí komunikaci s hasičárnou. A zrovna bude bouřka a blesky zapálí pět baráků naráz...
Na systému je, aby přiděloval čas, paměť,... Na initu je, aby ten systém naběhl a když spadne, aby ho nahodil znovu a informoval admina, že je možná problém. Věštění požadavků obecnýho .elf souboru ani uživatele nemá v popisu práce ani jeden z nich.
Protože "doing one thing and doing it well".
Ono těch databází může běžet více, a z hlediska nadhledu nad celou serverovnou a konkrétního provozu může být optimální jiná strategie, kterou supervizor serverovny díky adaptivnímu algoritmu teprve objeví, například poběží více variant s kombinacemi databází, tak aby databázové servery byly rovnoměrně vytíženy, integrida dat se vyřeší automatickou replikací. Myslet si, že nějaký admin to od stolu vymyslí, je bláhové (problém obchodního cestujícího).
V době kdy automobily budou jezdit bez řidičů, tak admini budou manuálně určovat, co kde poběží v serverovně. Absurdní představa.
S nárůstem datových toků se stejně dojde zase k majoritní funkci, kdy daný požadavek bude zpracován současně několikrát, a za správný výsledek bude brán ten, který vyjde vícekrát, nebude pak vadit, že část serverů třeba nebude v dané chvíli fungovat.
Každý komplexní organismus je založen na toleranci chyb, nikdy se nepředpokládá, že všechny části fungují bezchybně.
Proto se nebude hledat konkrétní chyba na serveru, ale server se automaticky, na základě majoritní funkce přepíše obsahem serveru se "správným" výsledkem, restartuje a zařadí do poolu funkčních serverů, odkud byl po chybě vyňat. Když správně poběží 80% serverů, bude to stačit. Logy nebudou potřeba, systém se takto sám opraví. Jen občas se do sytému uměle zavedou kmenové servery, u kterých je zaručena správnost z vnějšku systému, aby nedocházelo k degeneraci systému.
Budoucí adaptivní algoritmy jistě využijí analogických strategií, jako je třeba apoptóza buněk, třeba právě ve spojitosti s majoritní funkcí navázanou na řešené úlohy a jejich výsledky.
A aby toto bylo možné, stejně dospějete k nějakému "systemd" na úrovni serveru, a supervizoru na úrovni celého organismu serverovny, který klidně může být distribuovaný.
No a. Když bude určitý počet požárů najednou, tak hasičů bude málo i tak. Prostě zaručit, že něco nevyhoří nelze. V případě hasičů jde o daňový podvod státu, který aby vylákal peníze, tvrdí, že to lze, že je schopen zajistit nějakou 100% jistotu. 100% jistota je vždy podvod.
Jinak, ale hasičárna se má periodicky dotazovat, mám zasáhnout, tím bude udržovat servery v činnosti. Zásahové oblasti hasičáren se mají překrývat, tím se dosáhne větší robustnosti systému a nebude závislý na jediném serveru. Dotazovaných ústředen by mělo být více, aby se vyloučila i jejich porucha.
Analogicky funguje apoptóza buněk, která řídí dostupné zdroje v organizmu.
To mi pripomina PR kydy o zarne budoucnosti od byrokratu z EU.
Příklad: serverovna se sama přizpůsobí aktuálnímu výkonu, bez toho, že by nějací admini naskriptovali chování jednotlivých serverů.
Ano, soudruh Poettering pry jiz pracuje na implementaci interfejsu pro kristalovou kouli, ktera bude instalovana v kazde serverovne a zaruci, ze vykon bude nasazovan vzdy presne v souladu s pozadavky dane serverovny. Admini nebudou v serverovne vubec potreba, bude tam akorat technik, ktery z racku a hlavne z kristalove koule bude luxovat pavuciny.
No procesor už dnes přiděluje prostředky úlohám i bez admina, na základě adaptivního algoritmu, což dříve dělal operátor pomocí štítků, které vkládal na začátek každého jobu s příkazy jazyka příznačně nazvaného JCL :-)))
Není důvod, proč by takto nešlo řídit celou serverovnu, brání tomu jen nešikovný init popsaný ad hoc skripty.
No mělo být OS, místo procesor. Ale ono se nám to rozdělilo, dnes už i procesor autonomně rozhoduje, které instrukce budou zpracovány, takže optimalizace probíhají paralelně a ani OS nad tím nemá plnou kontrolu. Záleží i na tom, co je v cache procesoru, řekl bych. Ale nějak důsledně jsem toto nepromýšlel.
2MP: Ono se u databazi predpoklada, ze muze jebnout systemu... a kdyz mu jebne a zacne neco delat, tak proste muze ... ale maximalne s tim jednim nebo dvema jadrama, ktery mu databaze necha. Je totiz naprosto neakceptovatelny, aby se trebas spustila nejaka udrzba systemu, a omezila provoz databaze.
Mimochodem, umej to i widle a M$sql ... a bez toho by to nikdo nepouzival.
Oracle RAC bezi jako sada procesu pod uzivatelem Oracle. Neni to az tak vyjimecky (z pohledu OS), az na to ze ma velice specificke pozadavky na OS limity a ze muze pristupovat primo na RAW devices(ASM storage). A k tomu zamozrejme potrebuje prava. Nejjednossi doted bylo sekvencni bootovani, s tim, ze database proste nabiha az posledni a pri shutdownu jde jako prvni dolu. Zatimco systemd klidne utrhne storage pod bezici databazi. Pripade RAC clusteru je to slozitejsi protoze nektere procesy navic bezi pod rootem a musi mit RT prioritu.
Informix bezi pod uzivatelem informix a jedina jeho zvlastnost ktera me napada jsou virtualni procesory. To jsou vlakna, ktera nevykonavaji zadne blokojici syscally a jsou dedikovana pro provadeni SQL dotazu od vsech konexi. Informix si sam implementuje vlastni "scheduler" uvnitr svoji "VM". K tomu ale potrebuje aby mu do toho OS scheduler nekecal. A proto vola "sched_setscheduler", coz muze normalne udelat jen root.
Tak Earl Grey vznikl prý v roce 1830, takže nic nového pod sluncem. Rozdíl je jen v tom, že tehdy se bylo třeba trefit do obecného vkusu, dnes do individuálního. V tom jsou ještě rezervy obchodního růstu. A růst, už i podle taoismu platí, to co přestává růst, to začíná umírat.
Ono se da prodat vsechno. Pigy caj, parky z odpadku.... Earl grey byl pokus, jak ucinit levny vaj pitelnym tim, ze se bergamotem zamaskuje chut neprilis kvalitniho caje. Casem si to naslo sve amatery. A lidi, kteri piji zeleny caj, casto nepiji caj cerny, protoze jim jaksi pripada podradny (a me po nem pali zaha). Earl grey sice obcas lze najit v zelene verzi, ale neni to zadna slava.
BTW, clovek nemusi byt prilis snobskym pijakem caje na to, aby nepil Earl grey. Ono je mozne najit slusne zelene caje, ktere nejsou moc drahe a vzhledem k tomu, ze v nich jeste neni systemd a na krabicce fotka Poetteringa, tak jsou docela dobre.
"Microsoft je už v tomto popředu s automatickou aktualizací W10."
tak toho se docela obavam - proc by mel nejaky vydavatel OS predpokladat, ze jako uzivatel si neumim sam rict, ktere aktualizace ano a ktere ne?
proc bych si nemohl rict, kdy si chci zaktualizovat system? (v praci pouzivam Win - uplne staci, kdyz se Win rozhodne, ze zacne s aktualizaci: konec prace zrovna v kritickem momentu)
Tak tak, Update jsou opravdu "killer feature" windows. Zabijí nejenom software, ale zvládnou zneškodnit i hardware a otrávit uživatele tak, že z toho blouzní, jak by to v Redmondu na oplátku pozabíjel taky :D Pomalu a bolestivě...
Jinak co se zbytku toho Ivanova výblitku týká, počítač je sluha. Individuální. Pokud by to mělo fungovat tak, jak on si představuje, tak stačí jedno PC na celý město (který bude vědět, co lidi ve městě potřebují), TV vysílač místo monitoru,...
Už dávno PC není individuální, 90% informací v něm máte z cloudu, tedy z internetu. Nyní po PC individualizaci přichází další evoluční optimalizační fáze, propojování a vznik mnohobuněčných informačních organismů :-))) Už i Eclipse je ve verzi pro cloud. Stále více software bude sloužit strojům a ne lidem.
Vezměte si takovou navigaci do automobilu, dnes slouží řidiči, aby našel cestu, za pár let bude sloužit automobilu, aby dojel na místo, které mu určíte. S PC si ještě dnes rád pohrajete, ale pokud byste měl administrovat sw nejen PC, ale i TV, kávovaru, auta, sekačky na trávu, tak by vás to brzy přestalo bavit.
"Už dávno PC není individuální, 90% informací v něm máte z cloudu"
jak kdo - ja cloud nepouzivam (ne vedome, primo, umyslne - bohuzel treba takovy mail je nekde venku na serverech mimo muj dosah)
"Vezměte si takovou navigaci do automobilu, dnes slouží řidiči, aby našel cestu, za pár let bude sloužit automobilu, aby dojel na místo, které mu určíte" - zduraznuji to "které mu určíte"
ano - chci urcovat, co ma muj stroj delat, kdy to ma delat. rad bych i to jak - ale lidske reflexy a schoppnosti oproti sikovnym algoritmum nemaji sanci.
a zas je duraz na tom slovicku "sikovnym": dnes bohuzel vetsina algoritmu (kere za nas maji neco resit) jsou spis stupidni hricky sfetovanych magoru, co nikdy nic praktickeho nedelali azbastlili to pod drtivym psychologickym tlakem svych managoru
nejsem detinsky - lepsi to uz bylo.
proto osobne mam radsi hromadu malych programku, kreabicek, ktere proste vymenim, kdyz se mi nezda, jak funguje
(ano s mobilem telefonuju a smskuju, na cteni pouzivam ctecku, tv koukam na tv, pouzivam navigaci, programuji a pisu na PC - a nepouzivam na vsechno jednu krabicku, co mi nevleze poradne ani do kapsy)
:-D už jsme to řešili.
Z článku. kde to i autor přiznává a tajemství to není, takže tou malou citací bych tuto část zakončil:
"Systemd je často vytýkána snaha pokrýt velkou část úloh, které dříve mělo na starosti více programů. "
A ke KISS
"After=org.cups.cupsd.service avahi-daemon.service
Wants=org.cups.cupsd.service avahi-daemon.service"
Jako by služby potřebovaly mít další způsob definice, místo aby použili stávající. No a ke všemu ještě tím vzniká nekompatibilita:
"Např. graphical.target pro nastartování grafického prostředí. Pro zpětnou kompatibilitu odpovídají původní očíslované běhové úrovně pojmenovaným cílům. Tedy telinit 5 má stejný efekt jako systemctl isolate graphical.target. Opačně to neplatí, některé cíle nemají číselný ekvivalent."
A to ani neřeším to, že v podstatě ta "super cool feature" v ošetřování závislostí služeb není vyřešena "novým" způsobem volání služeb ale stejně pomocí "After, ..., ...."
Lebo ja sa iba začínam kamarátiť so systemd a ukazuje sa mi
1. Wants - keď spustím službu musia sa počas bootu spustiť aj wants
2. After - služba sa spustí, až keď bežia všetky After služby.
Teda ak by nebolo After tak by sa to fungovalo asi ako spúšťanie inštrukcií v poradí a ukončovanie mimo poradia. A to môže vadiť.
A navyše Wants hovorí, že ak sa niečo Z nich nepustí tak to oznám A pokračuj V štarte úlohy. Requires stanovuje, že sa musí služba vypnúť ak sa nepodarí niečo z Requires spustiť
Systemd je často vytýkána snaha pokrýt velkou část úloh, které dříve mělo na starosti více programů.
Jenže ono to i dnes má na starosti více programů, jenom se vyvíjejí pod jednou střechou a pod jedním názvem projektu.
Jako by služby potřebovaly mít další způsob definice, místo aby použili stávající.
Který z mnoha stávajících způsobů myslíte?
A to ani neřeším to, že v podstatě ta "super cool feature" v ošetřování závislostí služeb není vyřešena "novým" způsobem volání služeb ale stejně pomocí "After, ..., ...."
To není žádná super cool feature. Jde jenom o to, že původní SysVinit závislosti vůbec neřešil, služby se startovaly postupně za sebou v pořadí podle názvů. Naproti tomu systemd (a spousta jiných initů) explicitně definuje závislosti mezi službami, což dává například možnost startovat služby paralelně, a zjednodušuje to konfiguraci pro případ „nastartuj jenom služby, které jsou potřeba“.
Negramot jirsak opet v akci ...
Ne, nezajistuje to vic programu, zajistuje to jeden binarni blob, kterej nejde nicim nahradit, protoze nema zadny API a to co ma, je navic naprosto nepouzitelny. Nehlede na to, ze "nezbytne" potrebuje spoustu nestabilnich sracek, ktery v systemu nemaji co pohledavat, natoz startovat.
Paralelni start je neco, co 99,99999 adminu nanic nepotrebuje, je to naopak naprosto zavadnej postup.
Cílem je adminů se zbavit, stroj by se sám měl naučit, co kdy spouštět.
Aha, takze systemd se jednou stane umelou inteligenci. Uz se tesim, jak mam v notebooku 128 jader a 128 TB RAM na to, aby ta umela inteligence mela na cem bezet. BTW, co az ta umela inteligence usoudi, ze lidi jsou vlastne k nicemu a tak necha ten reaktor v elektrarne vyletet do luftu?
Jinak tedy ocekavam, ze objem kodu systemd brzy prekroci objem kodu jadra a vsech knihoven a aplikaci, ktere pro Linux existuji. Budouci distribuce Linuxu budou obsahovat systemd, jadro, par knihoven a textovy instalator. Vic se na tech 10 BlueRay disku nevejde.
Už tu byla snaha zbavit se I programátorů... No a I po takovém debilnim startupovem java/webovém/apkovem patlalovi je dnes shanka. Máte poměrně zkreslené představy co takový admin dela. A jaké různé nasazení je od strojů požadováno.
Dovedu si vaše myšlenky představit, ale s úplně jinou více unifikovanou a odladenou technologií. A hlavně pro specifická uziti.
1) Jenže ono to i dnes má na starosti více programů, jenom se vyvíjejí pod .......
Ano, už minule jsem Vám dokázal, že třeba logind bez systemd neběží a vytváří tím závislost závislost na systemd. A takových bude víc a přibývají. To jde vidět z toho, že místo kooperace pohlcuje a až pak "kooperuje"
2) Slovo další indikuje mnoho, nebo už začíná obvyklé podsouvání slov?
3) Neřešil. Ovšem systemd neřeší jenom to co píšete, ale spolkl i spoustu jiných věcí a pohřbívá kompatibilitu.
Ano, už minule jsem Vám dokázal, že třeba logind bez systemd neběží a vytváří tím závislost závislost na systemd.
Takhle funguje princip „dělej jednu věc a dělej ji pořádně“. Když program potřebuje udělat něco, co není jeho doménou, použije k tomu jiný program, který právě tohle dělá.
Slovo další indikuje mnoho, nebo už začíná obvyklé podsouvání slov?
Nerozumím, na co se ptáte. Dnes existuje mnoho způsobů definic služeb, každý init systém používá vlastní, a často se to i u jednoho systému liší napříč distribucemi. Proto jsem se ptal, který z těch mnoha stávajících způsobů měl použít systemd.
Ovšem systemd neřeší jenom to co píšete, ale spolkl i spoustu jiných věcí a pohřbívá kompatibilitu.
To klidně může být pravda, ale nijak to nedokazuje vaše původní tvrzení, že ošetření závislostí služeb měla být nějaká „super cool feature“ systemd.
" Když program potřebuje udělat něco, co není jeho doménou, použije k tomu jiný program, který právě tohle dělá."
Ale systemd to nedělá. Nepoužije k tomu jiný program, zde by to byl samostatný logind, ale použije vnitřní část blobu. A co není v blobu, tak se tam přidá.
Minule jsem Vám to prokázal, nyní několikrát připomenul, tím pádem už se k tomu nebudu vyjadřovat a marnit tím čas. Těmi zaobalenými řečmi okolo to neopravíte.
"Nerozumím, na co se ptáte. Dnes existuje mnoho způsobů definic služeb,"
Já měl na mysli volání služeb v konfiguráku, ale asi je to jen forma zápisu. I když se mi to nelíbí, tak zde uznávám že na tom buď tak nesejde, nebo by to mohlo být i celkem jedno.
"To klidně může být pravda, ale nijak to nedokazuje vaše původní tvrzení, že ošetření závislostí služeb měla být nějaká „super cool feature“ systemd."
:-D Vždyť to ošetření závislostí služeb je to hlavní, čím se systemd ohání že řeší.
Ale systemd to nedělá. Nepoužije k tomu jiný program, zde by to byl samostatný logind, ale použije vnitřní část blobu. A co není v blobu, tak se tam přidá.
Tvrdil jste, že logind závisí na systemd. Což by bylo v souladu s unixovou filozofií – logind dělá pouze to, co je jeho účel, na správu služeb používá funkce systemd. Podobné řešení najdete u spousty dalších unixových programů – třeba qmail nebo Postfix, porovnejte si je se Sendmailem.
Vždyť to ošetření závislostí služeb je to hlavní, čím se systemd ohání že řeší.
Nikoli. Nic takového není napsané na webu systemd, v článku, na Wikipedii, na wiki Debianu, na wiki Archu… Netuším, kde jste to sebral.
" logind dělá pouze to, co je jeho účel, na správu služeb používá funkce systemd"
To je v pořádku až do té chvíle, kdy je na pevno součástí systemd. Ano, filozofická úvaha. Ne všechno je modulární jenom proto, že část má jiné jméno. Zkuste logind spustit bez systemd. A tím, že se to snažíte pořád vyvrátit fabulováním, tak už jste to "Systemd je často vytýkána snaha pokrýt velkou část úloh, které dříve mělo na starosti více programů." co jsem napsal málem obrátil. Ale smůla.
"Vždyť to ošetření závislostí služeb je to hlavní, čím se systemd ohání že řeší.
Nikoli. Nic takového není napsané na webu systemd, v článku, na Wikipedii, na wiki Debianu, na wiki Archu… Netuším, kde jste to sebral."
Hned první věta
systemd is a system and service manager for Linux
https://wiki.debian.org/systemd
Wikipedie - druhý odstavec
" Démon systemd spravuje ostatní démony. Všechny démony, včetně systemd, běží jako procesy na pozadí. Během zavádění systému je systemd spuštěn jako první démon a během vypínání systému ukončen jako poslední."
" vývojáři systemd,[3] chtěli v mnohém překonat schopnosti init démonu. Chtěli zlepšit framework pro řešení závislostí, aby bylo možno během bootování vykonat více úloh současně a redukovat režii"
https://cs.wikipedia.org/wiki/Systemd
Dál nepokračuji, jen plýtváte mým časem a nic z toho, jenom neustálé převracení a odvracení od příspěvku.
SysVinit je také správce služeb a závislosti neřeší.
Každopádně to byl hlavní argument, že řeší závislosti, ostatně se o tom píše i v článku hned v prvním dílu
Ano, je to váš hlavní argument. Jenom netuším, jak jste na něco takového přišel. V článku je to uvedené na začátku třetího odstavce vlastností systemd, navíc hlavně v souvislosti s řešením cyklů. Hlavní vlastnost by byla uvedená na začátku prvního odstavce, nemyslíte?
No jasně, systemd je evidentně na prd, jak přijde slovo na závislosti tak se to hroutí, pak se ukazuje že stejně ani dobře nefunguje, tak co uděláme? Začneme tvrdit, že hlavní úlohou správce úloh není správa úloh a jejich závislostí a kde že je to napsané a jak moc je to hlavní feature když je to v článku až v třetím odstavci.
Dobře, tak ať se pobavíme: Tak co je hlavní úkol systemd když ne správa procesů a jejich závislostí?
Vážený trolle, nepodsouvejte mi věci, které jsem nikdy netvrdil. To, že musíte postupně upravovat svá vlastní tvrzení, to je váš problém.
Začal jste tím, že řešení závislostí má být údajně vlastnost systemd, která je pro systemd klíčová a odlišuje jej od ostatních správců služeb. Teď najednou tvrdíte, že správa závislostí je hlavní úlohou každého správce služeb. To je pravý opak toho původního tvrzení. Popíráte sám sebe, a ještě to zkoušíte svést na mne.
Hlavním úkolem SysVinitu, OpenRC, daemontools i systemd je správa úloh. Některé z jmenovaných správců k tomu používají správu závislostí, některé ji nepoužívají – z čehož je patrné, že správa závislostí nemůže být jejich hlavním úkolem.
Nic takového jsem nenapsal Trolle. Napsal jsem:
"A to ani neřeším to, že v podstatě ta "super cool feature" v ošetřování závislostí služeb není vyřešena "novým" způsobem volání služeb ale stejně pomocí "After, ..., ...." [ 1 ]
a kde je tam teda:
" která je pro systemd klíčová a odlišuje jej od ostatních správců služeb." [ 2 ]
A napsal jsem, že o systemd se pořád tvrdí že to má konečně pořádně vyřešit služby a závislosti v jednom. A to je furt dokola a i v článku je to hned v prvním díle, hned první příklad užití.
Už minule jsem Vás prokoukl. Prostě si něco vyberete, lehce to ohnete a pak na to začnete odpovídat dalšíma otázkama na tu ohnutou věc. Stejně jako to nyní v [ 2 ]. Ale to na mě pane Jirsáku neplatí
Takže podle vás „super cool feature“ znamená „nezajímavá vlastnost, kterou už má každý“. Dobře.
A napsal jsem, že o systemd se pořád tvrdí že to má konečně pořádně vyřešit služby a závislosti v jednom.
Ano, to jste si vymyslel a napsal, a vůbec se nenecháte rozházet tím, že vás opakovaně upozorňuju, že je to pouze vaše tvrzení a nikde jinde to napsáno není.
i v článku je to hned v prvním díle, hned první příklad užití.
Netuším, na co se odkazuje „první díl v článku“. Já jsem odkazoval na článek, pod kterým diskutujeme, a v něm to jako „super cool feature“ označené není.
Už minule jsem Vás prokoukl. Prostě si něco vyberete, lehce to ohnete a pak na to začnete odpovídat dalšíma otázkama na tu ohnutou věc.
Prokoukl jste dobře, ale sebe. To vy jste začal u „ošetřování závislostí a služeb je super cool feature“, skončil jste „správa procesů a jejich závislostí“, a tváříte se, že je to pořád to samé. Ano, na ty vámi ohnuté věci se ptám, protože se snažím zjistit, proč jste je ohnul.
Pokud v textu "super cool feature" čtete něco jako nezajímavá nebo je to v překladu „nezajímavá vlastnost, kterou už má každý“ nebo vlastnost kterou nikdo nemá, tak doporučuji očního lékaře a nebo psychologa.
"
Hlavní výhody a nevýhody oproti sysvinit
Ještě se v kostce podíváme na hlavní výhody a nevýhody. Konkrétně si je přiblížíme v následujících článcích:
konfigurační soubory – odpadá nutnost psaní redundantního kódu démonů
automatické řešení závislostí
......
"
Ani nemusím chodit dál než do článku, ke kterému tady diskutujete, pokud to nevíte
... Na zbytek těch volovin nemám čas ....
Pokud v textu "super cool feature" čtete něco jako nezajímavá nebo je to v překladu „nezajímavá vlastnost, kterou už má každý“ nebo vlastnost kterou nikdo nemá, tak doporučuji očního lékaře a nebo psychologa.
Nikoli, já to čtu jako jako „vlastnost, která je pro systemd klíčová a odlišuje jej od ostatních správců služeb“. Ale to už jste napsal, že takový význam to nemá. Zajímalo by mne, co jste tím tedy chtěl říct.
automatické řešení závislostí
Aha, takže do sbírky synonym k „ošetřování závislostí služeb“, „správa úloh a jejich závislostí“ a „konečně pořádně vyřešit služby a závislosti v jednom“ můžeme přidat „automatické řešení závislostí“. Vy byste se asi nudil, kdybyste pro jednu věc používal jeden termín, že?
>> A napsal jsem, že o systemd se pořád tvrdí že to má konečně pořádně vyřešit služby a závislosti v jednom.
> Ano, to jste si vymyslel a napsal, a vůbec se nenecháte rozházet tím, že vás opakovaně upozorňuju, že je to pouze vaše tvrzení a nikde jinde to napsáno není.
To si vymyslel nejaky Lennart Poettering.
Tvrdil jste, že logind závisí na systemd. Což by bylo v souladu s unixovou filozofií – logind dělá pouze to, co je jeho účel, na správu služeb používá funkce systemd.
Problem neni v tom, ze logind zavisi na systemd, ale v tom, ze logind zavisi vyhradne na systemd. Take v tom, ze se systemd nemuzu pouzit loginbflmd. A kdybych mohl, otazka je, zdali by Gnome skousl fakt, ze misto logind ma k dispozici loginbflmd.
Jinak co nechapete na tom, ze je uchylne, kdyz kvuli Gnome musim mit logind, kvuli kteremu musim mit systemd? Proc tedy neintegrovat Gnome do systemd rovnou? Stejne uz tam je Tetris a ovladac dveri od garaze.
" For one, in the last stages of GNOME 3.8.0 as release team we specifically approved some patches to allow Canonical to run logind without systemd"
https://blogs.gnome.org/ovitters/2013/09/25/gnome-and-logindsystemd-thoughts/
Vyvrať to
Znovu, muzete poslat zmeny, ktere kompatibilitu zlepsi.
Na jadro si ale taky nestezujete, ze dela IPC totalne jinak nez ostatni otevrene operacni systemy te doby. Viz diskuze edge vs level triggered a Bryan Cantrill (http://www.bsdnow.tv/episodes/2015_11_23-the_cantrill_strikes_back). Nakonec i systemd s sd-event kolem teto problematiky pracuje a v podstate dava za pravdu Bryanovi (http://0pointer.net/blog/introducing-sd-event.html).
Paralelizace neni spatna vec a i kdyz musi clovek vic premyslet, tak dlouhodobe urcite prinos viditelny je. Napr. pri nasazovani virtualnich stroju. Predstavte si, ze provozujete desetitisice virtualnich stroju jako kdejaky provider/ hoster dnes. To potom rozdil v rychlosti spusteni muze mit vyrazne financni dusledky a rozdil ve spokojenosti zakazniku.
Asi tím, že si každý k modulu prostě napíše, že pokud má být spuštěný, musí běžet to a tohle a tamto. Nemusí na to psát kus programu, který ověří, jestli něco běží, a pak to spustí, ještě než se spustí ten modul.
A co hůř, pokud proces mujdemond používá nejakystarydemond a chci použít novylepsidemond, tak jenom jednoduše změním dva řádky v popisu a je to hned. Kdežto kdyby mujdemond obsahoval přímo v kódu natvrdo nějakou funkcionalitu pro ověření a spuštění pro nejakystarydemond, tak si můžu užít půlden zábavy s úpravou zdrojáků a kompilováním...
A paralelní start není jenom o rychlosti. Když mám nějaký pokusný modul a zhavaruje po startu, tak všechno, co na něm nevisí, v klidu naběhne. Ony jsou i pravidla ohledně toho, že na čem nemám závislost, to mě nemá ovlivnit.
"Asi tím, že si každý k modulu prostě napíše, že pokud má být spuštěný, musí běžet to a tohle a tamto. Nemusí na to psát kus programu, který ověří, jestli něco běží, a pak to spustí, ještě než se spustí ten modul."
IMHO: No a to je právě to, že místo aby napsali kód, který akorát kontroluje závislosti, tak tu máme nový 1/2 desktop, nekompatibilní s ostatními a inity se do služeb stejně vypsat musí tak i tak ....
Jenze pokud potrebujes aby neco bezelo, tak si to stejne musis overit sam, systemd nic overit neumi. Pokud potrebujes aby bezela databaze, tak je ti systemd nahovno, protoze si musis pustit neco, co si do ty databaze hrabne, abys zjistil, ze vazne bezi. Databaze muze sama o sobne startovat klidne desiky minut
Ovsem pri systemd ti nenastartuje projistotu vubec ... ona bude startovat, az na ni hrabes ... takze misto 10-20 minut, klidne hodinu - to nez se dostanes k tomu na ni hrabnout.
Mozna byste se mel podivat na nasledujici clanek: https://www.linuxvoice.com/interview-lennart-poettering/
Myslim, ze v jistem ohledu ma pravdu. Ti nejvetsi kritici casto maji o kritizovanych systemech mensi povedomi nez by bylo nutne pro informovanou kritiku. Ja v posledni dobe zacal koketovat s FreeBSD/ PC-BSD a mam v planu vyzkouset OpenIndiana (OpenSolaris) a OpenBSD.
A komu se neco ze svobodneho softwaru nelibi, muze nakonec vyuzit ty casti, ktere se mu libi nebo podporit penezi/ cesem/ vyvojem/ vyuzivanim jiny projekt.
Nikdo neni bez chyby. I Linuxove jadro je za nekolik veci kritizovano (IPC, chybejici opravdovou alternativu DTrace apod.) ale to bych zminoval zase jen veci, o kterych sam vim malo. Slo mi o znazorneni pripadu. Proste se snazme porozumet a vybrat si ze softwaru to nejlepsi a casem se sjednotit na nejakem kvalitnim reseni pro vetsinu a potom nekolik napr. plug-inu nebo alternativnich mensich reseni pro specializovane uzivatele. Systemd tomu nebrani, tak mi uprimne prijdou ruzne nekonstruktivni dodatky mimo misu. Let the code speak! PRs/ patches are welcome!
"Systemd tomu nebrani, tak mi uprimne prijdou ruzne nekonstruktivni dodatky mimo misu. Let the code speak! PRs/ patches are welco"
Brání, samozřejmě nevím o všech "špecích", ale díky systemd už bez systemd-logind není možnost spustit Gnome - tedy, byla napsána obezlička. Jak dlouho to vydřží - tak kdo ví a jak dlouho to bude platit jenom pro Gnome - kdo ví. Tím padá to Vaše každý si může vybrat. A bude padat dál, protože se to ubírá dál stejným směrem
Tak to ale v open source funguje. Proč GNOME de facto závisí na systemd-logind? Protože to je to, co drtivá většina přispěvatelů a uživatelů používá. Nikdo v GNOME neříká, že tam nemůže být podpora pro nic jiného. Jen se tam prostě nenajde dobrovolník, který místo nekonečného diskutování na Internetu, jde a tu podporu pro to, co používá, napíše a bude udržovat. Ostatně GNOME pořád běží na na BSD, akorát z komunity o stovkách přispěvatelů na tom má zájem dělat jenom jeden člověk, takže když potřebné věci neudělá on, tak nikdo.
Přispěvatelé do open-source projektu přispívají často kvůli tomu, že tím řeší nějaký vlastní problém. Každý si drbe svoje vlastní záda. Takový projekt nemá povinnost podporovat kdejaký obskurní systém nebo třeba distribuce obskurní architekturu jenom proto, že se najde někdo, kdo by ten projekt na nich chtěl provozovat. Rozhodují ti, kteří dělají, a to jsou v GNOME v drtivé většině lidi, kteří jedou na Linuxu se systemd.
> Rozhodují ti, kteří dělají, a to jsou v GNOME v drtivé většině lidi, kteří jedou na Linuxu se systemd.
To je pochopitelne a vcelku legitimni. Ale nijak to nemuze popirat, ze myslet na jine lidi muze nekdo vnimat jako ctnost a jeho absenci prozivat jako zklamani. Zvlast pokud se porad mluvi o "komunite" a "spolupraci".
Pokud by se jeho vyvojari rozhodli, ze GNOME pojede jenom na Ubuntu s MIRem, protoze to je to, co oni pouzivaji, muzou z toho porad byt uzivatele jinych dister s jinym displayserverem *zklamani* a rozcarovani. A dokonce to muzou celkem legitimne vnimat jako hodne podobny vendor lockin, jako zazili na Windows. Nutit nekoho psat nejaky kod ale samozrejme nemuzou. ...a ani nemusi, protoze alternativ je habadej. Vcetne Mate nebo Lumina*.
* on totiz nutne clovek nemusi prispivat do GNOME. Muze taky dojit k nazoru, ze nema smysl psat narovnavak na ohybak a lepsi je rovnou napsat neco rovneho.
Víceméně se shodneme. Že z toho můžou být uživatelé zklamaní, nepopírám. Nicméně pokud člověk chápe, jak open-source projekty fungují, nemusí se mu to líbit, ale pochopí to. Každý projekt má nedostatek zdrojů a ty se nevynakládají efektivně tak, že se bude podporovat všechno, co se líbí kdekomu z uživatelské základy. A není o tom, že by člověk byl vůči alternativám nepřátelský. Typický FLOSS vývojář totiž nevypadá tak, že má moře času a neví, do čeho by píchnul. Většinou musí těžce prioritizovat.
Pokud drtivá většina přispěvatelů a uživatelů GNOME pojede na Ubuntu a Miru a nenajde se nikdo, kdo bude udržovat podporu pro X nebo Wayland, může se stát, že GNOME pojede jenom na tom a bude to pochopitelné. Vendor lockin v tom nevidím. Na rozdíl od Windows totiž může kdokoliv dojít a tu podporu pro svůj systém si tam dodělat. Pokud by se tomu projekt vehementně bránil, to by byla jiná. Že se někomu nechce přispívat do projektu a raději odejde k takovému, který jeho systém už podporuje, je taky zcela legitimní rozhodnutí.
> Každý projekt má nedostatek zdrojů a ty se nevynakládají efektivně tak, že se bude podporovat všechno
"Lokálně" (z pohledu jednoho projektu) to tak může být. "Globálně" to tak být nemusí, pokud se jeden projekt rozhodne být úžejiprofilový a vedle něj tímpádem musí vzniknout v podstatě to samé znovu.
> Vendor lockin v tom nevidím. Na rozdíl od Windows totiž může kdokoliv dojít a tu podporu pro svůj systém si tam dodělat.
Ne všechno, co je formálně pravda, je pravda i prakticky. Sice si formálně můžu vzít jádro FreeBSD a přepsat ho na mikrojádro, ale prakticky to dělat nebudu, protože to je enormní množství práce. A podobně enormní množství práce může být ohnout GNOME aby pracoval jinde než na Linuxu se systemd.
Ono to teď linuxákům přijde jako strašně čupr a logické, protože Linux má "majoritu v minoritě". Ale pokud by svého času stejný postup volilo GNU a ostatní OSS projekty (píšeme Firefox pro Hurd, protože to je to, co používáme), žádný Linux v dnešní podobě by nevznikl. Byl by jenom nedokončený Hurd a kdesi na jakémsi FTP serveru by leželo jádro zvané Linux, které by bez userlandu a aplikací bylo k ničemu.
To, co umožnilo ten obrovský rozvoj OSS byly právě vzájemné ohledy, přenositelnost, snaha o spolupráci. Jakmile se Linux rozjel, nějak na to linuxáci pozapomněli...
...a mně to může být tak maximálně líto, protože na takové chování samozřejmě mají právo. Stejně jako má Microsoft právo užívat si svoji hegemonii na desktopu.
Mě by dost zajímal adoption rate RHELu 7, ale to bohužel nezvěřejňují. A navíc zápory systemd tam plusově vyvažuje docker...
Docela bych teď chtěl v RH pracovat, protože jestli k nějakým peprnostem dojde, ven se to asi moc nedostane :) Nebo ne v důvěryhodné podobě.
Mně RHEL 7 nějak blbnul při startu i jenom při testování. Mít to nasazovat na servery, tak budu mít pěkně sevřený půlky ;)
Ja mam nahozenou jednu instanci centosu ... coz defakto rh7 je ... kvuji req jednoho z dodavatelu. A uz sem resil nekolik desitek zavad, prave kvuli systemd, protoze jeho chovani je naprosto nepredvidatelny. Nastesti je to jen v testovacim provozu, ale uz sem dodavatele informoval na to tema, ze pokud by se to hypoteticky melo nasadit naostro, tak at na tenhle system rovnou zapomene. Nehodlam totiz po kazdy aktualizaci restartovat, pripadne resit, proc nenastartovalo to, co nastartovat ma, ale zato nastartovalo to, co nema.
Ono to totiz (napriklad) odmita servis ktere dodal dodavatel restartnout. Takze je treba restartnout celej system ... uzasny. (respektive se to tvari, ze restart probeh, ale nic se nerestartuje). V logu samo absolutne nic.
Mohl byste se vyjadřovat slušně i pokus Vás něco zlobí. Taky místo hořekování můžete implementovat ukládání do textové podoby místo binární. Nebo máte konkrétní indicie, že by to bez přepracování celého ekosystému kolem systemd nebylo možné?
Pokud Vám systemd extrémně vadí a jste zákazníkem RedHat, měl byste konstruktivní kritiku vylíčit Vašemu kontaktu.
Chtěl bych upozornit, že systemd nijak nezávisí na firmě RedHat, jen někteří vývojáři v čele s LP a KS pro tuto firmu pracují.
Stabilita a jistota je i pro mně prioritou. Pokud můžete reprodukovat nějaké chyby, pošlete prosím bug report na odpovídající místa. Jako vždy, pafches are welcome!
Nebyl jsem tenkrát u toho, ale nemyslím si, že adopce Linuxu projektem GNU byl nějaký altruismus. Byl to IMHO spíš sňatek z rozumu. GNU mělo nástroje pro userspace, ale nemělo kernel, tak skončili po Linuxu, který s nimi sdílel stejný pohled na licenční politiku. Kdyby byl v té době hotový Hurd nebo byl aspoň v nějakém nadějném stavu, tak nikdo z GNU Linux neřeší. Z jejich pohledu proč taky?
Spolupráce a ohleduplnost v OSS je v rovině toho, že nikdo nebrání lidem, aby se přidali a udělali podporu pro to, co potřebují, ne v rovině, že někdo pracuje na něčem, pro co nemá osobní zájem a vlastně ho to nezajímá, jenom z ohleduplnosti k ostatním. Neříkám, že se to neděje vůbec, ale dle mých zkušeností minimálně.
Jo, tak to asi. Kdo ví.
Problém systemd je ale v tom, že místo chytrých, jednoduchých řešení (nemyslím přímo řádky v kódu) přichází s monolitickým celkem, který místo uceleného a odolného řešení vše pohlcuje. A z toho vychází ten problém, že jak pohlcuje další a další části systému, tak s nimi pohlcuje a tím tedy zanáší i jejich další chyby. Takže se v podstatě dá říct, že buď systemd nakonec vyřeší všechny chyby a nedostatky všeho co pohltil a spasí tím komunitu linuxu a nebo bude do nekonečna trpět i těmito zanesenými chybami. Čím víc toho spolkne, tím víc jich bude.
Nepsal jsem nic o altruismu ani o tom, že by někdo měl něco psát pro systém, který nepoužívá. Jenom mám prostě pocit, že dřív bylo vnímáno jako super výhoda OSS, že se píše přenositelně a nehážou se lidem klacky pod nohy tam, kde to není nezbytně nutné*.
Kdyby nebyl u gcc a spol. dáván takový důraz na přenositelnost, nebyl by OSS tam, kde teď je.
V podstatě, kdybych se na to chtěl dívat extra škarohlídsky (což nechci), mohl bych říct, že Linux vyžral z okolního světa co mohl, tím se vyšvihl, a jakmile získal suverénní postavení, začal si hrabat na svém písečku.
--
* Byl to osovobozující juchů moment, vidět třeba Firefox běžet na BeOSu - po tom, co člověk strávil x let ve svěrací kazajce Windows...
Ad článek. Mě se "líbí" jak si vezme nějakou větu od kritiků systemd, vytrhne ji z kontextu (nebo prostě nepochopí její myšlenku) a začne argumentovat úplně něčím jiným (unix se distribuoval jako jeden balíček jádro + shell), přičemž kritici systemd to myslí jako dělej jednu věc a dělej ji pořádně (a systém postav z existujících kousků). (Dobře, je možné diskutovat o tom, co je to vlastně "být unixový", což vše do toho patří a co už ne, každopádně to na samotnou myšlenku nemá vliv.) Taková diskuse je o ničem. Podobně vypadají diskuse i pod některými bugy systemd.
kritici systemd to myslí jako dělej jednu věc a dělej ji pořádně (a systém postav z existujících kousků)
Přesně takhle systemd funguje, tedy až na tu závorku, kterou jste si tam přidal vy. Autoři systemd zjevně používají jiný přístup, než ten v závorce, a to „když žádný vhodný existující kousek neexistuje, napiš nový“. Mně ten přístup připadá dlouhodobě lepší, než „použij za každou cenu existující kousky, a když nevyhovují, tak k nim přidělej narovnák na vohejbák“.
Tu jsem si tam nepřidal já, ale to je celkem jedno.
To je otázka na jakých principech chceme mít ten systém postaven. Mě vůbec nevadí a naopak mi vyhovuje, když otevřu skript (v shellu, ten tam stejně musí být) a uvidím tam kombinaci základních nástrojů* (find, sed, grep, apod.). Všechno tohle v tom systému musí být, admin s tím umí pracovat a je podle mě v pořádku, pokud se z těchto základních kamenů postaví něco většího.
Proč. Pokud mám systém, kde je vše soubor (nebo alespoň podstatná většina, abychom si zase nehráli na slovíčka), tak mi stačí základní nástroje na práci se soubory a je to. Každý admin si oblíbí své nástroje pro práci se soubory a je s nimi efektivní.
Pokud mám například i logy jako textové soubory (čitelné člověkem a zpracovatelné počítačem), tak mi postačí existující známé nástroje na to, aby mimo všech ostatních souborů v systému mohl pracovat i s logy. Jakékoliv zlepšení základních nástrojů automaticky znamená zlepšení práce v mnoha oblastech.
Kdežto pokud mám na každou druhou věc speciální rozhraní, tak jednak nemůžu použít existující nástroje ale musejí být speciální na danou věc, ale také zlepšení nějakých základních nástrojů se této věci vůbec nedotkne, protože ji nepoužívá.
Pochopitelně v některých oblastech mají speciální nástroje a speciální rozhraní svůj smysl.
*) A ani netrvám na tom, že ta sada programů musí být zrovna tato. Pokud někdo přijde s jinou minimální sadou atomů na které se dá postavit větší celek, jsem pro. Systemd to není.
Pokud je součástí definice té minimální sady nástrojů to, že to není systemd, pak to systemd opravdu splnit nemůže, a není co řešit.
Problém s rozhraním postaveným na souborech je ten, že se krkolomně řeší notifikace (typické řešení je, že se proces každou chvíli dotazuje, jestli se něco nezměnilo, místo aby spal a čekal, až ho jádro se změnou probudí), jsou tam problémy se souběhem (proces má zpracovat nějaký stav, který se změní dřív, než proces proběhne), a neřeší transakčnost (došlo ke změně, reakce na změnu selhala, je tedy potřeba odvolat i původní změnu).
Mimochodem, systemd se od jiných init systémů liší právě tím, že místo „speciální rozhraní pro každou druhou věc“ zavádí jedno univerzální rozhraní. Ano, nové rozhraní vyžaduje nové nástroje, ale to je normální pokrok. Rozhraní „vše je soubor“ zde také nebylo od stvoření světa, také bylo ve své době nové a znamenalo, že nástroje pro předchozí rozhraní s tím novým rozhraním nefungovaly.
Pokud je součástí definice té minimální sady nástrojů to, že to není systemd, pak to systemd opravdu splnit nemůže, a není co řešit.
Myslím, že z uvedené řady některých nástrojů je asi jasné, o jakou sadu by se mělo jednat. find je univerzální nástroj na nalezení souborů dle kritérií a je mu úplně jedno, jaké soubory to jsou. grep je univerzální nástroj na filtraci textu. Nic takového systemd nenabízí. Snad ze sebe nemusíme dělat idioty.
(typické řešení je, že se proces každou chvíli dotazuje, jestli se něco nezměnilo, místo aby spal a čekal, až ho jádro se změnou probudí)
No typické řešení není nutné optimální. Pokud ten program skutečně pracuje nad měnící se sadou souborů, tak se dá použít inotify, případně lze ten program upozornit na změnu třeba přes signály.
Ano, dá se použít inotify nebo signály, přičemž třeba ten find neumí ani jedno. A světe div se, systemd nabízí právě to univerzální rozhraní. Kdyby se začínalo na zelené louce, místo souborů by se použil třeba dbus a i grep a find by spolu komunikovaly přes něj, místo přes rouru. Jenže na zelené louce se nezačíná, proto je potřeba nějaké lepidlo, které všechny ty legacy způsoby komunikace (soubory, roury, inotify, signály, sokety) umožní integrovat do jednoho univerzálního rozhraní. Mimochodem, drtivá většina všech chyb a problémů se systemd je právě ve zpřístupňování té legacy funkcionality – prostě se ty rovnáky na vohejbáky nepodaří vždy integrovat tak, aby to nikdo nepoznal. Což je podle mne příznak toho, že ty rovnáky na vohejbáky byly špatně a je dobře, že se nahrazují něčím čistším. Jistě, než se podaří tyhle slepence rozplést a nahradit čistým řešením, bude to chvilku bolet. Ale pořád lepší, než to nechat hnít dál.
Ano, dá se použít inotify nebo signály, přičemž třeba ten find neumí ani jedno.
A proč by to měl umět?
Kdyby se začínalo na zelené louce, místo souborů by se použil třeba dbus a i grep a find by spolu komunikovaly přes něj, místo přes rouru.
Proč? Co je špatného na klasické rouře?
Jenže na zelené louce se nezačíná
Tve to už je jak ten rozhovor s LP, který tady někdo postoval. Neustále slovíčka jako problem, a solution, ovšem nikde se nedozvíme, v čem vidí problém, proč je ho potřeba řešit a proč zrovna takto.
prostě se ty rovnáky na vohejbáky
Jenže ty rovnáky na ohejbáky vznikají právě tedy, když někdo nepochopí, k čemu je dané řešení určeno, případně když problém řeší na jiné vrstvě, než ten problém vznikl.
Mimochodem, drtivá většina všech chyb a problémů se systemd
Nemůžu posoudit, já mám jediný problém se systemd a to je že journald neustále ničí své vlastní logy na zcela zdravém systému. LP ani nikdo jiný to řešit nechce, já patch na opravu určitě nepošlu, protože nejsem programátor. Rezignoval jsem, zapnul jsem forward to syslog a řeším si logy po svém. A to je zrovna journalctl jedna z těch užitečnějších věcí (i když to nepovažuju za nějakou killer featuru, logy se uměly řešit už hromadu let před tím).
Ale pořád lepší, než to nechat hnít dál.
Hnít dál co?
Dovolil bych si pár dotazů.
1. Zapadne SystemV do sady minimálních nástrojů? Proč?
2. Dejme tomu, že si napíšu nějakýho daemona. A chci, aby se spustil po startu. Je blbý mít nástroj, kterýmu dám v souboru informace, kde je binárka, v jaké konfiguraci ho spustit a co požaduje, aby se postaral o zbytek?
3. K čemu je ta omáčka v init.d, která místo popisu, co je potřeba, sama jede jako program?
4. Co říká SystemV třeba na oprávnění něco spustit (mimo přístupu k souboru pomocí UID/GID)?
1. Je z nich vystavěn (bash skripty používající základní nástroje).
2. Není to blbé.
3. To, že se ta omáčka přesune jinam, nepřestane existovat. Klidně si ji můžete dát bokem a v nějakém souboru mít jen definované start a stop akce. Úplně stejně, jako je definujete v případě systemd (to je i odpověď na 2).
4. Nevím, proč by to měl sysv řešit. Pokud ten uživatel má právo spustit danou binárku a dostane se k potřebným souborům, tak ten uživatele stejně může danou start akci spustit ručně a nikdo mu v tom nezabrání.
Doporucuji zacit rovnou s OpenBSD. Usetris si spoustu casu ;-)
Nez FreeBSD/PC-BSD, tak jedine DragonFlyBSD i kdyby jen kvuli Hammer FS a vkernel (ale i par dalsim vecem).
OpenIndiana/OpenSolaris to zapomen. To je davno mrtve. Prosta ztrata casu. Oracle to uspesne pohrbil. Ilumos je jakys takys pokracovatel, dost aktivni bylo SmartOS, ale Joyent chysta nejakou vetsi "produktizaci".
Díky za tip. Na OpenBSD si určitě čas hlavně kvůli firewallu a routeru udělám v blízké době.
FreeBSD ochutnávka v podobě PC-BSD byla zatím super jak na desktopu, tak serveru. Hlavně základní dokumentace je opravdu na vysoké úrovni. Vše bylo srozumitelné. DragonflyBSD je asi dobré přes grafiku, mají dost aktuální ovladače.
OpenIndiana jsem chtěl kvůli zkušenosti a lx-branded zones. Prostě oťukat, abych věděl, o čem je řeč.
Chyba se divat na OpenBSD jen jako na firewall nebo router OS. On je to totiz i vyborny desktop OS. Treba takove Gnome je na nem posledni dobou vzdy drive nez na Linuxu. Nad tim by se chlapci v RH meli zamyslet :D
FreeBSD/PC-BSD jasne ZFS, Dtrace a tak, ale az prilis mi to uz pripomina Linux, i kdyz proti nemu je to porad uplne nekde jinde. Ja uz ale bohuzel dlouha leta porovnavam s kvalitou OpenBSD a tedy situace na trhu je dost tristni.
Grafika. Nejaktualnejsi OpenBSD a FreeBSD, DragonFlyBSD se snazi posledni dobou drzet krok aspon trochu, ale spise importuji veci z Linuxu jako zkratku. Nvidia jedine na FreeBSD, jinak noveau a na OpenBSD je lepsi se Nvidii vyhnout (obecne tam sroty nejsou podporovane a vitane :-))
OpenIndiana vubec, je to fakt uz dlouho mrtve. Aktualne ohledne virtualizace a cloudu jedine rovnou zkouset SmartOS.
Se systemd jsem se už tak nějak smířil, i díky tomu že start systému je, zvlášť na SSD, bezkonkurenčně rychlý …
To snad není možný, jak na tenhle starý a laciný trik skočí tolik lidí.
Zrychlení kvůli nespouštění služeb při startu, ale až při jejich prvním použití. Podobně jako ve Widlích, kdy úvodní login naběhne relativně rychle, ale než se dostanou aplikace do použitelného stavu a začnou reagovat na vstup, trvá to zase o dost déle. O tom, že služba nenaběhne korektně, se uživatel dozví až s libovolně dlouhým zpožděním, kdy to nečeká a v nevhodný moment. Třeba po aktualizacích.
Při tom je rozdíl v rychlosti startu v řádu desítek vteřin až jednotek minut nepodstatná banalita. Na desktopech s uspáváním, na serverech už vůbec. Možná u jednoúčelových virtuálek v kontejnerech nebo vestavěných "hloupých" zařízení.
Az nekdo udela pro desktop systemd-screenpreview a systemd-windowpreview a systemd-emulateappbehaviorbeforeitstarts tak tyto zpatecnicke postoje budou zcela zbytecne :).
A potom vznikne systemd-servehttpcachebeforeapachestarts a systemd-servehttpcachebeforenginxstarts a systemd-receiveemailsbeforepostfixstarts. Do systemd-cronreplacement si ale budete muset pridat systemd-purgesystemdcaches
Pro ty co jeste pouzivaji nahodou textovy login bude systemd-emulateshellbeforebashanditsprerequisitesload
(mozna, ze nektere z tech veci uz existuji, nesleduji vyvoj systemd, skoncil jsem nekde kdyz tam implementovali tetris a hangmana).
Co sa mne nepaci je v prvom bode tu http://without-systemd.org/wiki/index.php/Local_copy_of_boycottsystemd.org_archive a tiez to ze je potrebne viac restartovat po upgradoch... Dovolim si citovat: "Its responsibilities grossly exceed that of an init system, as it goes on to handle power management, device management, mount points, cron, disk encryption, socket API/inetd, syslog, network configuration, login/session management, readahead, GPT partition discovery, container registration, hostname/locale/time management, mDNS/DNS-SD, the Linux console and other things all wrapped into one.". Ale systemd si uz "vybil" zuby - docker ho nema rad a ani nepotrebuje... Na druhej strane docker takisto nie je ziadna slava specialne z bezpecnostneho hladiska...
Este ale chcem dodat ze ulohy ktore sa ocakavali od init boli zozire a v mnohych pripadoch "riesili" problem ci bolo skor sliepka alebo vajce... (Napr. Mountovanie diskov/sifrovanie/hibernacia a spat...) Systemd to riesi tak ze zo seba vytvoril "vajcosliepku" (TM) s tym ale ze tych vajec a sliepok je viac a vsetky su v systemd... Ci je to spravne riesenie ukaze cas...
Tak Docker začátkem letošního roku koupil Unikernel systems, tak snad to dostane lepší formu. Do té doby a blíže Unixu a Posix aplikacím výborný http://rumpkernel.org
Mě dostává, kolik lidí má výhrady proti SystemD. Jednoho takového jsem znal osobně, a přestože jsem dokázal dementovat všechny jeho připomínky, které byly totálně mimo, tak si stejně nenechal říct.
Hlavní výhrada je většinou "je to nové, neumím to, nechci se to učit apropos je to naprd", kterou nikdo takhle přesně neřekne, ale zaobalí jí do keců, jak třeba byl Init V simple a lepší proto a proto, přičemž často SystemD viděl jen z rychlíku a nezvládne ani porovnat.
Třeba double-forking v Init V. Psal jsem si v Pythonu démona a složitě přes knihovny jsem řešil double forking, psal vlastní init skripty atd. V SystemD napíšu konfigurák o 5 řádcích, v pythonu to nepíšu ani jako démona, logy píšu rovnou na konzoli, a SystemD se o všechno postará.
Init V je v tomhle tak děsný, že na některých serverech instaluji SupervisorD, aby obešel ty hrozné a děsivé init skripty.
Podle mě lidi co nemaj rádi SystemD ho z většiny nikdy nepoužívali a ani neuměj používat a jejich připomínky jsou jenom keci zastřešující celou pravdu - tj. nechci se nic nového učit.
Já se systemd nebojím a za těch pár let jsem jej docela dobře poznal. A tento seriál vítám...
Jiná věc je, že čím více jej znám, tím více mě - nebetyčně - s.re.
A tak díky za Devuan, CentOS6 a FreeBSD. Jo a taky za revoltu Busyboxu.
Smutný pohled na dnešní svět Linuxu. Bohužel nic lepšího po ruce mnohdy není :-( ... škoda, že tak degeneruje.
Děkuji velmi za článek. Rád si počtu i další díly. Systemd je holt věc se kterou se musím naučit žít.
První poznámka: není pravda, že SystemV má nulovou paralelizaci. V Debianu byla přidána možnost concurrentního startu a pokud byly dobře napsány hlavičky v init skriptech, tak to najelo fikaně myslím pomocí make (vtipné použití již existujícího) paralelně a fakt to bylo poznat. Ano se systemd je to ještě o něco rychlejší, to je fakt.
Nemohu ovšem pominout, že se systemd se objevily nové problémy, které zřejmě nejsou v zorném poli implementátorů, neboť se na jejich řešení kašle. Resp. rád se nechám poučit, pokud jsem jenom něco přehlédl, ale mám například tento konkrétní problém:
Pokud jsem z dokumentace pochopil, tak definice závislostí pro start není zároveň závazná pro zastavování jako tomu bylo u SysV. Tedy pokud probíhá reboot serveru a mám nějakého daemona, kterému se nechce rychle skončit - aplikační server nebo libvirt-guests apod., což může trvat i desítky minut, tak systemd mi rychle ukončí službu sshd, takže se na server už nedostanu! Teda nebýt přístupu například přes DRAC, tak jsem v řiti na nějakou dobu.
Se SysV se mi sshd zastavovalo jako jedna z posledních věcí. Zkoušel jsem to malou chvíli řešit pomocí závislostí, ale rychle jsem to nedal a začal zas řešit něco jiného...
Máte někdo nějaký tip jak tohle vyřešit?
Dokazal by mi nekdo rict v cem jsou vyhody systemd oproti upstart?
Se systemd jsem zatim nemel tu cest, ale podle tohoto clanku to vypada, ze je to vicemene stejna zalezitost. O upstartu muzu rict, ze je to spis nightmare. Pokud funguje, tak je to oproti sysv initu krasa. Ale jak neco nechce fungovat, je silene slozite najit proc to nejede. Proste zavislosti jsou uz nastartovane, ale moje sluzba proste nestartne. Proc, to nikdo nevi.
Jako desktopovy uzivatel mam se systemd potiz, kterou jsem driv nemel. systemd pri vypinani nekdy zasekne na "a stop job is running for Session 1 of user" a ceka to desitky minut. Mnohdy se neodmountuji vsechna uloziste. Proc, to jsem nevygooglil.
Debiani server (prakticky cisty debian bez non-repozitarovych balicku) se po upgradu z 7 na 8 (a tedy prineseni zavislosit na systemd) uz nedokaze nastartovat bez drobneho uzivatelskeho zasahu.
... ale jinak se SystemD nemam vubec zadny potiz a jeho existence a pritomnost me netrapi
S linuxem se potkavam od verzi 1*, tak nejak od 1993. Tohle je ale opravdu nedodelana, nepovedena parodie misto funkcniho init.
Na debianu jsem ji nasel "vylepsenou" o volani jakesi pofiderni utility, ktera mela schovat stdout a stderr a vypsat jej po skonceni startup scriptu naraz (aby se pri paralel spousteni neprolinaly pri startu hlasky z ruznych startup scriptu). Co by ne, at se prolinaj, alespon bude videt, co ta zhuverilost provadi.
Tenhle systemd ale neni poradne zdokumentovany, a pokud mate script se smyckou pro vlastni restart (pohodlne reseni pro klasicky init system), tak vam po celou dobu behu aplikace krade stdin a stdout (protoze script nedobehl).
Prasecina. Nemam problem treba s resenim na Solarisu, ale to je o kilometry jinde (a hlavne funkcni).
Uz dvakrat jsem zazil na centos stav, kdy po chybe zpusobene konfiguraci selinux (jiny zmetek, ale od NSA) zustal system pri startu nedostupny s nekonecnou smyckou. Nastesti ve virtualizaci, ale i tak, braaaavo !
Bohuzel, selhal i jinak tradicne konzervativni debian kdyz nasadil do distribuce nespolehlivy nedodelek - kdyz vezmu do uvahy historii a zbytecne obstrukce s raiserfs a zfs, nechapu, jak se toto vubec muze do STABLE distribuce dostat ?
Ze na to RedHat moc tlaci ? No tak at se treba po...
> Systemd umí řešit závislosti mezi démony a to i v případě vzniku cyklů [...] Pokud by nebylo možné jednotky spustit, např. z důvodu nevyřešitelných cyklů,
Z toho mi vyplyva, ze musi existovat nejake "vyresitelne" cykly. Jak takove cykly vypadaji a cim se lisi od "nevyresitelnych" cyklu?
(Je to vazne myslena otazka, fakt nedokazu rozsifrovat, co tim autor chce rict)
Dalsi mrte duvodu, proc se tomu vyhnout obloukem a nesahat na to ani 10m tyci ... http://www.abclinuxu.cz/zpravicky/systemd-230-a-systemd.conf-2016
Je lepší mít v teamu jenom samý kejvaly, co přikyvují na každou pitomost, čekají na rozhodnutí někoho jinýho a projekt dva roky stojí? Nebo někoho, kdo si pustí hubu na špacír, řekne "Hele chlapi, tohle je blbě dělaný a už mě to s...e, jak to ti ... po..., jdeme to překopat tak a tak"?
Úspěšný projekt vždycky začne tím, že někdo začne řešit, co ho osobně pálí. No a systemd, podle toho, kolik dister na něho přešlo, úspěšný projekt je.
Pro dalšího takovýho nemusíme daleko. Linus si taky do huby nevidí a na kolika strojích celosvětově jeho systém běží? Je to jenom o tom, jestli to svoje držkování člověk směřuje správně a dokáže s jeho pomocí "změnit svět". (Ne jako jistý J., který se snaží v diskusi lejnem prohodit zavřený skleněný dveře a diví se, že člověk za nima se mu směje.)
> cpal jsem linuxy, kam to šlo, vesměs z ideologických důvodů. Dnes to již nedělám, na desktopu jedu widle
Nedavno jsem to po letech zkusil - win10 se mi uplne odmitly aktivovat a win7 mi zacaly hlasit, ze uz nejsou legalni a at poslu 7 litru. Nemaj me tam asi radi. Takze na prerod si jeste musim pockat.
Este zopar poznamok...
Ja mam stale zmiesane pocity zo systemd. Aj ked sa zda ze komunita odpor vzdala a akceptuje ho... Usudzujem tak podla toho ze vela odbornych clankov proti SystemD nie je a zda sa ze uz vobec nie z poslednej doby. Najcerstvejsie a najlepsie co som nasiel je -
http://blog.darknedgy.net/technology/2015/10/11/0/
a starsie - http://without-systemd.org/wiki/index.php/Arguments_against_systemd (z http://without-systemd.org/wiki/index.php/Main_Page)
Rozmyslam o skuseni Devuan co je klonom Debianu bez systemd...
Tiez malo ludi vie ze pokus o schudnutu (zhubnutou) verziu Systemd bol urobeny - ale je DEAD - http://uselessd.darknedgy.net/ - pre nedostatok zaujmu...
Ak sa tu najdu experti - prosim poradi niekto tomuto pouzivatelovi?
https://bbs.archlinux.org/viewtopic.php?id=212404
https://bbs.archlinux.org/viewtopic.php?id=212404
To je jako by mu po suspendu nefungovala vnitřní smyčka 127.......
Jsem na linuxu uz dlouho a popravde mam rad veci citelne, tj. kdyz si clovek napr. muze prohlednout shell skripty co delaji. Proste a jednoduche. Na druhou stranu ten deklarativni jazyk systemd je podle meho opravdu prehledny. Tj. problem je, jestli se da na systemd spolehnout. Moloch (ve smyslu velikosti) je to v kazdem pripade. Vidim ze mne nezbude nez verit, ze to funguje spravne...
Zdravím,
Nerad bych se přímo zapojoval do diskuze jestli systemd je nebo není správná cesta, protože podle mě to záleží především na konkrétním nasazení, ale neodpustím si poznámku k článku jako takovému.
Mám pocit, že autor má značný bordel v představě toho, co je to init, init script a daemon. Předně daemon je proces, který nemá kontrolní terminál a není session leader (což znamená, že kontrolní terminál jen tak nedostane), to zajišťuje, že mu žádný jiný proces nebo uživatel nekecá do života. Daemon je jednoduše řečeno proces, který se o sebe musí postarat sám.
U sysV initu jsou v /etc/init.d (d zmananá directory, ne daemon) uloženy skripty pro spouštění daemonů, nikoli daemoni, tyto skripty se ani nijak nemají starat o to, aby se daemon stal daemonem . To si daemon zajistí sám (třeba libc funkce int daemon(int,int)), stejně tak si dobře napsaný daemon sám vytvoří pidfile, který pak slouží k jeho zastavení. Hlavní smyslem init scriptů je ověřit, že jsou v pořádku všechny náležitosti nutné ke spuštění daemona, tím nemyslím závislosti na jiných daemonech, ale třeba to, že má validní konfigurační soubor, což je také důvod proč i u systemd stejně musí být často něco doskriptováno.
Init scripty velmi často řeší i věci, které s daemony nesouvisí, třeba jako mount disků a celkově inicializaci systému, za kterou se neskrývá žádná služba, ale jednorázová sekvence příkazů. Z pohledu určité abstrakce v tom, ale není velký rozdíl. Pokud je daemon opravdu správně napsaný (tedy zcela samostatný), není principiálně rozdíl mezi službou typu přístup na disk a typu ssh. A sysV init se tak chová, nečeká, že daemon umře, stejně jako nečeká, že umře disk, inicializuje sytém a tím končí.
SystemD pro mě především redefinuje to co je daemon:
https://www.freedesktop.org/software/systemd/man/daemon.html
a do popředí tlačí dohled nad daemony, zatímco klasický daemon je definovaný právě tím, že nad ním dohled není. Procesy s dohledem (uživatel), mají kontrolní terminál.
Je to úplně jiná filozofie, nechci ji hodnotit, ale myslím si, že článek o systemd by právě toto uvádět měl.
Osobně zastávám názor, že dohled není špatný pro testy (pokud je třeba v produkci, je něco moc špatně), ale rozhodně si nemyslím, že by měl mít pid 1. To také není v článku podchyceno, pid 1 je více než číslo, to je Ten Proces, který jako jediný musí žít, aby nepanikařilo jádro, a je to Ten Proces, který když hacknu, tak mám celý systém a proto by měl být každý řádek jeho kódu velmi dobře zdůvodněný.
Moc pěkně napsáno! Díky za ten postřeh s daemon(7) - už to pročítám. Konečně nějaký hodnotý příspěvek tady v diskuzi :). Osobně jsem z přechodu na systemd na serverech poněkud rozladěn, protože to přeci jen znamená chyby, které se SysV nebyly. Pořád doufám, že jsme na začátku a bude se to zlepšovat. No nevím. Je vidět, že ta věc byla vymyšlená hlavně s ohledem na desktop. Bohužel to je tlačeno i na servery. Zatím tápu jak se to budu snažit skloubit s corosync/pacemaker clusterem a jak se to bude chovat. Zatím nemám nastudováno, tak jsem dalek hodnotit kategoricky.
Z článku, diskuze a předchozích zkušeností jsem dospěl ke dvěma závěrům:
1. SystemD do svobodného linuxu tiše a pomalu zavádí totalitu. Že to spousta lidí nevidí, mě nepřekvapuje. Dodnes spousta lidí nevidí, že se z EU stal fašistický totalitní spolek s neuvěřitelnou arogancí moci nikým nevolených byrokratů.
2. Jirsák je pořád stejný demagog, idiot a troll, který má neustále potřebu blbě se vyjadřovat ke všemu.
Vite, ja to opravdu nechapu. Vetsina argumentu, proc zavadet systemd mi neprijde prilis dobra.
Proc proste a jednoduse neudelat vetsi vlnu "evoluce" ve stylu "keep it simple". Proc nevzit vsechny male programky a nesnazit se z nich vytvorit funkcni celek a standardizovane prostredi? Proc psat neco noveho, velkeho, obludneho. Neco, cemu nikdo krome dev teamu nerozumi?
Nebylo by proste lepsi vzit N utilitek a dat je jednoduse dohromady aniz bych psal velkou obludu ala microsoft?
Skutecnost se ma takto, ikdyz systemD neni uplne idealni a ma sve mouchy, lze rict ze jeho pouzivani neni o nic jednodussi nez pracovat s shell scripty. To, ze se Lennart jednou zachoval jako totalni cu..k, neznamena ze do linuxu zavadi totalitu (ikdyz s novym api cgroups to tak rozhodne zacina vypadat :-D). No, alespon to svym zpusobem zmensuje roztristenost celeho GNU/Linux, takze uvidime jak to cele dopadne....
Jeste sem si vzpomel. Nevsiml sem si, ze by Lennart nekde pouzil pojem "on demand loading".
http://0pointer.de/blog/projects/socket-activated-containers.html