AlpineLinux je krásná věcička, provozuji ho na arm strojích, vše pro mě důležité lze zkompilovat a zatím jsem nenarazil na neřešitelnou věc.
Konečně jsem se dostal do stavu, kdy dokážu mít i s málo vynaloženým časem opět přehled o verzích jednotlivých balíčků a jejich změnách.
Administraci nemám v popisu práce, ale jako koníček. Poslední roky jsem před problémem, že buď aktualizuji bez projítí změn nebo neaktualizuji. Ani jedna varianta není to pravé ořechové.
Na jednu stranu je to podle komunity desne, desne spatny.Nepouzitelny, nesmyslny. Na druhou stanu na to presli vsechny distribuce, vyvojari. Beru to tedy tak, ze je to funkcni a dobry. Jen je tu par lidi kterym se na tom neco nezda a nemaji na Linux klasickou moznost volby a tak prskaj. Tod vse...
Jsem normalni uzivatel, systemd uz mam dlouho a nevidim v tom zadny problem. Xfce mi najede, Apache mi najede, internet mi funguje... vlasnte o zadnym systemd ani nevim. Tak kde je problem?
Ne. Třeba s logováním, přidáním vlastní služby, řešením problémů se startem/shutdownem OS po různých upgradech apod. V takových situacích si rázem začnete připadat jak šaman v OS od Microsoftu.
Uživatel, který chce "ty internety" pochopitelně nic nepozná - dokud se v tom něco nepodělá, pro administrátora, který potřebuje deterministický systém, je to v každém případě katastrofa.
Redhat chce vydělávat a to se dá zajistit tak, že lidem vnutíte cosi monolitického a neprůhledného. Ostatní se bojí nekompatibility a tak to nasadí taky... To je podstata toho všeho.
Svět Linuxu pod tlakem komerce zdegeneroval. Díky Bohu za FreeBSD :-)
Spíše je to tak, že systemd přinesl do Linuxu kvality obvyklé ve Windows 20 let, například se systemd konečně fungují závislosti správně, funguje správně paralelní spouštění a funguje restart při pádu procesu. Nic z toho s init.d nefungovalo nebo nefungovalo správně.
Ještě chybí něco jako RegisterServiceCtrlHandler, ale na to se bude čekat asi dalších 20 let.
Obvyklé kvality windows jsou co? Nikdo neví, co to dělá? Chování se každou chvíli mění? Není možné se jednoduše dostat k logům na nefunkčním systému? Ne, děkuji, o to opravdu nestojím. Já chápu, že je to super, že se něco spouští paralelně a naběhne to o pár vteřin dřív, ale zkus si někdy přidat vlastní službu. Správně funkční závislosti? Možná na desktopu na internety, mail a office. Restart při pádu procesu? Za prvé - proces nemá co padat. Pokud padá, je třeba ho opravit a taková featura bude opravy oddalovat, protože i když je to špatně, tak to nějak jede a bude to mít menší priority. Až po roce zjistíme, že nám při každým pádu zmizela část dat, bude pozdě. Za druhé - na to mizivé procento opravdu potřebných a nenahraditelných padajících procesů se vždycky nasadila kontrola přes cron a bylo to. Tohle nejsou featury, kvůli kterým si ze systému chci udělat black box ala windows, kterej bude dělat to, co chce a ne to, co chci já a bude se po každým updatu chovat jinak. A další důvod proti SystemD je zcela osobní - vyvíjí ho blbeček, podle kterýho je všechno špatně a jen jeho pravda je ta jediná správná. Ať si udělá vlastní OS, kterej si pak může zmršit, jak bude chtít. Zatím nedokázal udělat nic, co by bylo opravdu funkční a bezproblémové.
Dovoluji si nesouhlasit s osobnim nazorem na Lennarta - doporucuji osobni setkani na nejake dalsi konferenci. To ze pulseaudio byl ze zacatku prusvih stejne jako se v jemny prusvih vyvinul systemd je jina vec. Kazdy muze mit nejaky nazor a vizi jako neco vyresit, ale jen nekdo ma schopnosti to udelat. Lennart je ma a to je neoddiskutovatelne. To ze je jeho reseni pro jine neprijemne, jeste neznamena ze Lennart je blbecek.
Nesouhlasit samozřejmě můžeš, ale na mým názoru to nic nezmění. Podle mě ty schopnosti nemá, je zcela evidentní, že jeho práce je zmatená a bez jasných cílů, SystemD mi momentálně připomíná Windows 10 - je to nedodělaná beta, v každé nové verzi se pokazí něco jinýho a už teď se to snaží stát nepostradatelným, ačkoliv je to v některých případech nepoužitelný. V zásadě by mi SystemD tak úplně nevadil, kdyby dělal jednu věc a nenabaloval na sebe spoustu daších. Jeho řešení není nepříjemné, jeho řešení zcela ignoruje dosavadní filozofii a podle mě to nemá v Linuxu co dělat, minimálně ne ve stavu, kdy se to snaží stát nepostradatelnou součástí OS. Jako jedna z alternativních možností, především pro desktopy to může pomoct rozšíření Linuxu mezi BFU, ale jestli se to dostane do stavu, že žádná rozumná distribuce bez SystemD nebude, osobně jdu do CokolivBSD.
za me 100%souhlas
IMHO problem je proste v tom (a autor clanku to zminil) ze je vic skupin 'uzivatelu linuxu' a vetsina tech, kterym se sD nelibi jsou spravci* (coz je pravdepodobne mensina 'uzivatelu linuxu'), protoze ty to 'museji' pouzivat -> beznym uzivatelum je to fuk, vyvojarum to asi ve vetsine ulehci praci (nemusi psat init skripty, atp.) a spravci? mno to je ta brblajici mensina, ktera s tim ale 'musi' pracovat
* kdyz pisu spravci, nemyslym lidi, kteri maji na starosti par web serveru...
PS: diky autorovi za pekny clanek
Nevim za co +100
Tady jde o celkove nepochopeni smyslu vyznamu systemd.
LP podle mne chape systemd jako kritickou komponentu systemu a v pripade ze se neco podela, tak se postupuje stejne jako kdyz se podela kernel. (tzn. musi nastoupit schopny admin a OS obnovit ze zalohy rucne v pripade virtualu je to jednodusi)
Vyhoda systemd je v tom ze jednotlive komponenty (utility) jsou lepe propojene tudiz, je mensi sance, ze neco prestane fungovat kdyz se nejak knihovna nebo utilita zmeni.
PS. osobne vidim v budoucnosti desktop linuxu prostor pro vetsi integraci komponent (Xserver, WM, atd) jakozto system kritickych
Chapat "systemd jako kritickou komponentu systemu" bude mozne, az ho za 10 rokov platna dostane do stavu ked bude aspon tak stabilny, ako kernel.
> Vyhoda systemd je v tom ze jednotlive komponenty (utility) jsou lepe propojene tudiz, je mensi sance, ze neco prestane fungovat kdyz se nejak knihovna nebo utilita zmeni.
I kdyz tohle se nam stavalo furt, ale tohle ma byt chvalozpev :)
Najvacsi for vznikne, ked partial update stihne zaktualizovat libsystemd a clovek zrazu nevie masinu ani zresetovat :)
> PS. osobne vidim v budoucnosti desktop linuxu prostor pro vetsi integraci komponent (Xserver, WM, atd) jakozto system kritickych
A potom nam neostane nic ine, len znova objavovat Unix :(
To řešení není nepříjemné. Ono je především blbě naimplementované.
Když se mě tuhle kamarád ptal na systemd a co a jak tak jsem vynechal všechny koncepční věci (filozofie, jak by to mělo být apod.) a sdělil jsem mu, že: hromada nápadů, některé i dobré, ale kvalita provedení katastrofální. Za ideálních podmínek to funguje, ale když to vykolejí, tak je konec.
Osobně, protože se systemd v praxi stejně nevyhnu, to testuju na soukromých serverech už skoro dva roky. Kromě již mnohokrát omýlaného journald jsem narazil především na nedodělávky.
Například způsob konfiguračních souborů networkd je super, fakt se mi to líbí (což je dáno především tím, že do té doby byly distribuční skripty na nastavené sítí fakt špatné - zkuste si nastavit pomocí distribučních skriptů 30 ip adres).
No jo, ale potom přijdete na to, že resolved neumí nastavit vyhledávací doménu. Fakt nevím, jakým způsobem je systemd vyvíjen a co vedlo autora resolvedu k tomu, že zrovna toto neimplementoval. Takže síť máte nastavenou jednou přes systemd, ale dns resolving musíte mít staticky přes /etc/resolv.conf (jako, ne že by to něčemu vadilo, ale místo, aby se uklidilo a používaly se jen prostředky systemd - když už jsou - tak je to další chaos). Stejně jako další služby systemd. Místo ntp timesyncd, ok, proč ne, ale kde jsou statistiky stavu synchronizace? ntpq? Nejsou, takže zpět na ntp.
Takže nápady někdy dobré, ale realizace těžce a někdy nesmyslně, pokuhlává.
Osobne vidim nejvetsi problem v tom, ze jednotlivy casti nejsou oddeleny, a to, ze ti (treba) nefunguje logovani, muze bejt nekde uplne jinde, nez v samotnym log demonovi, coz je pruser jak hrom. Navic nemas sanci ho nahradit necim jinym - coz je presne neco, co ocekava kazdej admin, protoze kazdej ma nejaky svy oblibence, ma na to spoustu scriptu, a neexistuje zadnej duvod, proc by se mel mezovat na "jeden systemd vladne vsem".
Sekundarne pak samo pristup toho idiota a (a spol) ke zjevnym bugum.
BTW: Ad asmini a ostatni - vzhledem k tomu, ze linux === server a/nebo non intel, a jelikoz to na nicem jinym nez x86 pokud vim nechodi, tak bych rek, ze ti admini rozhodne mensina nebudou.
Lennart to řekl jasně, networkd je ještě v plenkách a překvapilo ho, kolik distribucí networkd už začlenilo, když tam chybí celkem hodně důležitých věcí. Asi to chtělo ještě počkat, když se něco objeví v upstreamu ještě neznamená, aby to distribuce ihned převzaly. Release often, release early!
jj, slozitost sama ...
Psal jsem: V network-scripts
to bylo hodně nepřehledné a složité.
Ne v něčem jiném. Viz:
On ani Debian to neměl nijak slavné:
https://wiki.debian.org/NetworkConfiguration#Configuring_the_interface_manually
Z tohoto pohledu vidím networkd jako pokrok.
Problem je v tom, ze je to shell script, ktey nastavuje env promenne. pokud se spletes, tak to bude tvoji chybu ignorovat. Nejsem si jistej co se stane, kdyz zmenis vlan10 na vlan11, odebere se vlan10?
Konfigurace sitovych inferfaces by si zaslouzila jednotny datovy model. Anebo vlastni "scriptovaci"(DSL) jazyk.
To co sem nahodil je sample z gentoo, co to udela exaktne, si tudiz muzes zjistit.
Orientacne to udela to, ze vlans_eth1 deklaruje vlany, ktere se na iface vytvori.
config_xx pak deklaruje konfiguraci pro rozhrani. Takze se muzes dostat do dvou situaci - ze budes mit vlan, kterej nebude mit zadny Ipcka, protoze mu zadny nenaconfis, a ze budes mit v konfiguraku konfiguraci neexistujiciho rozhrani. Oboji je naprosto vpohode. A oboji je zaroven pricipielne koser vec, neni duvod, proc by to melo neco delat nebo nedelat.
A ve skutecnosti to vola ip. Tedy si to klidne muzes napsat jako sekvenci ip ad ip ... a dalsi.
Kdyz napises nekam korektni IP akorat blbou, budes mit daleko vetsi problem, nez nejakej script kterymu je to jedno.
Ohledně správy služeb se ví co to dělá a funguje to stejně. Logování se to netýká.
Daemon vůbec nemá co psát do konzole (kromě debugování), logování na úrovni systemd by tak správně vůbec nemělo být potřeba.
Procesy nepadají v ideálním světě, v reálném světě občas padnou a v takovém případě se to má restartovat a zalogovat, popř. odeslat email, ne nechat padnout než si toho všimnou koncoví klienti.
S kontrolou běhu v cronu běž do prdele.
To by mne zajímalo, jaké riziko poškození dat hrozí třeba u webového serveru poskytujícího data z read-only souborového systému. Navíc proces, který poškozuje data, je podle mne daleko horší, než proces, který se neočekávaně ukončí. Ale pokud chcete nějakou službu startovat ručně, systemd vám v tom nijak nebrání.
Co je to za zmatený příspěvek?!
Pokud máte webový server, který čte z ro FS, tak mu, ano, nastavíte že se může restartovat. Ačkoliv stejně bych o tom chtěl vědět.
To, že najdete pár případů, kdy se auto-restart hodí přece nemůže znamenat, že ten auto-restart nacpete povinně všude!
Proces, který poškozuje data je horší, než ten, který se neočekávaně ukončí. Ale jak to souvisí s tím, že bych takový proces měl chtít auto-restartovat?
Vysvětlení čeho? Že tvrzení „neexistuje proces, který by bylo možné po pádu restartovat“ a tvrzení „existuje proces, který by bylo možné po pádu restartovat“ jsou ve vzájemném rozporu a je zvláštní, pokud jeden komentující v jednom komentáři tvrdí to první a v následujícím to druhé?
System.d umožňuje spouštět služby jak v režimu „spusť a dál se o proces nestarej“ tak v režimu „udržuj spuštěné“. Přičemž u toho druhého lze ještě nastavit pravidla jako maximální možný počet restartů. Možnosti tedy máte obě dvě, což je v rozporu s vaším tvrzením „povinný autorestart“.
kriticke aplikacie si auto-restart riesia vo vlastnej rezii, pretoze same vedia co maju najprv spravit predtym ako spustia neocakavane padnuteho daemona. Mozno casom budete pracovat s vecami ktore maju thread antifreeze / watchdog.
Ak mate kriticku vec ako webserver (dajme tomu apache) a ste osypany z toho ze "co ak to spadne", tak si predstavte ze na takej masine vam odide disk, alebo zakladna doska... vyrieste si single point of failure a nebudete potrebovat veci ako auto-restart webserveru...
Právě proto, aby si pořád to samé nemusel bastlit každý ve vlastní režii, vznikají správci služeb. Správce služeb se napíše jednou a pak se může používat opakovaně, pro různé služby. A je dost pravděpodobné, že to bude fungovat lépe, než když si nějakou imitaci správce služeb napíše každý sám pro svou aplikaci.
Automatický restart serveru není potřeba, je to možnost jak zautomatizovat něco, se se zautomatizovat snadno dá. Ve spoustě případů by správce po zjištění, že služba se ukončila, službu nastartoval, a pak by začal zkoumat, proč k tomu došlo. To rutinní nastartování služby ale nemusí dělat správce (ještě s rizikem, že na to zapomene nebo to udělá špatně), když to lépe zvládne automat.
bastlit
Fascinující. Toto mě něpřestává bavit. Evidentně není problém napsat funkční program čítající možná miliony LOC, ale ve všech diskusích má někdo problém s tím, že je potřeba to distribuovat v 3 balíčkovacích systémech, psát init skripty pro 5 (ani ne) init + rc a teď je dokonce problém udržet ten program na nohou.
Fakt je s podivem, že existuje tolik distribucí s takovým množstvím software, když je kdejaká prkotina (kterou stejně lze u složitější programu jen těžko vyřešit init systémem, takže si to stejně budou řešit dál sami) nepřekonatelný problém vyžadující baslení.
Funkční program čítající miliony LOC píše někdo, kdo chce psát ten program, umí psát v daném jazyce a rozumí doméně, kterou řeší ten program. Init skripty pak píše – ten, kdo chce psát ten hlavní program, umí psát v jazyce, ve kterém je ten hlavní program napsaný, a rozumí doméně, kterou řeší ten hlavní program. Zato v shellu se moc nevyzná, init skriptům nerozumí, dělá to na poslední chvíli, protože to předtím nikdo neřešil, a za úkol to dostal proto, že už nějaký skript na startování té aplikace pro sebe napsal, tak ať to přiohne, aby to fungovalo ještě aspoň na dvou počítačích kolegů.
Nepřekonatelné problémy to nejsou. To, že jsou to všechno jenom shell skripty, které si mohou psát sami, tady uvádí spoustu zastánců SysVinit. A že je to bastlení, to je důsledek toho, že se to dělá pro jednu konkrétní situaci a řeší to problém, který už měl být dávno vyřešen obecně. Skript, který si píše správce pro pár svých serverů, samozřejmě bude mnohem méně dokonalý, než něco, co je určené k použití na milionech počítačů.
A pokud někdo má své dokonalé skripty, lepší než systemd, tak přece nebude na systemd přecházet. Mne zase baví, jak si tu různí „správci“ stěžují, jak mají promakaný a vyšperkovaný svůj systém, vědí o každém bitu – a pak tvrdí, že se jim tam systemd doinstaluje, aniž by věděli jak a proč.
chce psát ten program, umí psát v daném jazyce a rozumí doméně, kterou řeší ten program
A současně nechce udělat nic proto, aby ten program také někde běžel. Chápu.
init skriptům nerozumí, dělá to na poslední chvíli, protože to předtím nikdo neřešil
Aha a zbytek programu od týmu, který takto řeší problémy, bude jistě v pořádku. Určitě.
Pokud někdo tímto stylem vyvíjí software, tak celý program bude jeden velký bastl a nemá smysl se jím vůbec zabývat.
řeší to problém, který už měl být dávno vyřešen obecně
Měl? Kdo říkal? Jinak obecně, obecně stačí vzít jakýkoliv template pro daný init, dopsat tam příslušná volání té své binárky a je to. Obecně jsou ty init skripty v podstatě všechny stejné. Ano, je to trochu víc řádek, než unita u systemd, ale to snad ničemu nevadí.
Ano, tohle je hezké, a myslím, že kdyby systemd skončil vyladěným tímto, tak by všichni byli happy a prostě by si to přidali do sbírky podobných software.
Ne, místo toho se řeší, kdy a jak správně zamrznout.
Ostatně, init systémů, které mají podobně jednoduchou konfiguraci je vícero a existovaly i před systemd (a nějak neměly potřebu se propenetrovat do celého ekosystému). Kupodivu ty ostatní initrc systémy lze spouštět jeden z druhého, takže nejsou výjimkou instalace, kde je nějaký systémový init a v rámci jedné bundle aplikace je i její správce služeb, který potom řeší služby dané aplikace. Jak prosté.
Asi nepřekvapí, že tím systémovým initrc byl systemd. Zvláštní, že výrobce aplikace používá ještě další init (taktéž OSS projekt, nic vlastního) a že to nepřepsal do jednoho univerzálního systemd.
Systemd to neřeší místo toho, systemd to řeší navíc, a nemusíte to používat. Klidně můžete použít ty skripty, které to řeší v jiných init systémech.
Systemd také můžete integrovat k jiným init systémům. Systemd nemá potřebu propenetrovat do celého ekosystému – akorát asi nabízí takové služby, které autoři distribucí a software rádi využijí. To, že je to pod jednou hlavičkou, tedy konfiguruje se to stejným způsobem a navzájem to spolupracuje, to je samozřejmě plus a důvod, proč si autoři vyberou radši ekosystém systemd než něco jiného. To ale není chyba systemd – nikomu nic nebrání nabídnout něco konkurenčního, co nabídne alespoň ty samé služby. A nemusí dokonce ani nahrazovat celý ekosystém systemd, může nahrazovat jenom dílčí části. Protože systemd používá jako rozhraní standardní mechanismy, na které se může napojit každý.
To, že autor aplikace používá vlastní správce služeb (qmail používá daemontools, Postfix ho má integrován…) není nic nového, to tady bylo dávno před systemd – což je poněkud divné, pokud na těch původních init systémech není co zlepšovat, ne?
Systemd nemá potřebu propenetrovat do celého ekosystému
A teď tu o červené karkulce. Evidentě jste posledních x let žil v jiném vesmíru.
To, že autor aplikace používá vlastní správce služeb není nic nového, to tady bylo dávno před systemd
Ano, to jsem také psal.
což je poněkud divné, pokud na těch původních init systémech není co zlepšovat
To tady snad nikdo nepsal. A opět se vracím k tomu evidentnímu nepochopení, co původní init + rc vlastně je. Původní init je relativně jednoduchý (viděl jsem tedy i jednodušší implementaci na jednu stránku kódu v C), který prostě dělá to co má dělat proces s pid 1 (stará se o zombíky a tak) a (při bootu) spustí další proces (většinou v shellu), který se postará o spuštění skritpů v určitých adresářích. Nic trvale něběží (kromě povinného pid 1), je klid. Běží jen procesy démonů. Jsou-li nějaké.
Toť vše. Nic víc, nic méně. Neřeší to autoritativní informaci o stavu těch procesů (to ani nikde není slibováno) neřeší to hromadu dalších věcí. Proč? Protože to lze snadno vyřešit jinými prostředky.
Jestli má někdo potřebu složitějšího řízení, může si klidně jako jednu (a taky jedinou) servicu spustit složitějšího správce služeb. Vzhledem k tomu, že nic z původního rc trvale neběží, tak tento správce má k disposici všechny prostředky pc.
Teď totéž udělejte se systemd. Po bootu na stroji bez nakonfigurovaných démonů nepoběží žádný proces toho systemd. Neuděláte.
Opět, dočkal jsem se odpovědi od různých lidí (i z distribucí), kteří se ptali: "a čemu to vadí?" apod. Ano, takže linux dopracovat do stavu, kdy v systému je něco zbytečného, co se nepoužívá a ještě to běží. Prostě jako widle. Vedle v diskusi se už doporučuje spouštět cosi jako root, někteří doporučují nepřemýšlet nad tím, proč je v distru něco, co se nepotřebuje. Prostě to ignoruj, je to v distribuci, tak to tam nech. A udělej si to vedle podle své potřeby.
Systemd nemá potřebu propenetrovat do celého ekosystému – A teď tu o červené karkulce. Evidentě jste posledních x let žil v jiném vesmíru.
Mohl byste něčím doložit tu potřebu? To, že se systemd používá stále víc nemusí znamenat, že ho autoři někam protlačují, ale prostě jen to, že řeší skutečné potřeby a ostatní ho tedy rádi použijí.
Původní init je relativně jednoduchý (viděl jsem tedy i jednodušší implementaci na jednu stránku kódu v C), který prostě dělá to co má dělat proces s pid 1 (stará se o zombíky a tak) a (při bootu) spustí další proces (většinou v shellu), který se postará o spuštění skritpů v určitých adresářích.
To samé dělá systemd init.
Protože to lze snadno vyřešit jinými prostředky.
Teoreticky to lze snadno vyřešit jinými prostředky, prakticky se ty jiné prostředky používají těžko a ještě hůř se kombinují. Pokud by se to snadno řešilo jinými prostředky, bude to těmi jinými prostředky dávno snadno vyřešené a nebude teď nikdo přecházet na systemd.
Teď totéž udělejte se systemd. Po bootu na stroji bez nakonfigurovaných démonů nepoběží žádný proces toho systemd. Neuděláte.
Opravdu? Které procesy tam poběží navíc, oproti tomu, kdybyste totéž udělal se SysVinit?
Jirsak, napadlo vas nekdy, ze firma, co ma spickove prgace, co se vyznaji v monstrech o milionech radku, asi nebude cas techto lidi plytvat na psani nejakych skriptu v shellu, kteremu treba nerozumi? Namisto, aby ten clovek tyden cetl manualy a bastlil skript, muze dal delat na dalsim milionu radku a ten skript napise nekdo jiny. Nekdo, kdo se v tom vyzna a i s otestovanim to sfoukne za podstatne kratsi dobu.
Jo jo, když má firma barák plnej programátorů, bude najímat dalšího programátora na půl hodiny. To je super nápad, to nějakému manažerovi navrhněte.
Poslyšte, a není jednodušší, než aby se programovalo pořád totéž dokola a abychom měli experty na programování init skriptů, není jednodušší, když se to naprogramuje jednu do init systému?
To je hezký výčet, ale „specialista init skriptů“ tam nevidím. A hlavně mi taková role připadá nesmyslná. Připravit prostředí pro start aplikace a řídit její běh není žádná raketová věda a dnes je to tak komplikované především proto, že se aplikace nemohly spolehnout skoro na žádnou podporu od init systému, takže si spoustu věcí nějak zbastlily po svém, aby to jakž takž fungovalo. Což samozřejmě komplikuje zařazení do nějakého normální prostředí. To samozřejmě nebude trvat věčně, autoři aplikací se rádi spolehnou na to, že tohle za ně zařídí init systém – akorát že to pak samozřejmě znamená závislost na ekosystému systemd, když jiný init systém příslušné služby nenabízí.
Ano, tak nějak by to mělo být v systému, jehož jméno nechci vyslovit, ve kterém je běžné, že si každá služba sem tam jenom tak pro radost spadne. Může to tak být i na desktopu, kde běží kdejaká podivnost, možná na testovacích strojích, ale na produkčním serveru s ostrými daty nemají služby jen tak padat a proto by neměl být důvod je jen tak nahazovat. Základem dobrého systému je jeho předvídatelnost a pokud předvídatelný není, je to známkou chyby, kterou je třeba opravit, ne zamést chybu pod SystemD.
Na produkčním serveru s ostrými daty nemá jen tak docházet k výpadkům napájení nebo selháním datového úložiště, takže by neměl být důvod data žurnálovat. Stejně tak tam nemá jen tak docházet k chybám uživatelů, takže by neměl být důvod data zálohovat.
Nicméně zkušenější vědí, že občas dochází i k situacím, ke kterým by docházet nemělo. Proto zálohují, data ukládají do více lokalit, atd. atd. No a taky provozují aplikace tak, že se v případě ukončení procesu automaticky spustí znova. Protože když běhové prostředí té aplikace spadne na segmentation fault, když se při větší zátěži pokouší udělat optimalizaci, správce toho systému by tu aplikaci stejně v první řadě spustil znova, protože nebude čekat, až někdo udělá analýzu core dumpu, vytvoří se ticket u dodavatele toho běhového prostředí a pak se bude několik měsíců čekat, než to dodavatel vyřeší. Ono k takové chybě dochází průměrně jednou za půl roku, jak se později ukáže, nicméně i tak by se mohlo stát, že dřív, než dodavatel chybu opraví, pochcípá v clusteru tolik serverů, že už aplikace nebude zvládat nápor uživatelů. Ono by se těm uživatelům těžko vysvětlovalo, že administrátor je zásadový a server nespustí dřív, než bude chyba opravena. A mimochodem, ta chyba optimalizátoru končila segfaultem jen v menším množství případů, častěji skončila pouze poškozením spuštěného běhového prostředí. Takže vaše představa, že každá závažnější chyba musí skončit pádem aplikace, je také mimo.
Tohle je pravda. Momentálně provozujeme v produkci externí aplikaci, která je nutná pro to, aby majitelé HW od jednoho výrobce mohli používat naší službu. Bohužel ta aplikace jednou za pár týdnů spadne a jejich support i přes veškerou snahu to neumí vyřešit, takže o prostě necháváme spadnout a zase to nahodíme (vlastním skriptem, na deném serveru není systemd).
Další příklad z praxe mám krabičku postavenou na Raspberry Pi, kde je hodně nedodělaný a nevyzkoušený SW, který z obchodních důvodů musíme distribuovat partnerům jako ukázku toho, na čem děláme. Docela jsem byl rád, když jsme poslední verzi krabičky upgradovali na Raspbian se systemd a rychle nehackovaný shell skript nahradili jedním unit filem.
I tak ale systemd rád nemám, myslím, že podobného výsledku se dalo dosáhnout méně kontroverzní a revoluční cestou.
Ve Windows je stejně jasné jako na Linuxu, který servis co dělá. Chování se nemění každou chvíli (nebo máte nějaké příklady?). K logům nefunkčního systému se dostanete jednoduše tak že zabootujete jiný systém (na tom samém nebo jiném stroji), a log file otevřete Event Viewerem.
Ad black box ala windows - Windows nejsou black box, jen se spravují trochu jinak než tradiční Unixy.
Ad Restart při pádu procesu? Za prvé proces nemá co padat - to je pěkná teorie. Jenže když máte systém v produktivním provozu, tak po spadnutí servisu nechce čekat, než se někdo dostane k tomu aby ho restartoval. Řešit to schedulerem je samozřejmě možné, ale daleko praktičtější je nastavit akci (restart servisu, spuštění programu, restart stroje) přímo ve vlastnostech servisu.
Navíc klasický management služeb na Unixech je hrozivý, resp. prakticky absentuje. Jde o změť skriptů, na každé platformě jinak. Neexistuje ani API pro základní akce jako zjištění seznamu servisů a jejich stavů, založení servisu, změna jeho vlastností, smazání servisu. Nechápejte to špatně. Před nějakými 30 lety to bylo state-of-art. Ale dneska to působí jako z pravěku. Tím samozřejmě neimplikuji, že by systemd byla ta správná cesta. Na to o něm vím příliš málo.
K logům nefunkčního systému se dostanete jednoduše tak že zabootujete jiný systém (na tom samém nebo jiném stroji), a log file otevřete Event Viewerem.
Ano, bootovani jinych Widli na stroji, kde Widle lehly, je jiste tak trivialni, jako vytvoreni live USB s Knoppixem. A az ten log otevru v Event Vieweru, tak se mi to bude naramne dobre grepovat. Zejmena, kdyz na Widlich neni grep. Podobne to bude na systemd. On Tuxik nepsal o tom, ze je nemozne se dostat k logum, ale ze se k nim nelze dostat jednoduse.
Ad Restart při pádu procesu? Za prvé proces nemá co padat - to je pěkná teorie. Jenže když máte systém v produktivním provozu, tak po spadnutí servisu nechce čekat, než se někdo dostane k tomu aby ho restartoval. Řešit to schedulerem je samozřejmě možné, ale daleko praktičtější je nastavit akci (restart servisu, spuštění programu, restart stroje) přímo ve vlastnostech servisu.
Cimz eventuelne zajistite, ze neprijdete o cast dat, ale o vsechna. Ne vsechno se da takto restartovat a o tom, co se ma a co nema restartovat by nemel rozhodovat OS, ktery o tom vi hovno.
Navíc klasický management služeb na Unixech je hrozivý, resp. prakticky absentuje. Jde o změť skriptů, na každé platformě jinak.
Nadhera, co? Vsechno, co potrebujete, si naskriptujete a nepotrebujete na to Powershell s kryptickymi prikazy, ktere budete ctrnact dni hledat na Googlu. Jo, kdyby tohle slo ve Widlich, byl by zivot jednodussi. Ne nadarmo se tohohle NIXy drzi. Vam to sice pripada spatne, ale jinym naopak o mnoho prehlednejsi a srozumitelnejsi.
K logům nefunkčního systému se dostanete jednoduše tak že zabootujete jiný systém (na tom samém nebo jiném stroji), a log file otevřete Event Viewerem.
Ano, bootovani jinych Widli na stroji, kde Widle lehly, je jiste tak trivialni, jako vytvoreni live USB s Knoppixem. A az ten log otevru v Event Vieweru, tak se mi to bude naramne dobre grepovat. Zejmena, kdyz na Widlich neni grep. Podobne to bude na systemd. On Tuxik nepsal o tom, ze je nemozne se dostat k logum, ale ze se k nim nelze dostat jednoduse.
Základní problém je v tom, že nechápeš, že když Lael Ophir řekne, že to je jednoduché, tak se o tom nepochybuje. Natož aby si mu oponoval, že tobě, nebo dokonce ještě někomu jinému to jednoduché nepřijde.
Každopádně tentokrát ti to odpustíme, protože Lael nepoužil kouzelné slovíčko "zjevně". To už by byla teprve drzost.
Tak asi je pravda, ze kdyz nekdo leta dela veci komplikovanym zpusobem, tak mu to zacne pripadat uplne normalni a jeste treba rekne, ze je to snadne. Vzdy oni treba i zasahy do registru na nefunkcnim stroji delaji snad porad jeste tak, ze vyndaji disk, daji do jineho stroje, tam to pripoji jako vetev do stavajiciho registry a edituji. Pak to strci zpatky a kdyz se nepovedlo, tak cele znovu.
Ad bootovani jinych Widli na stroji, kde Widle lehly, je jiste tak trivialni, jako vytvoreni live USB s Knoppixem - stačí vzít médium s Windows, zabootovat z něj, spustit Windows Recovery Environment command prompt, a pak můžete prohlížet event log, editovat registry, zkontrolovat systémové soubory a případně je nahradit neporušenou verzí atd. Mimo jiného můžete binární log vykopírovat, vyexportovat v XML, tab delimited nebo CSV.
Ad Ne vsechno se da takto restartovat a o tom, co se ma a co nema restartovat by nemel rozhodovat OS, ktery o tom vi hovno - souhlas. Proto je akce provedená v případě selhání servisu v nastavení servisu. Service Manager znovu spustí servis jen když je to tak pro konkrétní servis nastaveno.
Ad eventuelne zajistite, ze neprijdete o cast dat, ale o všechna - o všechna data můžete přijít už při pádu aplikace. Ale je to dost nepravděpodobné. Stejně jako to že restart servisu způsobí ztrátu dat, o která jste ještě nepřišel.
Ad Nadhera, co? Vsechno, co potrebujete, si naskriptujete a nepotrebujete na to Powershell s kryptickymi prikazy, ktere budete ctrnact dni hledat na Googlu - jo, fakt nádhera. Pro každý Unix i různá distra Linuxu (naštěstí ne všechny) musíte mastit skript, starat se kam ho umístit, editovat skript a nastavovat v něm env variables... Plus je to kompletně bez API, není způsob jak zjistit jaké servisy na stroji jsou ani v jakém jsou stavu... Kdybychom tohle měli ve Windows, byl by život daleko složitější.
Ad Vam to sice pripada spatne, ale jinym naopak o mnoho prehlednejsi a srozumitelnejsi - to máte na mysli lidi kterým přijdou regexy, ovládání vi pomocí hjkl a nevím kolika neviditelných módů editace a další unixový folklor "intuitivní", ale jsou mají obrovský problém najít něco na ribbonu, který má pár karet co mají celou dobu před očima? No to pak asi ano :D
stačí vzít médium s Windows, zabootovat z něj, spustit Windows Recovery Environment command prompt....
Ano, zabootuju z toho media, co ho skoro k zadnemu pocitaci nedostanu a muzu si ho stahnout s uloz.to. Jinak tahle "horka novinka" prisla tak deset let po Linuxu. To je ale fofr!
Pro každý Unix i různá distra Linuxu (naštěstí ne všechny) musíte mastit skript, starat se kam ho umístit, editovat skript a nastavovat v něm env variables... Plus je to kompletně bez API, není způsob jak zjistit jaké servisy na stroji jsou ani v jakém jsou stavu... Kdybychom tohle měli ve Windows, byl by život daleko složitější.
Tak vsechny skripty delat urcite nebudu, na to jsou sestavovatele dister. A to, ze mam nejake API, ktere rekne, ze service bezi, jeste neznamena, ze funguje. Jak tu bylo receno na vice mistech, tohle se stejne musi monitorovat jinak.
BTW, updatujte si zkusenosti s vi. Na Linuxu uz je davno mozne pouzit sipky.
Ad zabootuju z toho media, co ho skoro k zadnemu pocitaci nedostanu a muzu si ho stahnout s uloz.to - pokud jste počítač dostal předinstalovaný, instalační médium je na něm, a můžete z něj udělat bootovací USB klíčenku nebo DVD. U Windows 10 můžete média rovnou stáhnout z netu. Navíc pokud systém nebootuje normálně, můžete zkusit safe mode, a k tomu instalační média nepotřebujete.
Ad tahle "horka novinka" prisla tak deset let po Linuxu - jo, chvíli to trvalo. Ve starých verzích Windows jste mohl například vložit disk do jiného stroje, a tam přečíst logy, nebo udělat cokoliv jiného. Ale přijde mi to přes ruku. Snadnější je bylo prostě provést repair instalace po bootu z instalačního média.
Ad vsechny skripty delat urcite nebudu, na to jsou sestavovatele dister - to se ovšem týká jen aplikací, které se stanou součástí distra. Oracle, Lotus Domino a Notes, účetnictví, mzdy a spousta dalšího SW v distrech není, a vzhledem ke způsobu licencování nikdy nebude. To pro jejich autory znamená nutnost připravit balíčky (nebo dokonce instalátory) pro každou verzi každého distra, které chtějí podporovat. Včetně těch skriptů. API by samozřejmě bylo daleko lepší.
Ad to, ze mam nejake API, ktere rekne, ze service bezi, jeste neznamena, ze funguje. Jak tu bylo receno na vice mistech, tohle se stejne musi monitorovat jinak - ano, to se musí monitorovat jinak. Ale to, že nemůžete pomocí API zjistit ani jaké jsou na stroji servisy a zda běží, přesto považuji za neomluvitelné.
Ad updatujte si zkusenosti s vi. Na Linuxu uz je davno mozne pouzit sipky - jistě, ovšem na rozdíl od nich to hjkl funguje vždycky a všude.
pokud jste počítač dostal předinstalovaný, instalační médium je na něm, a můžete z něj udělat bootovací USB klíčenku nebo DVD.
Tak nevim, co je ted v mode. Ja na disku na Esusu mel akorat recovery partition s XP a ta preflakne oddil s Widlemi i s uzivatelskymi daty. Jo, tehdy jsem jeste dosta CD. Nevim, jestli je to plnohodnotna instalace nebo nejake recovery, nikdy jsem to nepouzil.
Ovsem s tim, co pisete, je maly problem. Vetsina lidi si koupi stroj a vubec netusi, ze tam instalace nekde lezi a uz vubec si z ni neudelaji boot DVD nebo USB flash. A kdyz ten stroj nebootuje, tak uz to moc nejde. Nehlede na to, ze DVD za pul roku nebude asi fungovat a klicenku zase nikdo nebude chtit obetovat na to, aby jen tak lezela v supliku. Vysledkem je, ze 99% lidi boot medium nema.
Ale to, že nemůžete pomocí API zjistit ani jaké jsou na stroji servisy a zda běží, přesto považuji za neomluvitelné.
Tak mam prikaz ps, ktery mi rekne, co je v pameti. To, ze to tam nemam rozskatulkovane na sluzby a dalsi veci, je celkem jedno.
Ad Vetsina lidi si koupi stroj a vubec netusi, ze tam instalace nekde lezi - postup pro vytvoření médií je popsaný v materiálech přiložených k PC.
Ad kdyz ten stroj nebootuje, tak uz to moc nejde - můžete si instalační média vytvořit na jiných běžících Windows, nebo je stáhnout z netu. Ale jak už jsem psal, daleko praktičtější je použít boot do safe mode. Osobně jsem ještě nikdy nepotřeboval číst event log offline. Nakonec boot log je i ve Windows textový :)
Ad mam prikaz ps, ktery mi rekne, co je v pameti. To, ze to tam nemam rozskatulkovane na sluzby a dalsi veci, je celkem jedno - příkaz a nikoliv API. A to že nezjistíte přes API seznam služeb, nezaložíte novou, nezjistíte stav těch nainstalovaných, a mimo jiné například nezaložíte uživatele, je samozřejmě dost problém.
Osobně jsem ještě nikdy nepotřeboval číst event log offline.
To, že vy máte štěstí, nás ostatní dost dobře vůbec nezajímá.
příkaz a nikoliv API
Umělé rozdělení, čistě pro tvoji potřebu. Úplně stejně bych mohl říct, že Win nemají API, protože není jak se dotázat na seznam služeb. A kecal bych stejně jako kecáš ty, protože konkrétní formát ani nástroje API nedělají.
A to že nezjistíte přes API seznam služeb, nezaložíte novou, nezjistíte stav těch nainstalovaných, a mimo jiné například nezaložíte uživatele, je samozřejmě dost problém.
By byl problém, pokud by to byla pravda.
Ad To, že vy máte štěstí, nás ostatní dost dobře vůbec nezajímá - ono to není až tolik o štěstí. V Event Logu najdete události, které staly za běhu systému. Pokud vám systém nebootuje, tak v Event Logu zpravidla stejně nic zajímavého nenajdete, protože se boot nedostane do stádia, kdy by do něj zapsal. Pokud ano, tak zřejmě půjde i safe mode.
A jak jsem už psal, boot log je i ve Windows textový, a mimochodem se jména natahovaných modulů vypisují i na konzoli (pokud si to při bootu vyžádáte).
Ad By byl problém, pokud by to byla pravda - aha. Která konkrétní API na ty jmenované akce mám použít?
Ad příkaz a nikoliv API; Umělé rozdělení, čistě pro tvoji potřebu - ne, to je zcela konkrétní a praktické rozdělení. API je Application Program Interface, volá se jako funkce. Utilita je executable, skript je program interpretovaný (nejčastěji) shellem. Pro programátora je to dost výrazný rozdíl. Při použití API zavolá OpenSCManager() pro otevření handle na Service Manager a pak EnumServicesStatusEx() pro procházejí seznamu servisů, nebo v .NETu System.ServiceProcess.ServiceController.GetServices(). Na Unixech máte smůlu, protože API neexistuje, servisy jsou klubko skriptů které můžete volat jen přes shell, na různých Unixech najdete ty skripty na různých místech a pod různými jmény, a spousta servisů ani nevrací informaci o svém stavu.
Ne, to je jen tvůj omezený Windows-centrický pohled na věc. Tvoje smůla. A naše neštěstí, že tě tu máme, a musíme tě poučovat o tak základních věcech.
Tak například HTTP RESTFul je samozřejmě API, ale řešené funkcema to není.
Pro programátora je jedno, zda to zavolá tak, či onak. V Unixu nezáleží na tom, zda je executable soubor script, nebo binárka. Programátor, není-li autor, to vůbec nerozlišuje. Chová se to stejně. Nemůžeš žít v představě, že všude to funguje stejně debilně jako bat, wsh na windows.
Argumentovat, že na unixu se API neřeší funkcema je stejně absurdní, jako vyčítat Windows, že nemá použitelný shell. No, není, a no nemá.
V unixu je všechno soubor. Tudíž, chceš-li znát seznam všech nástrojů v unixu, stačí ti pro to ls. Ano, není to funkce. No, to je toho.
Na Unixech API samozřejmě je. Servisy mají jasně definované rozhraní, a dají se vylistovávat, spravovat a vůbec. Na rozdíl od Windows na to ale je možné používat takové nástroje, které se adminovi hodí. Jediná výjimka je správce softwaru jako takového. To může být jen jeden. (Což zrovna Windows neuznávají, a proto je v tom takovej bordel.)
O to, kam se umistťují jendotlivé soubory se stará standard. Který je dokonce napříč různými rodinami Unixů. Takže obvykle, když balím nějaký program tak mezi Debian-like, RedHat-like jsou minimání rozdíly. Dokonce i ten Mac je docela podobnej. Jen Windows v tom má dost bordel, protože v každé verzi jsou různé soubory na různých místech. No, nevyčítám jim to, je to vývoj. Ale jako argumentace je to dosti lživý.
Takže když to shrnu, milý Laeli, opět klameš.
A co hůř, za celou tvou existenci tady, co jsem mě tu smůlu tě sledovat, jsi přinesl jednu jedinou užitečnou informaci.
Ad to je jen tvůj omezený Windows-centrický pohled na věc; naše neštěstí, že tě tu máme, a musíme tě poučovat o tak základních věcech - projděte si Single UNIX Specification. API najdete v kapitole System Interfaces. Utility najdete v kapitole Shell & Utilities. Samozřejmě můžete poučovat, ale chtělo by to, abyste o věci něco věděl :)
http://pubs.opengroup.org/onlinepubs/9699919799/
Ad HTTP RESTFul je samozřejmě API - In computing, Representational State Transfer (REST) is the software architectural style of the World Wide Web. To že si někteří lidé navykli nazývat http-based interface API je sice pravda, ale API to z něj nedělá.
https://en.wikipedia.org/wiki/Representational_state_transfer
Ad Pro programátora je jedno, zda to zavolá tak, či onak. V Unixu nezáleží na tom, zda je executable soubor script, nebo binárka. Programátor, není-li autor, to vůbec nerozlišuje. Chová se to stejně. Nemůžeš žít v představě, že všude to funguje stejně debilně jako bat, wsh na windows. - rozdíl mezi utiliou a skriptem bych neřešil, akorát že skripty nemají ani standardní jména. Programátorovi ale samozřejmě není jedno, jestli použije utilitu/skript nebo API. Spuštění utility či skriptu znamená shell out (nedej bože přes katastrofickou sekvenci volání fork/exec), předání parametrů na command line či stdin, a pak parsování výsledku. Je to pomalé a nespolehlivé. Naproti tomu volání API je velmi rychlé, a lze předat oběma směry libovolné parametry, navíc bez marshallingu, parsování a podobných obezliček.
Ad Argumentovat, že na unixu se API neřeší funkcema je stejně absurdní, jako vyčítat Windows, že nemá použitelný shell. No, není, a no nemá. - utilita ani skript není API. Windows samozřejmě má použitelný shell, který je generačně napřed proti shellům na Unixech. Seznamte se někdy s PowerShellem. Na rozdíl od Unixových shellů pracuje s objekty. Není problém například získat ten seznam servisů jako kolekci objektů, vyfiltrovat ty co začínají na "A" a zároveň jsou zastavené, a zavolat na ně metodu Start(). Podobně není problém najít všechna okna která mají titulek začínající na "A" a zminimalizovat je. Nebo rozjet instanci Wordu, založit nový dokument ze šablony, vyplnit do dokumentu nějaké hodnoty a uložit ho, exportovat do PDF nebo vytisknout. Unixové shelly byly praktické někdy před třiceti lety, a jsou v principu omezené na práci na command line.
Ad v unixu je všechno soubor - problém je v tom, že pro řadu věcí je soubor špatnou abstrakcí. Už nežijeme v době děrných pásek. Například pro servis je zjevně lepší abstrakcí objekt s vlastnostmi a metodami. Nakonec i souborové API v libc používá handles, což je svým způsobem rudimentální implementace objektů.
Ad servisy mají jasně definované rozhraní, a dají se vylistovávat, spravovat a vůbec - OK. Jak je to rozhraní definované? Jak získám seznam servisů s jejich stavem, zastavím servis, spustím servis, založím servis? Ve Windows takhle:
Seznam servisů, C/C++: EnumServicesStatusEx(); C#: System.ServiceProcess.ServiceController.GetServices()
Spuštění servisu, C/C++: ControlService(); C#: ServiceController.Start()
Zastavení servisu, C/C++: ControlService(); C#: ServiceController.Stop()
Založení servisu, C/C++: CreateService(); C#: ServiceInstaller.Install()
https://msdn.microsoft.com/en-us/library/windows/desktop/ms685141(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/ms685141(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceinstaller(v=vs.110).aspx
Ad kam se umistťují jednotlivé soubory se stará standard - který standard? Single UNIX Specification toho moc neříká, popisuje jen /dev/console, /dev/null, /dev/tty a /tmp. Natož aby řekl, jak registrovat servis na všech Unixech.
Ad Windows v tom má dost bordel, protože v každé verzi jsou různé soubory na různých místech - to není bordel, ale záměr. Ve Windows nespoléháte na to že dokumenty budou v C:\Documents and Settings\[AccountName]\Documents, protože v jiné jazykové mutaci či verzi to může být C:\Dokumenty a nastavení\[AccountName]\Dokumenty, nebo něco úplně jiného. Správnou lokaci získáte přes API, případně přes env variables.
Ad když to shrnu, milý Laeli, opět klameš - to asi nechám bez komentáře :)
projděte si Single UNIX Specification. API najdete v kapitole System Interfaces. Utility najdete v kapitole Shell & Utilities. Samozřejmě můžete poučovat, ale chtělo by to, abyste o věci něco věděl :)
http://pubs.opengroup.org/onlinepubs/9699919799/
Kdyby tak vědět, kde to najít stačilo, že? Musíš tomu taky rozumět.
Ad HTTP RESTFul je samozřejmě API - In computing, Representational State Transfer (REST) is the software architectural style of the World Wide Web. To že si někteří lidé navykli nazývat http-based interface API je sice pravda, ale API to z něj nedělá.
https://en.wikipedia.org/wiki/Representational_state_transfer
Což je podmnožina API. Že to nějakýmu Laelovi nestačí, protože to není reprezentováno funkcemi, to mě žíli netrhá.
rozdíl mezi utiliou a skriptem bych neřešil, akorát že skripty nemají ani standardní jména. Programátorovi ale samozřejmě není jedno, jestli použije utilitu/skript nebo API. Spuštění utility či skriptu znamená shell out (nedej bože přes katastrofickou sekvenci volání fork/exec), předání parametrů na command line či stdin, a pak parsování výsledku. Je to pomalé a nespolehlivé. Naproti tomu volání API je velmi rychlé, a lze předat oběma směry libovolné parametry, navíc bez marshallingu, parsování a podobných obezliček.
To co popisuješ ohledně toho mapování, je sice pravda, ale nijak to není specifikum Unixu. Když by si hrál férovou hru, tak by si řekl, že windows ten Marshaling má v mnoha případech vestavěný - a to bych ti uznal, to je pravda. Dokonce bych to považoval i za výhodu. Jenže takhle to vypadá, že znáž jen spoustu slov, a absolutně ti uniká smysl. Chápeš ty vůbec, k čemu je v unixu třeba takovej stdin?
Scritpy nemusím mět standardní jména. K čemu by to bylo, když jméno toho scriptu definuje api? Jo možná myslíš parametry. No, a ty jsou celkem standardní, nepsaně, ale jsou. Programátorovi to samozřejmě jedno je. Co to konkrétně udělá při spuštění utility ho zas až tak netankuje. Já třeba dodneška tak docela netuším, co se děje při cabal build, maven install, ale dokážu si představit, jak bych to zjišťoval. Ve windows si nepředsavím nic.
Jako, že má Linux spoustu probémů, a že by se to dalo udělat lépe, o tom žádná. Bohužel z těch tří je na tom Linux nejlíp, a Windows nejhůř. Sorry, ale je to tak,
utilita ani skript není API.
Ne? Protože jsi to řekl?
Windows samozřejmě má použitelný shell, který je generačně napřed proti shellům na Unixech. Seznamte se někdy s PowerShellem.
PS znám. Problém je v tom, že on je to sice naprosto skvělej koncept, ale budem si muset počkat do Win12, než to bude možné rozumě používat. Jenže, co bych já házel špínu na PS, když si na něj stěžují Windowsáci?
Seznamte se s Unixovými shelly. Máte-li rád Lisp, můžete použít lispovej shell. Máte-li rád cčko, můžete použít shell používající céčkovou syntax. Máte-li rád python, tak i pro vás by se něco našlo. Záleží čistě na vás, stačí si to nastavit. No, a pak je samozřejmě spousta adminů, kteří jsou konzervy a mají rádi bash.
Můžeš si všimnout, že v Unixu, díky dobře navrženému API, není problém dokonce rozchodit PS. Jenže lidé to prostě zatím neocenili.
No, smůla.
problém je v tom, že pro řadu věcí je soubor špatnou abstrakcí. Už nežijeme v době děrných pásek. Například pro servis je zjevně lepší abstrakcí objekt s vlastnostmi a metodami. Nakonec i souborové API v libc používá handles, což je svým způsobem rudimentální implementace objektů.
Problém je v tom, že lidé zkoušeli používat objekty na tyto věci, a vono to prostě lepší není, no.
Ale to člověk nesmí narazit na někoho, který díky znalostem kladiva vidí ve všem hřebík.
OK. Jak je to rozhraní definované? Jak získám seznam servisů s jejich stavem, zastavím servis, spustím servis, založím servis?
V mém oblíbené distribuci (tak bavíme se o oblíbencích že jo?!) se to napíše takto:
service postgre start
service postgre stop
service postgre restart
service postgre status
Instalace se dělá pomocí package manageru (samozřejmě).
Seznam servisů, C/C++: EnumServicesStatusEx(); C#: System.ServiceProcess.ServiceController.GetServices()
Spuštění servisu, C/C++: ControlService(); C#: ServiceController.Start()
Zastavení servisu, C/C++: ControlService(); C#: ServiceController.Stop()
Založení servisu, C/C++: CreateService(); C#: ServiceInstaller.Install()
No, hezký. Dejme tomu, že ti to přijde i elegantní. A když se přihlásim na win počítač skrze ssh, jak spustím takovou službu? A nejlíp, když se přihlásí skrze ssh nějaký program.
který standard? Single UNIX Specification toho moc neříká, popisuje jen /dev/console, /dev/null, /dev/tty a /tmp. Natož aby řekl, jak registrovat servis na všech Unixech.
Obecně standard. Není jeden. A každá distribuce si volí, co a který použije. Většina dodržuje POSIX, a FHS.
Ne, závazné nejsou. Ostatně to nedělá nikdo. Ne, nepokrývá všechno. No, ale tak na to si nikdo nehraje, ne?
to není bordel, ale záměr. Ve Windows nespoléháte na to že dokumenty budou v C:\Documents and Settings\[AccountName]\Documents, protože v jiné jazykové mutaci či verzi to může být C:\Dokumenty a nastavení\[AccountName]\Dokumenty, nebo něco úplně jiného. Správnou lokaci získáte přes API, případně přes env variables.
Už jsem se lekl, že jsi se z této schizofrénie, kdy v případě unixu je to samozřejmě bordel, zatímco v případě Windows je to samozřejmě záměr - uzdravil. No nic. Žádná změna.
Záměr nezáměr, faktem je to, že Windows mají hezké představy, které se verzi od verze liší, a navíc je stejně nikdo nerespektuje.
Léta mají Windows MSI instalátor, a když sem se kámoše windowsáka na to ptal, jak vytvořit MSI balíček, tak na mě koukal jak trubka.
Nechtěl by si raději dělat osvětu svejm vlastním lidem? To by bylo určitě užitečný.
Každopádně, myslím, že já jsem tento měsíc svůj kredit radit windowsákům vyčerpal. Ať si s trolly hraje zase někdo jiný.
Čau.
No jistě. Lael si dovoluje kritizovat správu servisů na Unixech. Za to jasně zaslouží rozkopat ciferník. A co mi třeba zlomit ruku, hodit do okna molotov, nebo podpálit auto? No nebyla by to správná demonstrace komunitního ducha a zasloužená odplata za rouhačskou kritiku správy services na Unixech? :D
To by byl spis namet na postapokalipticky sci-fi fil. IT valka pote, co se Microsoft polusil nastolt svetovou nadvladu. Vlady, tvorene farmami serveru s Widlemi, nezvladly situaci, kdyz doslo k runtime error fghkg8369í567 a nekolika BSOD, v dusledku toho nebyl v televizi oblibeny televizni serial a navic doslo k nedostatku kecupu. Nasledne povstani obyvatelstva se widloservery pokusily potlacit zaslanim armady autonomich valecnych stroju, coz obyvatelstvo strasne nasralo, prestoze se widlostroje z poloviny postrilely navzajem nasledkem poruchy v dlazdicce. Doslo totiz ke zniceni tovarny na levne parky z odpadku. No a pak uz to jede. Svetova mesta lezi v troskach, v kanalech se organizuje odboj, jehoz nejvetsim problemem jsou vsudyritomni potkani. Widloservery servery se opevnily v jadernych elektrarnach a zbesile brani zasobovaci cesty palivovych clanku......
No to že se skoro dostalo do filmu :D
Hey, you're lucky you weren't alive during the Microsoft conflict. Hell, we were beating each other with our own severed limbs.
http://www.imdb.com/title/tt0211443/quotes?item=qt0349061
Tak ještě jednou k API vs utilitám. API je určené primárně k použití autory aplikací. Utilita je určená primárně pro admina nebo skriptování. Utility nejsou API.
Ad co popisuješ ohledně toho mapování, je sice pravda, ale nijak to není specifikum Unixu - ne, to je specifikum používání utilit místo API. Musíte sestavit string s paramaretry, spustit proces s těmi parametry, a pak parsovat výsledek. To je ovšem postup typický pro shell skript, ne pro aplikaci.
Ad windows ten Marshaling má v mnoha případech vestavěný - samozřejmě marshalling se používá i v řadě API. Ovšem volání utilit je specifické tím že vstup i výstup je typicky string, v případě výstupu je pak nutné provést jeho parsování.
Ad Chápeš ty vůbec, k čemu je v unixu třeba takovej stdin - jistě.
Ad jméno toho scriptu definuje api - jména skriptů žádné API nedefinuje.
Ad dodneška tak docela netuším, co se děje při cabal build, maven install, ale dokážu si představit, jak bych to zjišťoval. Ve windows si nepředsavím nic - to je ovšem dané výhradně nedostatkem vaší představivosti :)
Ad PS... sice naprosto skvělej koncept, ale budem si muset počkat do Win12, než to bude možné rozumě používat - co konkrétně se v něm nedá rozumně používat?
Ad Seznamte se s Unixovými shelly... - pochopitelně existuje i řada shellů pro Windows. Nicméně v dodávce systému je jen cmd.exe a powershell, ostatní kousky jsou spíš okrajové experimenty.
Ad v Unixu, díky dobře navrženému API, není problém dokonce rozchodit PS - LOL. PowerShell funguje na Linuxu díky projektu Mono, což je (nekompletní) port .NETu, tedy to dobře navržené API.
Ad Problém je v tom, že lidé zkoušeli používat objekty na tyto věci, a vono to prostě lepší není, no - aha. Asi proto se masivně používá například Qt založené kompletně na objektech. Na objektech jsou založené D-Bus, GTK+, Java, Python, PHP, Cairo. A jak jsem psal, libc je založená na handles, což je svým způsobem rudimentální implementace objektů.
A když srovnáme servis jako objekt a servis jako soubor, co podle vás přináší servis jako soubor za výhody?
Ad V mém oblíbené distribuci (tak bavíme se o oblíbencích že jo?!) se to napíše takto... - ve Windows máte k dispozici samozřejmě i Services applet a command line tool sc. Nicméně máme API, takže je možné se servisy pracovat z aplikace.
Navíc vaše oblíbené distro je pro autora aplikace celkem nuda. Autor aplikace potřebuje, aby fungovala všude. Koukněte se, jak start servisů řeší například Oracle. Dá vám příklad skriptů pro různé platformy, které si dopatláte "doma", a umístíte je do adresáře podle toho na které platformě se nacházíte: /etc/rc.d/rc2.d, /sbin/rc3.d/ + /sbin/rc0.d/, /etc/rc.d/rc0.d/ + /etc/rc.d/rc3.d/ + /etc/rc.d/rc5.d/, /Library/StartupItems/. A ty skripty nepodporují ani parametr status, takže nezjistíte jestli servis běží nebo ne. Takže o jakém standardu to mluvíte? Žádný neexistuje. Každý Unix (v případě Linuxu každé distro v každé verzi) si řeší servisy po svém, typicky vlastním klubkem skriptů.
http://docs.oracle.com/cd/B19306_01/server.102/b15658/strt_stp.htm#UNXAR181
Ad když se přihlásim na win počítač skrze ssh, jak spustím takovou službu - příkazem sc start [service name]. Admin se ovšem přihlásí přes RDP, a ssh ho nezajímá. Aplikace se samozřejmě v žádném případě nebude přihlašovat skrz ssh, krmit konzoli příkazy a parsovat výstup. Místo toho provede něco takového:
ServiceController sc = new ServiceController("My Service", "192.168.1.22");
sc.Start();
Pochopitelně můžete získat i seznam servisů nainstalovaných na jiném stroji:
System.ServiceProcess.ServiceController[] services;
services = System.ServiceProcess.ServiceController.GetServices("192.168.1.22");
Ad kam se umistťují jednotlivé soubory; každá distribuce si volí, co a který použije - jinými slovy každý Unix si umisťuje soubory kam uznají jeho autoři za vhodné, a liší se to i mezi distry Linuxu. To je pro autory aplikací fakt skvělé :)
Ad Už jsem se lekl, že jsi se z této schizofrénie, kdy v případě unixu je to samozřejmě bordel, zatímco v případě Windows je to samozřejmě záměr uzdravil - rozdíl je v tom, že ve Windows máme API (a env variables), které jasně říkají, kam se soubory mají umisťovat. Takže aplikace neumisťuje svoje dokumenty natvrdo na Windows XP do "%USERPROFILE%\My Documents" a na Win7 do "%USERPROFILE%\Documents", když se to navíc liší podle jazykové mutace. Místo toho zavolá API IKnownFolder::GetPath, v .NETu Environment.GetFolderPath. Tím získá cestu, která je platná pro danou verzi a jazykovou mutaci Windows. Tradiční shell skripty neumí volat API, ale mohou použít environment variables, které řeší nejběžnější scénáře.
Ad Windows mají hezké představy, které se verzi od verze liší, a navíc je stejně nikdo nerespektuje - všichni autoři aplikací mají znát API pro práci s known folders. Samozřejmě někteří motáci to zmotají. Například autoři Firefoxu svého času zapisovali cache browseru do roaming data, takže se uživatelům ta cache kompletně (a hlavně zbytečně) tahala při přihlášení na jiném stroji. API sice použili, ale zjevně nesprávně. Ale má to dobrý konec: nakonec se i tihle matláci naučili API použít správně.
Ad Léta mají Windows MSI instalátor, a když sem se kámoše windowsáka na to ptal, jak vytvořit MSI balíček, tak na mě koukal jak trubka - kámoš asi není programátor, a uživatele ani admina to nemusí zajímat. Kdyby vás to zajímalo, tak popis včetně příkladů je součástí Windows SDK. Pokud chcete něco pohodlnějšího, můžete použít WiX Toolset, InstallShield nebo něco podobného. MS používá WiX Toolset.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa367449(v=vs.85).aspx
http://wixtoolset.org/
Ad myslím, že já jsem tento měsíc svůj kredit radit windowsákům vyčerpal - no zatím jsem se od vás dozvěděl jedinou novinku: command line utilita je podle vás API, protože vy tvrdíte, že je to API. Jestli je to váš měsíční kredit rad a porad, tak tedy nic moc.
Tak ještě jednou k API vs utilitám. API je určené primárně k použití autory aplikací. Utilita je určená primárně pro admina nebo skriptování. Utility nejsou API.
To je čistě tvoje tvrzení. Nevidím důvod takového rozdělení.
Naopak, pro Unix je typické, že nedělá rozdíl mezi člověkem a programem.
ne, to je specifikum používání utilit místo API. Musíte sestavit string s paramaretry, spustit proces s těmi parametry, a pak parsovat výsledek. To je ovšem postup typický pro shell skript, ne pro aplikaci
Aha. A SQL je vzduch.
jména skriptů žádné API nedefinuje.
Definují. Je to oblíbený a osvědčený vzor, který se používá nejen v shellu.
LOL. PowerShell funguje na Linuxu díky projektu Mono, což je (nekompletní) port .NETu, tedy to dobře navržené API.
Když by Unix neměl API, tak si .NET může to své strčit víš kam.
Navíc vaše oblíbené distro je pro autora aplikace celkem nuda.
No, tak ty taky cpeš Windows, které jsou většině místních volné, že jo. A navíc ho neumíš ani dobře prodat.
kámoš asi není programátor
Kámoš právě že je programátor. A na fulltime. Přece nejsem blbej, abych se ptal někoho, kdo o tom nic neví. Třeba tebe.
Ad To je čistě tvoje tvrzení. Nevidím důvod takového rozdělení. - a kde vidíte důvod spojovat utility a API, když jsou to dvě zásadně odlišné věci?
Ad pro Unix je typické, že nedělá rozdíl mezi člověkem a programem - to je svým trpkým způsobem pravda :/, ale na rozdělení na API a utility to nic nemění.
Ad A SQL je vzduch - to je dobrá ukázka. Jak provádíte dotazy do DB? Jestli není rozdíl mezi API a utilitou/scriptem, tak zřejmě nějak takhle: Do stringu postupně připisujete věci jako "SELECT * FROM Employees WHERE Surname=" + EscapeString("Novak") + ";", pak provedete fork/exec ke spuštění "sqlplus user/password@db", nakrmíte stdin procesu tím SQL, a pak budete ze stdout (nebo souboru) parsovat hlavičku tabulky a jednotlivé záznamy. Je to samozřejmě neskutečný opruz na psaní, je to pomalé jako slimák, závislé na tom že utility jsou kde mají být, váš profil má správně nastavené env variables atd.
Jak se to ve skutečnosti dělá? Založíte connection object, připojíte se k DB, založíte dotaz, nastavíte parametry, provedete dotaz, dostanete nějaký dataset, všechno je typované. Jinými slovy nepoužíváte žádné utility ani skripty, ale čistě volání API.
Ad jména skriptů žádné API nedefinuje; Definují - vysvětlíte mi nějak podrobněji, co máte na mysli?
Ad Když by Unix neměl API, tak si .NET může to své strčit víš kam - já nikdy netvrdil, že Unixy nemají API. Tvrdím že nemají API ani pro základní operace jako je správa servisů, což je prostý fakt.
Ad vaše oblíbené distro je pro autora aplikace celkem nuda; ty taky cpeš Windows... - rozdíl je ovšem v tom co jsem popisoval: na Unixech se registrují servisy různě, liší se skripty i jejich umístění, a pro autora aplikace je to utrpení. Na Windows je správa servisů zpracovaná řádově lépe. Systemd je zřejmě pokud o něco podobného, a z diskuse soudím, že má (jako většina open source) značné mouchy.
Ad Kámoš právě že je programátor. A na fulltime - v tom případě bych čekal, že už někdy dělal instalační balíček. Pokud ne, tak to možná něco vypovídá o jeho práci, ale nevím co by to mělo vypovídat o Windows Installeru.
Ad Přece nejsem blbej, abych se ptal někoho, kdo o tom nic neví. Třeba tebe - FYI MSI balíčků jsem vyráběl víc, není to rocket science.
a kde vidíte důvod spojovat utility a API, když jsou to dvě zásadně odlišné věci?
Nejsou.
Ad A SQL je vzduch - to je dobrá ukázka. Jak provádíte dotazy do DB? Jestli není rozdíl mezi API a utilitou/scriptem, tak zřejmě nějak takhle: Do stringu postupně připisujete věci jako "SELECT * FROM Employees WHERE Surname=" + EscapeString("Novak") + ";", pak provedete fork/exec ke spuštění "sqlplus user/password@db", nakrmíte stdin procesu tím SQL, a pak budete ze stdout (nebo souboru) parsovat hlavičku tabulky a jednotlivé záznamy. Je to samozřejmě neskutečný opruz na psaní, je to pomalé jako slimák, závislé na tom že utility jsou kde mají být, váš profil má správně nastavené env variables atd.
Jak se to ve skutečnosti dělá? Založíte connection object, připojíte se k DB, založíte dotaz, nastavíte parametry, provedete dotaz, dostanete nějaký dataset, všechno je typované. Jinými slovy nepoužíváte žádné utility ani skripty, ale čistě volání API.
Bláb blá blá, spoustu keců o ničem. Co dostane SQL server na vstupu, v tom nejužším hrdle?
Ad Když by Unix neměl API, tak si .NET může to své strčit víš kam - já nikdy netvrdil, že Unixy nemají API. Tvrdím že nemají API ani pro základní operace jako je správa servisů, což je prostý fakt.
To je prostě tvoje tvrzení. Nic víc. Jó, že to má každá distribuce jinak, možná. Že je to divné, neintuitivní, fajn - věc názoru. Že se nedrží přísně nějakého strandardu, no dejme tomu. Psanýho asi ne. Ale říct o jakémkoliv software, že nemá API, je tak strašná blbost, že už se k tomu nebudu dál s tebou přetahovat.
Na Windows je správa servisů zpracovaná řádově lépe.
Tvoje tvrzení. Jednu službu jsem psal. Těžko říct, zda je to "řádově lépe", ale mořil jsem se s tím dlouho.
Zatímco službu pro debiana jsem měl do hodiny. (Pochopitelně bez předchozích znalostí.) Službu pro centos taky. Ano, každá se psala jinak. Ale rozhodně to bylo snazší.
v tom případě bych čekal, že už někdy dělal instalační balíček. Pokud ne, tak to možná něco vypovídá o jeho práci
Ubohé, navážet se do někoho, koho neznáš.
ale nevím co by to mělo vypovídat o Windows Installeru.
A co to vypovídá o tobě, vzhledem k tomu, že já o kvalitách Windows Installeru neřekl ani slovo?
Ad Bláb blá blá, spoustu keců o ničem. Co dostane SQL server na vstupu, v tom nejužším hrdle? - to je jedno, protože jako autor aplikace prostě volám API a nikoliv utilitu. Ale není to tak jak si představujete. Závisí to na konkrétním DB engine. Na příklad MS SQL Server používá Tabular Data Stream Protocol, US Patent 7318075. Dotaz je binární struktura obsahující mimo jiné SQL statements, parametry jsou tuším typované a ukládané zvlášť. Výsledek je binární struktura obsahující mimo jiné popis sloupců a řádky, vše je typované. Koukněte se tady na kapitolu 4. To XML je jen dekompozice binární struktury.
https://msdn.microsoft.com/en-us/library/dd304523.aspx
Ad že to má každá distribuce jinak, možná - a to mluvíte jen o Linuxu.
Ad Že se nedrží přísně nějakého strandardu, no dejme tomu - což bohužel znemožňuje použít jeden způsob registrace servisu pro různá distra Linuxu, nemluvě o různých Unixech. A nemluvě o jednom způsobu získání seznamu servisů atd.
Ad říct o jakémkoliv software, že nemá API, je tak strašná blbost, že už se k tomu nebudu dál s tebou přetahovat - pokud chcete tvrdit, že utilita je API, tak buď přijďte s něčím co takové tvrzení podpoří, nebo se o tom opravdu nemusíme přetahovat.
Ad Jednu službu jsem psal. Těžko říct, zda je to "řádově lépe", ale mořil jsem se s tím dlouho. Zatímco službu pro debiana jsem měl do hodiny - to záleží z jaké perspektivy vycházíte. Pro admina je možná snazží napsat init skript, jenže to (alespoň na Windows) není jeho práce, protože dostane hotový balíček. Pro programátora je *výrazně* praktičtější použít API, které funguje na všech cílových systémech, než řešit skripty pro nevím kolik odrůd Unixů, včetně dister Linuxu.
Ad to možná něco vypovídá o jeho práci; Ubohé, navážet se do někoho, koho neznáš - zato když se vy navážíte do mě, tak to ubohé rozhodně není, že? Ale k věci: nenavážím se do něj. Pokud programuje například v Javě nebo ABAPu, tak nikdy s Windows Installerem nepřijde do styku. Pokud dělá třeba imaging, tak bude půl roku dělat na dekódování nějakých formátů, a jak to na konci někdo zabalí do instalátoru, to ho také nemusí zajímat. Takže to, že neví jak udělat MSI balíček, dost možná něco vypovídá o jeho práci. Není všechno hned navážení se.
Ad Bláb blá blá, spoustu keců o ničem. Co dostane SQL server na vstupu, v tom nejužším hrdle? - to je jedno, protože jako autor aplikace prostě volám API a nikoliv utilitu. Ale není to tak jak si představujete. Závisí to na konkrétním DB engine. Na příklad MS SQL Server používá Tabular Data Stream Protocol, US Patent 7318075. Dotaz je binární struktura obsahující mimo jiné SQL statements, parametry jsou tuším typované a ukládané zvlášť. Výsledek je binární struktura obsahující mimo jiné popis sloupců a řádky, vše je typované. Koukněte se tady na kapitolu 4. To XML je jen dekompozice binární struktury.
To ale nemůže být pravda, protože přeci to nejužší hrdlo musí být volání funkcí, to dá rozum. Jinak to není API toho serveru. Přece. Zjevně. A Samozřejmě.
což bohužel znemožňuje použít jeden způsob registrace servisu pro různá distra Linuxu, nemluvě o různých Unixech. A nemluvě o jednom způsobu získání seznamu servisů atd.
Jo, no a? Koho to pálí?
to záleží z jaké perspektivy vycházíte. Pro admina je možná snazží napsat init skript, jenže to (alespoň na Windows) není jeho práce, protože dostane hotový balíček. Pro programátora je *výrazně* praktičtější použít API, které funguje na všech cílových systémech, než řešit skripty pro nevím kolik odrůd Unixů, včetně dister Linuxu.
No, já ti, jako vývojář, na tu *výrazně* praktičtější praktičnost z vysoka kašlu, když službu pro Windows jsem psal týden, zatímco službu pro Linux hodinu. (A to jsem v tý době byl windowsák).
zato když se vy navážíte do mě, tak to ubohé rozhodně není, že?
Tebe znám. Bohužel.
S nikým jiným, ani s žádným jiným Windowsákem nemám problém se bavit na úrovni. Ale demagogy, jakýkoliv, bytostně nesnáším.
Není všechno hned navážení se.
OK, omluva se přijímá.
Ten dotyčný dělá normálně v C++, C# a VB. Většinou koncové aplikace, s databází. Takže jsem si tipnul, že na lepší šanci už mět nebudu. No výsledek je takovej, že MSI balíček je pro mě stále problém.
Ad protože přeci to nejužší hrdlo musí být volání funkcí, to dá rozum - pletete si snad protokol a API? Co dostává X11 v nejužším hrdle (ať už tím máte na mysli cokoliv)? Zřejmě nějaký stream. A jaké je API X11 Serveru? No přece Xlib a/nebo XCB, tedy sada funkcí.
Ad Jo, no a? Koho to pálí? - no, skoro nikoho. Jenom všechny autory SW pro Unixy. Výjimkou jsou možná ti, kterým připraví balíčky autoři dister Linuxu, pro které je to mimochodem také komplikace.
Ad službu pro Windows jsem psal týden - ehm. Ve VS najdete template Windows Service. Ve VS 2010 a dřívějších verzích stačilo přidat project typu Setup, do něj přidat výstup hlavního projektu a buildnout to, v output dir budete mít MSI balíček. Jestli jste na *tohle* přicházel týden, přesto že na MDSN máte vyjma popisu i tutorialy, tak k tomu nemám komentář. Vlastně jeden ano: připomíná mi to opět ty jedince, kteří nemají problém ovládat vi, mastit regexy, naučit se názvy a parametry stovek příkazů, ale je pro ně nepřekonatelný problém najít jak ve Wordu pomocí ribbonu vložit tabulku, protože je to "nelogicky" Insert/Table :)
Ad demagogy, jakýkoliv, bytostně nesnáším - to máme podobné. Akorát se neshodneme, co vidíme jako demagogii.
Ad protože přeci to nejužší hrdlo musí být volání funkcí, to dá rozum - pletete si snad protokol a API?
Já ne. U sqlserveru je protokol tcp/ip a api je SQL jazyk.
Ad Jo, no a? Koho to pálí? - no, skoro nikoho. Jenom všechny autory SW pro Unixy. Výjimkou jsou možná ti, kterým připraví balíčky autoři dister Linuxu, pro které je to mimochodem také komplikace.
Ví vůbec ti autoři dister, že se jich tak zastáváš, a že je tak strašně lituješ?
Tady na rootu dokonce byl jeden autor distra. Zeptej se ho. Určitě ti potvrdí, že nejhorší na celé té přípravě byla právě ta rozdílnost mezi distry. - matko, to je materiál...
ehm. Ve VS najdete template Windows Service. Ve VS 2010 a dřívějších verzích stačilo přidat project typu Setup, do něj přidat výstup hlavního projektu a buildnout to, v output dir budete mít MSI balíček. Jestli jste na *tohle* přicházel týden, přesto že na MDSN máte vyjma popisu i tutorialy, tak k tomu nemám komentář.
No jo, ale když jsem tak blbej, to ta tebou dehonestovaná (ne)čitelnost, rotříštěnost a nedostatečný apismus linuxových scriptů získává úplně jinej rozměr. Vždycky sem si myslel, že pro blbý je spíše Windows. Hmm.
Ad U sqlserveru je protokol tcp/ip a api je SQL jazyk - SQL je jazyk, nikoliv API. API je například ODBC, JBDC nebo ADO.NET. Je mi líto, ale terminologii nepředefinujete diskusí na rootu.
https://en.wikipedia.org/wiki/SQL
Ad autoři dister... určitě potvrdí, že nejhorší na celé té přípravě byla právě ta rozdílnost mezi distry - proč asi tolik dister přechází na systemd, který má API a deklarativní konfiguraci?
Tahle diskuse mi už nepřijde produktivní. Pokud jsou podle vás utility API, a správa servisů na Unixech nikoho netrápí, tak beru váš názor na vědomí a nesouhlasím, s tím že argumenty jsem napsal.
Sranda je, že Blábol se tady pořád odvolává na API, aniž by tušil, co to ve skutečnosti je. On si pod tím představuje volání funkcí, přitom to vůbec není zásadní. Jestli se volá funkce, metoda, nebo skript, je úplně jedno. Důležité je to, že programátor zavolá definované NĚCO a dostané definovaný NĚJAKÝ výsledek.
Samozřejmě trvat na svém není nic špatného. Je to špatné jen pokud víte, že nemáte pravdu.
A jistě se nebudete divit rýpnutí na závěr: až budete zase něco vyvíjet, nezapomeňte použít správné API: more, less, sed, sqlplus, bash... Například čas ideálně zjistíte tak, že použijete fork/exec, spustíte date a pak naparsujete výsledek :)
Souhlas, je potřeba mít API i nástroje pro správu systému, které to API používají. Jenže když máte API, je napsání nástrojů už celkem jednoduché. Mimochodem spousta funkcí API se dá volat přes rundll32.
Windows jsou primárně založené na GUI, ale utilit je spousta. Jak od výrobce, tak od třetích stran. Navíc máme například PowerShell, který je silnější než unixové shelly.
No, vzhledem k tomu, ze na NIXech ty utility nekde ty vysledky musi ziskavat, protoze z prstu si je necucaji, kdyz nemaji prsty, tak nejake API nebo neco tam byt musi. Nehlede na to, ze v Linuxu mate spoustu k dispozici v /proc, coz je dost prakticka vec.
Utility ve Widlich jsou obvykle tragicke. Nehlede na to, ze bych podeziral, ze ani v Powershellu je porad jeste nelze retezit pres rouru, jako na NIXech, coz tyto utility cini mnohem mene uzitecnymi, nez by jinak mohly byt.
Dali vec, kterou jsem u widlackych utilit zaznamenal, je ze rada jich ani zrejme nepouziva standardni output nebo co, takze ani nejde vystup nekam presmerovat. Vystupy jsou casto znecisteny bordelem, ktery nejde vypnout, takze kdyz to chcete pouzit, musite to napred proparsovat a odstranit nesouvisejici svincik. Dale vystupy jsou casto spatne parsovatelne, uz proto, ze kazda utilita si bastli oddelovace, jak se ji zachce. Nekdy tabulator, nekdy mezery. Nekdy lze oddelovac zvolit, obvykle ale ne..... MS zretelne nemel zadna pravidla pro psani utilit, aby davaly smysl. A kdyz pak jednou mnozina utilit od nesourodych autoru dostatecne nakynula, MS z toho udelal Resource Kit a nestesti bylo hotovo.
Jezis, to je pokrok! Po letech, kdy name muselo stacit type <file>|more z dob DOSu, se uz daji rourovat i jine veci. Nicmene i tak asi stale bude problem v tom, ze jestli MS nezcivilizoval spoustu svych starsich utilit, tak vystup z nich nepujde narvat do roury a u tech, u kterych to jde, to nepujde bez proparsovani a odstraneni bordelu. Jestli jsi mel nekdy cest s Resource Kitem, tak to byl dost des.
Jinak si vsimni, ze jsem napsal: "Nehlede na to, ze bych podeziral....". Nikde jsem netvrdil, ze mam jistotu, ze to tak stale je.
Ze se tema blabolama co se pise nekola vubec zabejvas ...
Jinak prdel je i to, ze kazdej ten bazmek ma jinak koncipovanej vstup, a klidne i zcela totozna vec se vklada uplne jinak. Nekdy trebas mas login jako domena\jmeno ... jindy to musis zadat extra jako dva parametry ...
Polovina toho neumi sitovou cestu, cast dokonce ani v pripade, ze si to teda mountnes aby to melo pismeno ... jako administratorovi ti to neustale nadava, ze nemas opravneni ...
Jako fakt bomba, kdyz chci spustit ps, a vynada mi to, ze nejsem opravnen spoustet, protoze to neni podepsany, tak si to sice umim povolit, ale nac takovej vopruz je dobrej? No jasne, sme u M$...
Ad kazdej ten bazmek ma jinak koncipovanej vstup, a klidne i zcela totozna vec se vklada uplne jinak. Nekdy trebas mas login jako domena\jmeno ... jindy to musis zadat extra jako dva parametry - to není moc časté, ale stává se. Jenže co je to třeba proti PHP, kde najdete konstrukce typu find(needle, haystack) i find(haystack, needle) :)
Ad Polovina toho neumi sitovou cestu, cast dokonce ani v pripade, ze si to teda mountnes aby to melo pismeno - pokud utilita nastavuje aktuální adresář, tak na UNC cestu ho nastavit nelze. Nevím o žádné utilitě operující nad soubory, která by nešla na mapovaném disku.
Ad jako administratorovi ti to neustale nadava, ze nemas opravneni - seznamte se s UAC, kontextovým tlačítkem myši a položkou menu Run as administrator :)
Ad bomba, kdyz chci spustit ps, a vynada mi to, ze nejsem opravnen spoustet - a co třeba bezpečnost?
Tak schvalne, sem vazne zvedav, jako pustis nepodepsanej powershellovej script as administrator bez toho, aby sis nejdriv povolil spousteni nepodepsanych powershelovych scriptu ... nejde co? Nj, to je tak, kdyz nekdo zvani a ani netusi vo cem.
A co teprve ta nadherna syntax ... fakt zuzo ...
Jo aha, ja sem administrator a nemam opravneni spustit script ... ale smazat systemovy dllka a spustit libovolnou binarku muzu, dokonce na to nemusim bejt ani admin, zejo a muzu spustit i obrazky a dalsi krasny veci ... joooo, tomu se rika bezpecnost ala M$
A fakt by me zajimalo, co stim ma spolecnyho php. Ona snad php vyviji jedina firma jako svuj main produkt? lol ...
Ad jako pustis nepodepsanej powershellovej script as administrator... - proč zrovna as administrator? Skript dokáže napáchat spoustu škod i pokud neběží pod adminem. A ano, i admin si musí povolit běh nepodepsaných skriptů. Většina uživatelů nepodepsané PS skripty běžet nepotřebuje, a když omylem kliknou na skript, může být hned vymalováno.
Ad co teprve ta nadherna syntax ... fakt zuzo ... - viděl jste někdy třeba bash nebo perl? Žůžo, fialový.
Ad ja sem administrator smazat systemovy dllka a spustit libovolnou binarku muzu, dokonce na to nemusim bejt ani admin, zejo a muzu spustit i obrazky a dalsi krasny veci - spustit můžete jen binárku ke které máte oprávnění Read & Execute. Smazat binárku můžete jen pokud k máte oprávnění Modify.
Ad muzu spustit i obrazky a dalsi krasny věci - jak konkrétně?
Ad co stim ma spolecnyho php. Ona snad php vyviji jedina firma jako svuj main produkt - taková nekonzistence v rámci jednoho jazyka vám nepřijde vtipná?
Ad vzhledem k tomu, ze na NIXech ty utility nekde ty vysledky musi ziskavat, protoze z prstu si je necucaji, kdyz nemaji prsty, tak nejake API nebo neco tam byt musi - jak a kdy. Například správa servisů většinou žádné API nemá. Na solarisu je Service Management Facility, která má (poměrně hrozné) API. Na některých Linuxech je systemd, který se dá poměrně rozumně ovládat přes D-Bus. Ale POSIX v téhle oblasti žádné API nepopisuje, a "tradiční" implementace jsou klubka skriptů, která API nevystavují. Správa lokálních uživatelů v POSIXu žádné API nemá, a nevím že by nějaký Unix API nabízel. Management síťových interfaců je řešený utilitami, které používají interní API specifické pro konkrétní Unix.
Ad Utility ve Widlich jsou obvykle tragicke; vystupy jsou casto spatne parsovatelne - souhlas, na řetězení utilit přes pipe se zjevně moc nemyslelo. Nechápu třeba proč utilita find vypisuje první řádek prázdný, a na druhém pomlčky a jméno souboru. Naštěstí se to dá vyčistit, a většina utilit kupodivu vrací errorlevel (return code).
Ad bych podeziral, ze ani v Powershellu je porad jeste nelze retezit pres rouru - řetězit přes rouru můžete i v cmd.exe. V PowerShellu vám odpadá parsování a textové filtrování, protože předáváte objekty (pokud použijete cmdlet). Například cmdlet get-service vrátí sadu objektů typu System.ServiceProcess.ServiceController. Každý objekt má properties (DisplayName, ServiceName, Status, ServiceDependsOn a další) a metody (Start, Stop, Pause, Continue a další). Defaultní výstup vám vypíše Status, ServiceName a DisplayName, ale pořád pod tím máte objekty, takže můžete zobrazit další vlastnosti, filtrovat kolekci, zavolat metody atd. Pomocí Out-File to dají výsledky triviálně zapsat i do souboru.
Příklad:
get-service | where {$_.Name -like '*W32*' -and $_.Status -eq 'Stopped'} | start-service
"dyž jsme u těch vypatlanců: vývojář, který nemá v hlavě úplně vypatláno, hlavně použije API a ne utility. Bohužel někteří vypatlanci nepovažovali za vhodné udělat API ani pro tak základní věci, jako je správa servisů, uživatelů, síťových interfaců atd."
Tak si to své božské API na těch widlích používejte. Brání vám někdo? Nemyslím. A musím opět konstatovat, že vaše trollování zde nese známky nějaké obsese či jiné psychické poruchy. Normální člověk něco, co nepoužívá, nemá potřebu "kritizovat".
Samozřejmě že umí. Service Manager pošle servisu událost SERVICE_CONTROL_STOP. Pokud se servis odmítne zastavit, tak je to chyba servisu, nikoliv Service Manageru. Ten ho odstřelí po 125 sekundách, v případě shutdownu systému po uplynutí WaitToKillServiceTimeout. Všechno je to dokumentované. Pokud je to u vás jinak, zřejmě používáte nějakou pravěkou verzi Windows.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms685149%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
Ad nejlepsi na tom je, ze to neumi ani M$, proto kdyz se ti opatchuje (treba) IIS, chce to po tobe restart widli - části IIS se používají v řadě dalších aplikací, a asi nechcete, aby vám patchování bez varování odstřelilo spoustu věcí. Například instalátory Service Packů pro MS SQL Server vás k zastavení servisů vyzvou, a je nezastavíte, tak na konci chtějí reboot.
Jasne, kdyz system neumi stopnou servis (od stejnyho vyrobce) je to chyba servisu (ale rozhodne ne vyrobce). Kdyz se system necha sejmout aplikaci, je to chyba aplikace (ale rozhodne ne systemu, natoz jeho vyrobce) ...
Ja bych chtel videt admina, kterej by widle patchoval s tim, ze se zarucne nic nestane a vse pomezi, specielne kdyz se widle cas od casu nekterou "specielni" aktualizaci restartnou zcela bez upozorneni a dotazu, a to vcetne serverovych.
Ad kdyz system neumi stopnou servis (od stejnyho vyrobce) je to chyba servisu (ale rozhodne ne vyrobce) - to nemá nic společného s výrobcem. Je to problém servisu.
Ad Kdyz se system necha sejmout aplikaci, je to chyba aplikace (ale rozhodne ne systemu, natoz jeho vyrobce) - záleží na konkrétním problému, ale zpravidla to bývá problém systému. Nicméně kód běžící s právy admina můžete systém sejmout velmi snadno: zavolat shutdown, způsobit BSOD zavoláním keBugCheck() apod. Na Linuxu může kód běžící pod rootem třeba zavolat funkci reboot(), postřílet login procesy apod. Takže to že aplikace zboří systém není nijak nemožné.
Ad Tak si to své božské API na těch widlích používejte - na Windows ta API samozřejmě používají všechny aplikace, které ho potřebují. A jak vidíte, tak na Linuxu přichází systemd, který nabízí podobné možnosti.
Ad A musím opět konstatovat, že vaše trollování zde nese známky nějaké obsese či jiné psychické poruchy. Normální člověk něco, co nepoužívá, nemá potřebu "kritizovat". - 1. Nejde o trollování, ale o prosté konstatování fakt, které jiný diskutér rozporoval. 2. Co vy víte o tom co používám nebo nepoužívám? A proč to vůbec taháte do diskuse?
Ad bootovani jinych Widli na stroji,...
Tak já vám to přeji, no.
Ad Ne vsechno se da takto restartovat a o tom
Dobře to děláte. Žel diskuse je o tom, že, SystemD to tak nedělá, proto ten hluk.
Ad eventuelne zajistite, ze neprijdete o cast dat, ... Ale je to dost nepravděpodobné.
O pravděpodobnosti v souvislosti se strátou dat se není co bavit. Murphiho zákony hovoří jasně.
Ad Nadhera, co? Vsechno, co potrebujete,...
PowerShell je tak klasická windowsovatina - skvělej nápad a tak strašně nepovedej.
V Unixu netřeba žádné scripty mastit... No, vůbec tendenční příspěvek, který se dá jedna ku jedné říct o Windows beze změny významu.
Mimochodem Unix api samozřejmě má. Dokonce s dokumentací. Netvrdím, že by se nedalo zlepšit, ale furt je, zvláště v některých věcech vepředějc, než windows. A to hovořím jako člověk, který naprosto fascinovaně koukal na DCOM.
Ad Vam to sice pripada spatne, ale jinym naopak ..
Dojdou-li argumenty, hejt se hodí, že?
Ad diskuse je o tom, že, SystemD to tak nedělá, proto ten hluk - to chápu. Za mě je initd mizerné řešení. Systemd neznám tolik, abych se k němu mohl kvalifikovaně vyjádřit.
Ad O pravděpodobnosti v souvislosti se strátou dat se není co bavit. Murphiho zákony hovoří jasně - osobně by mě víc trápila třeba možnost ztráty dat při patchování nahrazením otevřených souborů.
Ad PowerShell je... skvělej nápad a tak strašně nepovedej - nechápu proč. Za mě je jediný problém v tom, že je proti cmd.exe poměrně komplikovaný, a používám ho jednou za uherský rok, takže se ho vždycky učím znovu.
Ad V Unixu netřeba žádné scripty mastit... No, vůbec tendenční příspěvek, který se dá jedna ku jedné říct o Windows beze změny významu - ve Windows se servis skládá z binárky a její registrace v Service Manageru. Registraci servisu provede instalátor, pro autora aplikace to znamená jen přidat servis do instalovaných komponent.
Ad Unix api samozřejmě má. Dokonce s dokumentací - API samozřejmě má, ale ne na management servisů. Dokumentaci má mizernou, ale uznávám že má.
Ad zvláště v některých věcech vepředějc, než windows - to by mě zajímalo, v čem konkrétně. Ve Windows máme například API, které vám umožní změnit adresu síťového interface. V POSIXu (Single Unix) nic podobného není.
Ad Dojdou-li argumenty, hejt se hodí, že - a vám nepřijde ten popsaný jev fascinující? Můžeme se jen dohadovat, jestli jde o hate, věkem danou konzervativnost, nebo něco úplně jiného.
Ad V Unixu netřeba žádné scripty mastit... No, vůbec tendenční příspěvek, který se dá jedna ku jedné říct o Windows beze změny významu - ve Windows se servis skládá z binárky a její registrace v Service Manageru. Registraci servisu provede instalátor, pro autora aplikace to znamená jen přidat servis do instalovaných komponent.
Tak, a teď mi prosím vysvětli, proč to takhle nejde udělat v Unixu? Tiše předpokládám, že ten rozdíl mezi Win a Unix není jen v tom, že ve Win je služba binárka, a v Unix script, že ne?! Protože co mi paměť slouží, tak ve všech distribucích, které jsem kdy používal se služby instalovali přes balíčkovač. Závislost aplikace na takové službě je také samozřejmostí, stejně jako automatické nainstalování takové služby, je-li potřeba. (Což třeba windows (a ve skutečnosti i Mac) stále ještě nemají dotažené. Ačkoliv msi (homebrew u Mac) maj dobře nakročeno.)
Ad Dojdou-li argumenty, hejt se hodí, že - a vám nepřijde ten popsaný jev fascinující? Můžeme se jen dohadovat, jestli jde o hate, věkem danou konzervativnost, nebo něco úplně jiného.
Ale ano, je to fascinující. Jenže to není ani zdaleka specifikum Linuxu. Já měl šéfa, který vždycky přišel za klientem s rozbytým počítačem (Windows). Chvilku tam jen tak nazdařbůh otevíral a zavíral dialogová okna v nastavení. Po půl hoďce prohlásil, že "tak, to by bylo. Zbytek ještě budu muset doladit na dálku." Přišel do kanclu, a já to měl (tentokrát opravdu) opravovat. Netřeba zdůrazňovat, že ten vynález spočívající ve vzdálené správě jsme přitáhli mi, dělnická třída z kanclu.
A takhle je to u Windows se vším. Mají prvotřídní obchodníky, to jim nemohu upřít. Rozhraní mají skoro tak dobré, jako Mac. Technologické řešení skoro tak dobré jako Unix. Někdy se Microsoftu opravdu povedou skvělé nápady (třeba ten DCOM je fakt bomba). Ale nikdy to ve Windows nefungovalo tak intuitivně a bezešvě jako v Mac, a nikdy to ve Windows nefugovalo tak technologicky čistě, a průhledně jako v Unixu. Je to prostě už na věky kočkopes.
Ale zvyknout si lze na cokoliv. Na Vim, i na EventViewer. Dokonce i na ten Ribbon. Ačkoliv si nejsem jist, zda by zrovna MSWord byl vhodným nástrojem na čtení logů. Po pravdě si myslím, že i ten EventViewer na ty logy není moc vhodný. A tak je sice ten Vim magor na ovládání, ale aspoň je schopný.
Ad proč to takhle nejde udělat v Unixu - protože na různých unixech máte různé správce servisů, různé umístění skriptů, v řadě případů musíte ty skripty editovat a nastavovat v nich environment variables. Samozřejmě můžete službu nainstalovat přes balíčkovač, pokud ovšem někdo připraví balíček pro konkrétní verzi konkrétního distra.
Ad ten vynález spočívající ve vzdálené správě jsme přitáhli m[y], dělnická třída z kanclu - to je ve firmách poměrně standardní výbava, aby pracovník helpdesku nemusel obíhat stroje osobně.
Ad Rozhraní mají skoro tak dobré, jako Mac - no rozhraní Macu, s těmi menu na horní hraně obrazovky, mi na větších obrazovkách přijde dost nepraktické. Člověk se dost nacestuje myší, a úplně zbytečně. Ad nikdy to ve Windows nefungovalo tak intuitivně a bezešvě jako v Mac - souhlas, ovšem Apple vyrábí HW i SW, a s těmi pár modely HW je to o dost jednodušší. Mimochodem Apple opakovaně hodil uživatele přes palubu. Při přechodu na MacOS X běžely staré aplikace neskutečně špatně, mimo jiné s oddělenými fonty a drivery tiskáren. Při přechodu na Intel byli uživatelé hozeni přes palubu podruhé.
Ad Technologické řešení skoro tak dobré jako Unix - řekl bych že výrazně lepší než Unix. Windows mají lepší kernel a daleko bohatší API.
Ad si nejsem jist, zda by zrovna MSWord byl vhodným nástrojem na čtení logů - to asi ne.
Ad si myslím, že i ten EventViewer na ty logy není moc vhodný - příjemné je to že je log kategorizovaný, a dají se na něj pověsit event handlery, které například pustí skript.
Ad A tak je sice ten Vim magor na ovládání, ale aspoň je schopný - oceňuji že jsem se od vás nedozvěděl něco jako "vi je intuitivní" :). Problém je v tom, že vi je mizerné v textovém režimu a naprosto zbytečné v GUI. Na VT220 měl editor vi svoje kouzlo, ale to bylo před více než 30 lety. Jo, to byla zlatá doba Unixů. Jenže kde jsou ty doby.
protože na různých unixech máte různé správce servisů, různé umístění skriptů
Jenže to vadí jen tobě.
v řadě případů musíte ty skripty editovat a nastavovat v nich environment variables.
Ano, a ve Windows rozchodit python a nastavit tomu cesty je procházka růžovou zahradou mi chceš tvrdit, že jo.
Samozřejmě můžete službu nainstalovat přes balíčkovač, pokud ovšem někdo připraví balíček pro konkrétní verzi konkrétního distra.
Samozřejmě windows má balíčky na všechno. A když je nemá, tak je to snadné všechno nastavit.
no rozhraní Macu, s těmi menu na horní hraně obrazovky, mi na větších obrazovkách přijde dost nepraktické.
Nesmysl. Ale to by's musel mět větší představivost a víc zkušeností s návrhem UX.
Ale beru to jako tvůj názor.
ovšem Apple vyrábí HW i SW, a s těmi pár modely HW je to o dost jednodušší.
Já měl na mysli SW architekturu. To, že ve Windows občas něco spadne neřeším.
Bav se o jednom tématu laskavě.
Mimochodem Apple opakovaně hodil uživatele přes palubu.
Prohlásit něco takového, když ve skutečnosti QT se s Mac táhne až do dneška. Když ve skutečnosti se i v posledním El Capitano emulují některé PPC věci, aby se dali spustit některé staré aplikace.
Pravdou je, že Apple udělalo obrovské věci, aby usnadnili uživatelům i vývojářům přechod, a co nejméně trpěli - transparentní emulace, duplikace kódu pro Motorolu, PPC i Intel. Některé věci zařízli, uznávám. Ale nazvat to hozením přes palubu?! Tím spíše, že Windows má problémy s jednou jedinou platformou a s udržením konzistentního API?
řekl bych že výrazně lepší než Unix. Windows mají lepší kernel a daleko bohatší API.
Nepsal jsi někdy jinde, že Unix API nemá?
No, ale já ti tvůj názor neberu. Pro mě je Windows bordel na kolečkách. Hlavně, že mají API dělené funkcemi (to je hejt na tebe a ty tvé keci, MS vývojářů si vážím).
Problém je v tom, že vi je mizerné v textovém režimu a naprosto zbytečné v GUI.
Problém s tím máš jen ty.
Výborné na vi je to, že ať se dobouchám kamkoliv, do jakéhokoliv stroje, tak tam *minimálně* to vi najdu, a bude fungovat i přes gsm, a budu schopen řešit problémy. Teda, nesmím mít smůlu, a nesmí na tom stroji běžet windows. Pak se mi všechny problémy zdrcnou na jeden jediný.
Ad Jenže to vadí jen tobě - jistě, a proto distra hromadně přecházejí na systemd :)
Ad ve Windows rozchodit python a nastavit tomu cesty je procházka růžovou zahradou - nikdy jsem to nezkoušel. Ve Windows se na env variables obecně spoléhá daleko méně, než na Unixech. Nastavení aplikací se necpe do startovacího skriptu, ale do nastavení aplikace. Nakonec na Unixech je ten trend také dávno vidět. U LibreOffice, KMailu ani Gimpu nejspíš žádné env variables ve start scriptu nenastavujete.
Ad Samozřejmě windows má balíčky na všechno - samozřejmě se aplikace dodávají s instalátorem, a ten zajišťuje instalaci servisu. Dokonce i Oracle, u kterého si na Unixech musíte start DB naskriptovat podle dokumentace.
Ad Windows má problémy s jednou jedinou platformou a s udržením konzistentního API - nějaké konkrétní příklady?
Ad Nepsal jsi někdy jinde, že Unix API nemá - ne. Psal jsem, že Unixy nemají API pro správu servisů a některé další triviální operace.
Ad pro mě je Windows bordel na kolečkách - chápu že když máte SDK s dokumentací, příklady a tutoriály na jednom místě, tak je to hnus oproti situaci na Unixech, kde máte jako "zaručené" API leda libc, dokumentace pro různé knihovny je psaná různým stylem a ve velmi různé kvalitě, hledáte ji po všech čertech, a ještě hromada API chybí :)
Ad vi - souhlasím že výhodou je to, že je na každém Unixu a vždycky funguje. To je ovšem jediné pozitivum. I edit.com z DOSu má lepší interface. Mimochodem na stroj s Windows se i z mobilu v pohodě připojíte přes RDP. Nemusíte mi říkat, že u X11 je to nemožné, protože i přes 4G sítě je to nepoužitelné. Zkoušel jsem si to.
jistě, a proto distra hromadně přecházejí na systemd :)
Aha. Kvůli tomu, že unixy mají scripty na různých místech. Chápu.
Nastavení aplikací se necpe do startovacího skriptu, ale do nastavení aplikace.
V čem je rozdíl?
U LibreOffice, KMailu ani Gimpu nejspíš žádné env variables ve start scriptu nenastavujete.
Protože nastavovat env jsou možnost, ne nutnost. Což je výhoda, ne chyba.
chápu že když máte SDK s dokumentací, příklady a tutoriály na jednom místě, tak je to hnus oproti situaci na Unixech, kde máte jako "zaručené" API leda libc, dokumentace pro různé knihovny je psaná různým stylem a ve velmi různé kvalitě, hledáte ji po všech čertech, a ještě hromada API chybí :)
Jasně. Já někde psal, že msdn je bordel?
Mimochodem na stroj s Windows se i z mobilu v pohodě připojíte přes RDP.
No, fór je v tom, že já netuším, jak bych něco takového udělal. Musel bych si to nastudovat. Stejně netuším, a musel bych si dostudovat, jak bych se na ten stroj připojil přes X11.
Ale vím, jak spustit vi.
Ad Kvůli tomu, že unixy mají scripty na různých místech - to je jeden z důvodů. Jako další bych viděl funkční závislosti a existenci API.
Ad Nastavení aplikací se necpe do startovacího skriptu, ale do nastavení aplikace; V čem je rozdíl - například v tom že můžete použít ke změně nastavení GUI nástroje dané aplikace. Startovací skript vám budou editovat těžko.
Ad nastavovat env jsou možnost, ne nutnost - ovšem pokud je použijete, je tím efektivně zajištěno, že nastavení budete provádět editací skriptu.
Ad Já někde psal, že msdn je bordel - ne. Psal jste, že pro vás je Windows bordel na kolečkách. Já oponuji, že dokumentace je velmi kvalitní a snadno se v ní orientuje, a chaos je vidět naopak na Unixech.
Ad fór je v tom, že já netuším, jak bych něco takového udělal - nejspíš byste si stáhnul aplikaci Remote Desktop, zadal hostname serveru a přihlásil se.
to je jeden z důvodů. Jako další bych viděl funkční závislosti a existenci API.
Co by si ty viděl já ani nechci vidět. Takže těch spekulací už nech.
Já nic netvrdím, ale wikina tvrdí, že Poettirng chtěl překonat stávající inity, chtěl lepší řešení závislostí, chtěl paralelní běh, chtěl redukovat režii shelu.
Nic o roztříštěnosti init scriptů, nebo jejich nepřehlednosti, nebo cokoliv, co jim vyčítáš ty.
Obdivuji tvou schopnost vystihnout to, co není ten problém :-)
V čem je rozdíl - například v tom že můžete použít ke změně nastavení GUI nástroje dané aplikace. Startovací skript vám budou editovat těžko.
Fajn to beru. Co neberu je, proč bych chtěl nastavovat konkfiguraci z aplikace, která je jen filtrem. Tam je naopak env parádní věc. Když funguje, že áno.
ovšem pokud je použijete, je tím efektivně zajištěno, že nastavení budete provádět editací skriptu.
Opět nesprávně: já si komplet změním prostředí aplikace, tudíž, bude-li něco ukládat, bude to ukládat... například do jiného home.
Psal jste, že pro vás je Windows bordel na kolečkách. Já oponuji, že dokumentace je velmi kvalitní a snadno se v ní orientuje, a chaos je vidět naopak na Unixech.
Fajn. A já oponuji, že mandarinky bez pecek jsou úplně nejlepší.
nejspíš byste si stáhnul aplikaci Remote Desktop, zadal hostname serveru a přihlásil se.
Na Linuxu? A v čem je to jednodužší, než napsat
$ ssh hostname
# vi
?
"Na Linuxu? A v čem je to jednodužší, než napsat
$ ssh hostname
# vi
?"
No přece v tom, že můžete klikat a nemusíte (dle Blábola) používat "hkjl", regexpy a nemusíte si pamatovat tisíce příkazů :-) Že si ten shell na rozdíl od Remote Desktop spustím i na tom nejpomalejším GPRS a nepotřebuju k tomu displej jako kráva, aby se na tom dalo něco rozumně udělat, to je jaksi nepodstatné.
Tj, klikaci nastroje ... cece, to mi schvalne porad, jak si ve widlich naklikam dalsi routu. Pripadne, jak si naklikam to, ze chci po nejakym casovym intervalu locknout system - to abys to nemel tak slozity. A nebo ti to jeste zjednodussim, chci si nekde naklikat, ze kdyz pouziju wokno + L, tak ze se zobrazovadlo obratem vypne.
Ad jak si ve widlich naklikam dalsi routu - Windows samozřejmě nemají GUI na všechno, nemělo by to ani smysl. Route table se nastavuje automaticky, metrika se dá ovlivnit v nastavení:
https://bd23.https.cdn.softlayer.net/80BD23/142.4.51.106/blog/wp-content/uploads/2015/08/disable-automatic-metric.png
Pokud chcete editovat route table v GUI, tak třeba jedním z těchto nástrojů:
http://www.nirsoft.net/utils/network_route_view.html
http://www.pkostov.com/wipcfg.html
Pokud chcete API, tak IP Helper umožňuje manipulaci s route table.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa366073(v=vs.85).aspx
A teď otázka na vás: jak na Unixech pomocí API modifikuji route table? V POSIXu nic takového nevidím.
Ad kdyz pouziju wokno + L, tak ze se zobrazovadlo obratem vypne - zobrazovadlem máte na mysli monitor? To se v GUI nejspíš naklikat nedá. Ale triviálně se dá pověsit PS skript na logoff. Buď jak ukazuje první link, nebo pověšením skriptu na event v Event Logu.
https://technet.microsoft.com/en-us/library/cc753583.aspx
http://www.powershellmagazine.com/2013/07/18/pstip-how-to-switch-off-display-with-powershell/
Ad wikina tvrdí, že Poettirng chtěl překonat stávající inity... - tak si od něj něco přečtěte:
Another thing we can learn from the MacOS boot-up logic is that shell scripts are evil. ... Of course, that has to be incredibly slow. No other language but shell would do something like that. On top of that, shell scripts are also very fragile, and change their behaviour drastically based on environment variables and suchlike, stuff that is hard to oversee and control. ... Most of the scripting is spent on trivial setup and tear-down of services, and should be rewritten in C, either in separate executables, or moved into the daemons themselves, or simply be done in the init system.
http://0pointer.de/blog/projects/systemd.html
A k tomu implementoval ovládání servisů přes D-Bus, což byla moje největší výtka. To registrace servisu v systemd probíhá stejně na všech distrech jaksi tiše předpokládám. Snad to pokrývá všechno co jsem zmiňoval.
Ad proč bych chtěl nastavovat konkfiguraci z aplikace, která je jen filtrem - aplikace je jen filtrem? To mi není moc jasné. Ale každopádně většinu aplikací potřebujete nějak spravovat z GUI.
Ad já si komplet změním prostředí aplikace, tudíž, bude-li něco ukládat, bude to ukládat... například do jiného home - a jak se to změní, když to nastavení bude v konfiguraci aplikace?
Ad já oponuji, že mandarinky bez pecek jsou úplně nejlepší - super, užijte si je :)
Ad byste si stáhnul aplikaci Remote Desktop, zadal hostname serveru a přihlásil se; Na Linuxu? - na Androidu a Windows Phone. Na Linuxu třeba rdesktop nebo krdc.
http://packages.ubuntu.com/wily/rdesktop
http://packages.ubuntu.com/wily/krdc
Ad v čem je to jednodu[š]ší, než napsat ssh hostname; vi - a v čem je to praktičtější než spustit váš oblíbený textový editor a prostě otevřít "\\COMPUTER\C$\my folder\my file.txt"? To je ve Windows jedna z možností. Další je třeba v PowerShellu Enter-PSSession -ComputerName COMPUTER, nebo Remote Desktop, který vám dá i přes zatraceně pomalou linku GUI (zkoušel jsem kdysi i 28.8kbps modem).
kvality obvyklé ve Windows 20 let
Ano, na tom se shodneme.
funguje restart při pádu procesu
Zdravé procesy nepadají. Pokud má stroj uptime 400 dnů (ne, že by to tak bylo správně *), tak procesy spuštěné při bootu prostě 400 dnů běží. Pokud někdo ručně (ne, že by to tak bylo správně **) spustí po 200 dnech provozu démona, tak za dalších 200 dnů prostě běží.
Požadavek na restart při pádu procesu je tedy nulový. Jestli jej tam někdo zavádí, asi k tomu má důvod a opět to cosi vypovídá o kvalitě.
*) Uptime je vlastně doba říkající jak dlouho stroj nemá aktuální jádro.
**) Pokud má služba běžet, je nutné ji tak definovat a ne partyzánsky spouštět nutné procesy ručně.
Zajímalo by mne, zda stejně přistupujete k zálohování nebo RAIDu. Zdravé disky přece také neodcházejí, zdravé programy a zdraví uživatelé nezpůsobují ztrátu dat.
Také by mne zajímalo, co je špatného na procesu, který byl odstřelen OOM killerem.
Navíc systemd není jediný správce služeb, jehož autoři si myslí, že pokud správce služeb dostane za úkol, že nějaká služba má být spuštěná, má udělat co je v jeho silách, aby spuštěná byla. A není úkolem správce služeb hodnotit kvalitu té služby, prostě má běžet, takže ji nastartuje, když neběží. Myslel si to také třeba autor daemontools, Daniel J. Bernstein, autor qmailu. Zrovna jeho bych nepodezíral z toho, že prosazoval padající aplikace.
Mimochodem, přesně tohle byl první důvod, proč jsem si uvědomil, že SysVinit&spol. je špatně – protože „správce služeb“ hlásil, že služba je v pořádku, přitom příslušný proces vůbec neběžel. Takhle se zdravý správce služeb nechová.
Také by mne zajímalo, co je špatného na procesu, který byl odstřelen OOM killerem.
Spatne je na tom to, ze by k takove situaci melo dochazet naprosto vyjimecne. A dostupnost sluzby by se mela resit jinak nez neustalym restartem procesu. Od toho je tu load balancing, clusterware a v neposledni rade monitoring.
clusterware systemy se kterymi jsem pracoval stejne pouzivaly "failure startup count" a nepokousely se startovat sluzby porad dokola.
Asi jo. V pripade databazi bych chtel aby se pokusil nastatovat to maximalne jednou a pak aby uz na to nesahal (maximalne aby poslal ticket).
Takze by asi slo nastavit ten interval na nejakou vysokou hodnotu a LimitBurst na 1.
Je to casto situace, ktera vyzaduje manualni intervenci. Napriklad Veritas ma prikazy: "hagrp -freeze" => tzn. "ted si z nejakou skupinou sluzeb(resouces) hraju ja, a ty na nic nesahej". "hagrp -unfreeze; hagrp -clear" => preda rizeni sluzeb clusterware a resetuje "failure count".
PS: ono to restartovani muze souviset i s bezpecnosti. Nektere Script kiddie exploity predpokladaji, ze na napr. na RHEL binarce mate urcite symboly na urcite adrese. Pokud si ale aplikaci zkompilujete sami, tak k exploitu s nejvetsi pravdepodobnosti nedojde a demon jenom segfaultuje. Potom je na utocnikovi aby uhadl na ktere adrese je namapovany napr. exec. Pokud se demon neustale restartuje tak to utocnikovi hodne zjednodusim.
Samozřejmě, že by k pádu procesu mělo docházet naprosto výjimečně. Ale podle mne je chyba se tvářit, že k tomu nemůže dojít nikdy. Když správce služeb dostane za úkol držet službu spuštěnou, má se o to snažit, ne spekulovat o tom, že přece není dobrý důvod, proč by se služba ukončila. Pokud dostane za úkol službu nastartovat a dál se o ni nestarat, má to udělat. Systemd (i jiné systémy pro správu služeb) umožňují obojí.
Pokud má někdo svůj blog na nějakém VPS, asi nebude řešit load balancing a clusterware. Monitoring je hezká věc, ale „aha, proces spadnul, znovu ho nastartuju“ není nic tak sofistikovaného, aby to muselo čekat, než se majitel toho blogu vrátí z víkendu a provede to ručně – tohle snadno zvládne software.
Bohužel to běžně vede ke stavu "no co, už to běží, peču na to". Jak jsem již říkal, pro BFU fajn, jako volitelná možnost SystemD má svůj význam, ale OS se na tom prostě nesmí stát natolik závislým, aby nebyla jiná možnost. V tom případě už by to mělo být přilepený k jádru a to bych si potom moc rád přečetl, jak Linus komentuje tomu "jehož jméno se mi příčí vyslovit" commity :-D
Bohužel to běžně vede ke stavu "no co, už to běží, peču na to".
Správce služeb má spravovat služby, ne vychovávat administrátora.
OS se na tom prostě nesmí stát natolik závislým, aby nebyla jiná možnost
To ale není problém systemd. To evidentně znamená, že systemd poskytuje služby, o které je zájem. Nikomu nic nebrání napsat alternativní implementaci. Pak bude ten jiný software záviset na nějakém obecném rozhraní, a každý si vybere, kterou implementaci chce. Ale to, že neexistuje alternativní implementace, přece není chyba systemd.
Ale existuje spousta alternativ (zatím). Problém je v tom, že díky jakési pochybné davové psychóze, vyvolané pravděpodobně posvátným "RH to řekl takhle", je možnost použití alternativ postupně omezována a to podle mě dost zákeřným a nepřípustným způsobem. Ano, většinu lidí to nezajímá, zajímá to především správce, ale co by lidé řekli na to, kdyby jim někdo postupně vnucoval, až téměř nařizoval, že od teď můžou používat pouze jedno konkrétní grafické rozlišení a to zcela nezávisle na velkosti, typu a rozlišení monitoru a navíc své rozhodnutí jednou za měsíc náhodně změní a všichni musí povinně přepnout na jiné rozlišení? Stačí to jako BFU přirovnání?
Jinak příklad, teď jsem se přihlásil k jednomu nedávno instalovanému firewallu, Slackware, 34 procesů, ani jeden modul jádra, využitá paměť 33MB. Opravdu na to budu v budoucnu potřebovat SystemD?
Článek jsem četl a o nařizování správcům serverů se tam nic nepíše. Píše se tam akorát to, že mnohé distribuce na systemd přecházejí, a pokud je správci chtějí dál používat, budou se muset naučit systemd. Nikdo je ale nenutí u těch distribucí zůstat, klidně mohou přejít na distribuce bez systemd. Přečti si ten článek, než začneš diskutovat, je právě o tom, které distribuce to jsou ;-)
Fork je zbytecny. Minimalne v ramci Debianu existuje reseni, ktere je stale funkcni i na development verzi - pokud z nejakeho duvodu admin nechce systemd, tak ho mit proste nemusi. Ze je neco "default" vazne jeste neimplikuje, ze se to tak musi kazdy pouzivat. Samozrejme admini, co jedou vicemene "na defaultu" na zaklade nejakych copy&paste navodu nejvic rvou. A rvou proto, ze jsou lini se zacist do dokumentace...
Toz o com je tato diskusia - ak existuje viable alternativa tak to budu pouzivat ludia ktorym to vyhovuje (advanced admin na servri) a domaci klikaci budu mat to co im tam Ubuntu/Debian/RH zabalickuje ak s tym ma najmenej problemov. Pride mi ze polka adminov ocakava ze distributor bude do systemu davat akurat tu ich oblubenu vecicku (TM) a ked to tak nie je tak namiesto tlaku na distributorov hadzu spinu na konkretny tool.
Ad jakési pochybné davové psychóze, vyvolané pravděpodobně posvátným "RH to řekl takhle" - to zdaleka není jen věc Red Hatu. I Solaris už má už deset let Service Management Facility, a to Sun typicky přichází s křížkem po funuse. MacOS X už před 10 lety zavedl launchd. Ubuntu před devíti lety zavedlo upstart, a později přešel na systemd.
Autoři aplikací i systémů zjevně vidí dobré důvody, proč je initd mizerný (a ty důvody jsem popsal v jiném postu). Protesty je slyšet hlavně od kdysi progresivních adminů, kteří se před pár dekádami naučili hjkl, a dnes jsou z nich poněkud konzervativní jedinci.
"Nikomu nic nebrání napsat alternativní implementaci. Pak bude ten jiný software záviset na nějakém obecném rozhraní, a každý si vybere, kterou implementaci chce. Ale to, že neexistuje alternativní implementace, přece není chyba systemd."
Je to jeho chyba, protože obecné rozhraní systemd neexistovalo snad déle než po dobu jedné verze.
Když správce služeb dostane za úkol držet službu spuštěnou
No to je otázka, zda správce služeb (init + rc) dostal za úkol držet službu spuštěnou, nebo dostal za úkol ji spustit.
Když se tak dívám na man service a man chkconfig (standardní nastavovátka rc skriptů na centos6) tak se nikde nepíše o tom, že daná služba má být spuštěná.
Naopak se tu píše, že service jen volá příslušný skript v /etc/init.d/ s daným parametrem a nějakým enviromentem.
A chkconfig jen nastavuje linky v /etc/rcX.d adresářích.
Ani slovo o tom, že "úkol držet službu spuštěnou".
V man init se píše "and is responsible for starting all other processes". Starting, nikoliv udržovat nastartované. (Ano, je možné v inittabu použít respawn.)
Tak jen jestli nedošlo k nepochopení toho, co tyto init + rc skripty mají dělat.
To je (opět) Jirsák. ON něco potřebuje, nebo si myslí, že je to v jeho alternativním světě zapotřebí, tak je samozřejmě správné to vnutit i ostatním, protože to přece musí potřebovat i oni. Co na tom, že jim to komplikuje životy, tohle on a další dobroseři s mesiášským komplexem neuznávají, ani když jim to člověk vyargumentuje a podloží historickými zkušenostmi (viz tahle výživná diskuze o šmírovací krabičce do aut jménem eCall).
ad1) v CentOS6 je /etc/inittab z dovodu spatnej kompatibility a jedine co tam ide nastavit je default runlevel
ad2) existuju sluzby, ktore su vzdy spustane a udrziavane init procesom (autorestart), napr. getty
ad3) na CentOS6 nie je mozne nakonfigurovat ziaden autorespawn v /etc/inittab
ad4) odporucam precitat dokumentaciu k initu v CentOS 6 [0]
No... ne že bych měl rád qmail, hlavně kvůli podivnému licencování, ale zrovna ten bych se asi styděl v diskusi o SystemD zmiňovat... spousta na sobě v podstatě nezávisejících modulů, každý z nich se dá nahradit čím chceš, do každé části zpracování emailů se dá cokoliv vložit, cokoliv se dá přeskočit, celý se to tváří velmi transparentně... To je přesný opak SystemD a tak to podle mě má vypadat a na správu i debug je to velmi jednoduché.
Zajímalo by mne, zda stejně přistupujete k zálohování nebo RAIDu. Zdravé disky přece také neodcházejí, zdravé programy a zdraví uživatelé nezpůsobují ztrátu dat.
Naprosto nesmyslné srovnání. HW pochopitelně odchází, protože fyzické vlivy v tomto vesmíru nelze odstínit. Uživatelé jsou jen lidé, tedy značně nedokonalí, takže občas smažou něco co se mazat nemělo. Apod.
Pokud proces spadne, tak to má vždy jasnou příčinu (sice ne vždy jasně odhalitelnou). V praxi je to tak, že se během vývoje a testování program testuje na všechny (dosud) známé chyby a pokud spadne, jak je to důvod hledání dosud neznámého vlivu. Není tedy možné jej prostě spustit znovu.
A v praxi (alespoň mé) procesy jen tak nepadají. Opravdu jsem zvyklý na to (asi jsem výjimka), že proces, který se spustí při bootu běží po libovolně dlouho dobu běhu toho stroje.
Také by mne zajímalo, co je špatného na procesu, který byl odstřelen OOM killerem.
To je otázka na další zkoumání. Možná na něm není špatného nic a jen si OOMK vybral špatný cíl. V každém případě je nutné identifikovat příčinu nedostatku paměti (a potvrdit, že paměti bylo skutečně nedostatek a nezbláznil se jen OOMK) a tuto příčinu vyřešit. Nelze nechat OOMK střílet procesy na jedné straně, a nechat init systém tyto procesy stále dokola spouštět na straně druhé.
Mimochodem, přesně tohle byl první důvod, proč jsem si uvědomil, že SysVinit&spol. je špatně – protože „správce služeb“ hlásil, že služba je v pořádku, přitom příslušný proces vůbec neběžel. Takhle se zdravý správce služeb nechová.
Na jedné straně ok, na druhé straně já osobně jsem nikdy init a rc systém nebral jako zdroj autoritativní informace o stavu služeb už jen prostě z toho důvodu, jakým způsobem je to naimplementováno.
Navíc v praxi mě ani tak moc nezajímá co si o dané službě myslí správce služeb, ale to, zda to skutečně funguje. Tedy pokud se na portu 80 nedočkám odpovědi, tak je mi naprosto jedno, že si systemd myslí, že služba běží. Abych se od správce služeb dočkal autoritativní odpovědi, tak ten správce služeb musí mít naimplementovaný i monitoring toho, co daný proces má dělat.
Naprostý souhlas. Ještě bych doplnil, že pokud OOMK něco odstřelí, je to chyba buď poddimenzovaného serveru, nebo opět špatného procesu. V obou případech OOMK pouze reaguje na problém, který je potřeba řešit a prostý restart daného procesu není řešením, respektive může být dočasným řešením, ale nechat si na serveru běžet proces, který mi bezdůvodně požírá paměť, to je pro mě osobně zcela nepřijatelné. Minimálně to zmenšuje použitelnou cache a to je až na vyjímky vždy špatně.
Možná jsem divnej, ale to že serveru dojde paměť může podle mě znamenat asi milión věcí a minimálně půlka z nich mě děsí, proto rozhodně netoužím po tom, aby mi server sám nahazoval popadané služby, ať už za to může OOMK, nebo jakákoliv chyba procesu. Pokud je u něčeho dobré to jednou za čas restartovat, napíšu si to do cronu a nebudu doufat, že mi to občas shodí OOMK a nahodí systemd, protože mám v serveru nějakej nefunkční nepořádek.
Tak evidence vozidel neběžela déle, ztratila se data a nikoho to nějak výrazně netankovalo (teda až na řidiče, ale ti přece nikoho nezajímají).
Nebo systémy úřadů práce ;-).
Neznám příčiny těchto výpadků (což by bylo dobré zveřejnit, aby se z toho dalo poučit), ale znám příčiny jiných výpadků (ve státní správě).
Ty výpadky byly způsobeny požadavkem (od někoho, kdo neví který bije, ale má "hodnost") na nulovou nedostupnost služby. Takže místo toho, aby se systém prostě na pár hodin odstavil a udělala se standardní údržba, tak se učinil pokus o "bezvýpadkové řešení", které vedlo k několikadennímu problému. ;-)
Pochopitelně na skutečné HA řešení zase nikdo nedá peníze. Takže se oficiálně jede bez výpadku, neoficiálně se to bastlí tak dlouho, dokud to nespadne.
No vlastně je to podobné jako kauza VW a spotřeba TV. Někdo nařídí nižší spotřebu (technologicky jen těžko dosažitelnou), nenechá si to vymluvit, no tak se to prostě zařídí tak, aby to v testech dopadlo OK. Jak prosté.
Pochopitelně na skutečné HA řešení zase nikdo nedá peníze. Takže se oficiálně jede bez výpadku, neoficiálně se to bastlí tak dlouho, dokud to nespadne.
Jenže tohle je jádro toho problému. Na poptávku řešení s HA nabídne určitá firma řešení za cenu, za kterou to nelze dodat, a tak to pak bastlí. Peníze by přitom na pořádné řešení byly, očekávaná cena byla pětinásobná oproti vysoutěžené.
kauza VW
Zajímavé, že u kamionů se stejnými předpisy problém nebyl, prostě se kromě nafty tankuje i AdBlue.
spotřeba TV
U toho si nejsem jistý, ale ani to IMO není technologicky nějak náročné. Je to dražší, ale ne o tolik. Ale je to dražší, a to je celý problém.
Jenže tohle je jádro toho problému. Na poptávku řešení s HA nabídne určitá firma řešení za cenu, za kterou to nelze dodat, a tak to pak bastlí. Peníze by přitom na pořádné řešení byly, očekávaná cena byla pětinásobná oproti vysoutěžené.
Ano, ale to je opět chyba toto zadatele (veřejné zakázky) nebo obecně objednatele. Nikdo ho nenutí převzít a zaplatit za dílo, které neodpovídá zadání. A dokonce ho ani nic nenutí (v případě státní správy) si vybrat nejlevnější dílo (navíc pokud nevyhovuje zadání, tak ho mohou rovnou vyřadit).
Nebo, pokud už to ta firma s 5x nižší cenou vyhrála, tak trvat na tom, že to prostě pojede ve smluveném režimu a za každý výpadek tvrdě vymáhat smluví pokuty. Třeba až do bankrotu té firmy. Alespoň by se pročistil trh.
Ne, ono se to dělá tak, že papírově se jede na 100% dostupnost, prakticky se to bastlí co to jde a v případě problému se to nějak zahladí a jede se dál.
Nechci to moc roztahovat jinam, ale kauza VW je trochu jiná. Trucky s normami emisí takové problémy nemají. Je to tím že jejich motor pracuje v trochu jiném pracovním bodě a že si vezou s sebou krabici asi o velikosti 0.5x0.5x1m, kde proběhne čištění emisí, jak katalyticky tak na pevné částice. Podobný výkon jako do trucku (200-300kW) narvou do osobáku, musí ho tam dostat přes turba a nemají kam dát dostatečně velkou krabici, která by diesel výfuk vyčistila. A dělají to proto, že diesel při vyšší teplotě ve válci má větší účinnost (hranice jsou Carnottovým cyklem) a tím pádem mají nižší spotřebu než ekvivalentní benzín. Ale právě proto, že ve válci je vyšší teplota tak tam vzniknou oxidy dusíku. A pro mne trvání na emisních limitech je správně. Aby je splnili auto tím třeba ztěžkne o 100kg, podlaha v kufru bude o 15cm výš a je na zákazníkovi, jestli tohle mu stojí za nižší spotřebu než srovnatelný benzinový model, který díky nižší teplotě ve válci má sice horší účinnost, ale tolik NOx nevyrobí a jednodušeji se vyčistí. Nikde jinde nejezdí tolik dieselů v osobácích jako v Evropě, VW se je pokusil dostat do Ameriky a zjistil že tam ty normy ojebávat nejde, jako v evropě, kde se deklaruje v jakém cyklu se měření provádí, ale to nemusí nic vypovídat o tom, jak to je v reálném provozu. A klidně to může znamenat, že diesely z osobáku zmiznou, protože se emise v rozumné ceně vyčistit nedají.
Pises hezky, ale naprosty kraviny. V US se nafta prodava cim dal vic, ale historicky je tam podil benzinu pochopitelne nekde uplne jinde predevsim proto, ze v US neni k cene benzinu 100% prirazka. Takze tam litr stoji cca 15Kc. Pri prepoctu na minimalni plat => cca /5 je to stejny, jako kdyby u nas stal litr 3Kc Nafta stoji o cca 1/4 vic, prave proto, ze na ni nikdo nejezdi, a ten rozdil ve spotrebe je pro ne smesnej.
V EU se ti rozdil na spotrebe vs vyssi cena nafty zacne projevovat nekde kolem 30-50kkm. Kdo najezdi 5k/rok si naftu kupovat stejne nebude.
A je naprosto smesny resit emise, kdyz JEDINA kontenjnerova lod (a jsou jich tisice) vygeneruje tolik emisi, jako vsechny osobaky na planete. Pricemz emise tech lodi nikdo neresi, a to spalujou mnohem horsi svinstvo - tezkej topnej olej, defakto spis asfalt.
"JEDINA kontenjnerova lod (a jsou jich tisice) vygeneruje tolik emisi, jako vsechny osobaky na planete"
Zase siris bludy. Zaprve se to rikalo o patnacti nebo sestnacti a ne o jedine lodi. Zadruhe se to tykalo jenom oxidu siry.
https://www.quora.com/Is-it-true-that-the-15-biggest-ships-in-the-world-produce-more-pollution-than-all-the-cars
Jaká vyšší cena nafty? V ČR stojí nafta aktuálně 28,90 Kč / litr, benzín 29,61 Kč / litr. V Německu stojí nafta 1,15 €, benzín 1,40 €, ve Francii 1,15 € nafta, 1,30 € benzín. Jediný dvě země, kde je nafta dražší než benzín, jsou Švédsko a Velká Británie. Když se podíváš na historii cen, tak nafta byla dražší jen výjimečně.
Ty emise kontejnerových lodí jsou velmi zavádějící. Zaprvé se to týká jen 15 největších dohromady, ne jedné z tisíce, zadruhé jde jen o oxidy síry a zatřetí je hlavní důvod to, že toho vezou výrazně víc na výrazně větší vzdálenosti než všechna auta dohromady. Lodě mají v poměru na převezený náklad a vzdálenost nejnižší emise ze všech způsobů dopravy využívajících spalovací motory.
Ty neumis tatare cist? Rec je o cene v US a tam je nafta o 25% drazsi nez benzin.
Ty emise nejsou zavadejici ani trochu, je uplne jedno co kolik ceho vozi, podstatny je, kolik svinstva to generuje, a podil automobilovy dopravy na celkovych emisich je proste zcela smesnej. Jedina fabrika vpohode zastoupi desitky tisic aut.
Ano a asi i rychleji, protože vynechám kafe, abych nebudil manželku a děti. Jinak na kritických věcech monitoring volá několika lidem, snad se pokaždé najde někdo, kdo nebude na šrot, nebo mně aspoň vzbudí kýblem vody a položí mi ruce na klávesnici (potom se může čas opravy protáhnout i na 20 minut).
A neděsí vás, že dojde paměť, OOM killer zabije jiný proces, takže ta vaše děsivá aplikace poběží dál, ale nikoli proto, že ji správce služeb znovu nastartoval, ale proto, že nespadla?
Mně teda aplikace, která občas spadne, připadá jako sen správce v porovnání s aplikací, která něco potajmu poškozuje, po restartu v tom pokračuje, a vy spoléháte jenom na to, že ta aplikace stihne včas spadnout.
Pokud u nějaké aplikace považujete za nebezpečné, když běží, nestartoval bych ji ani jednou.
Ty fyzické vlivy mají dopad i na ten software. Pokud proces spadne, je to důvod pro hledání dosud neznámého vlivu – což ale v žádném případě neznamená, že během toho hledání musí být ten proces zastaven. V software prostě chyby existují, a je nesmysl tvářit se, že tam nejsou.
Není tedy možné jej prostě spustit znovu.
Tolik teorie. Praxe ukazuje, že to možné je, a že to v drtivé většině případů je to nejlepší, co můžete udělat.
A v praxi (alespoň mé) procesy jen tak nepadají. Opravdu jsem zvyklý na to (asi jsem výjimka), že proces, který se spustí při bootu běží po libovolně dlouho dobu běhu toho stroje.
Má praxe je stejná. Akorát jsem si vědom toho, že proces spadnout může. Taky už jsem zažil pár případů, kdy ten proces opravdu spadl – a nemělo smysl čekat na to, až třeba Oracle tu chybu opraví, nebo čekat, až najdeme chybu v dostupném zdrojáku a opravíme ji.
V každém případě je nutné identifikovat příčinu nedostatku paměti (a potvrdit, že paměti bylo skutečně nedostatek a nezbláznil se jen OOMK) a tuto příčinu vyřešit.
Jistě. Ale není žádný důvod, proč by měla být během toho hledání a řešení nějaká služba vypnutá.
já osobně jsem nikdy init a rc systém nebral jako zdroj autoritativní informace o stavu služeb už jen prostě z toho důvodu, jakým způsobem je to naimplementováno.
Pro mne osobně je správce služeb, který neví, v jakém stavu ty služby jsou, úplně k ničemu.
Navíc v praxi mě ani tak moc nezajímá co si o dané službě myslí správce služeb, ale to, zda to skutečně funguje.
Jistě. Jenže základním předpokladem toho, aby to skutečně fungovalo, je to, že příslušný proces běží. Pokud proces běží ale třeba poskytuje špatná data, nepůjde to vyřešit restartem procesu, tam se na to opravdu musí (dnes) podívat člověk a rozhodnout, co s tím. Ale pokud je problém jenom v tom, že proces neběží, v drtivé většině případů není nad čím spekulovat a jako první je potřeba ten proces znovu nastartovat. No a pro to minimum služeb, se kterými se takhle zacházet nemá, se holt systemd instruuje, že je nemá automaticky restartovat.
Abych se od správce služeb dočkal autoritativní odpovědi, tak ten správce služeb musí mít naimplementovaný i monitoring toho, co daný proces má dělat.
Tak tomu říkejme třeba správce procesů, pokud správce služeb chcete zachovat pro řešení, které monitoruje i kvalitu poskytovaných služeb.
což ale v žádném případě neznamená, že během toho hledání musí být ten proces zastaven
Tenhle thread začal "funguje restart při pádu procesu". Nikdo neříká, že když init nedisponuje funkcí restart při pádu, tak ta služba bude na věky věků vypnutá.
Naopak, přijde správce, vyhodnotí situaci a podle svého rozhodnutí sjedná nápravu. Třeba zrovna přidá tomu stroji paměť, nebo sníží konfiguraci, nebo vypne jiný proces, který zrovna nemá takovou prioritu. Nebo prostě udělá cokoliv, co známe z praxe.
Takže ano, proces nemusí být zastaven, ale současně také nemusí být automaticky restartován správcem služeb.
Taky už jsem zažil pár případů, kdy ten proces opravdu spadl – a nemělo smysl čekat na to, až třeba Oracle tu chybu opraví, nebo čekat, až najdeme chybu v dostupném zdrojáku a opravíme ji.
Jako tohle už je na rozhodnutí každé odpovědné osoby. Pochopitelně vím, že existují i hůře napsané programy, jenže takové já na svém serveru pokud možno nemám. Dá se to říct i naopak, pokud proces nevydrží běžet x set dnů v kuse, tak není hodný běhu v mé správě.
A tohle je ten důvod, proč je mi autorestart v systemd tak proti srsti. Místo toho, aby byla snaha o co nejstabilnější programy, tak se to prostě dá na autorestart a je to. Ano, spárce služeb není vychovatel, jenže potom se za pár let nedivme, že průměrný uptime služby bude několik minut, protože sere pes na nějakou stabilitu. A vidím to u vývojářů v jistém jazyce, kde jsou přesně takový správci procesů.
Tak tomu říkejme třeba správce procesů, pokud správce služeb chcete zachovat pro řešení, které monitoruje i kvalitu poskytovaných služeb.
No, takže to vlastně není vůbec o tom, zda init + rc, nebo daemontools, monit nebo systemd je špatný, ale prostě je to o potřebách. Vy evidentně potřebujete něco, co vám sice řekne, že proces dané služby běží, ale už nepotřebujete informaci o tom, jak dobře to běží. Někdo to potřebuje, tak nasadí třeba monit (která umí monitorovat i zdraví služby a současně ji i restartovat). Někdo (třeba já) od init + rc očekává jednorázové spuštění a monitoring zdraví si pořeší jinak.
Nevím tedy, proč by v OS měl být zrovna systemd, který řeší první část (autoritativně prozradí stav procesu), ale už ho nezajímá jak dobře to funguje. Když už, tak i rovnou s monitoringem zdraví, ne? (monit a spol.)
Naopak, přijde správce, vyhodnotí situaci a podle svého rozhodnutí sjedná nápravu. Třeba zrovna přidá tomu stroji paměť, nebo sníží konfiguraci, nebo vypne jiný proces, který zrovna nemá takovou prioritu.
A k čemu je dobré, že ta aplikace bude vypnutá, než přijde správce?
Nebo prostě udělá cokoliv, co známe z praxe.
Obvykle tu aplikaci znova zapne.
současně také nemusí být automaticky restartován správcem služeb
Nemusí, ale může. V případě moderních správců služeb. V případě SysVinit také může, jenže skripty, které se používají kolem SysVinit, už to neumožňují.
Místo toho, aby byla snaha o co nejstabilnější programy, tak se to prostě dá na autorestart a je to.
Protože o co nejstabilnější programy se musí snažit někdo jiný, než autoři a uživatelé systemd. Systemd holt není určen pro nějaké ideální prostředí, ale pro nasazení v praxi, kde se holt občas program může nečekaně ukončit, a nemusí to být ani chyba jeho autorů.
Je to podobné, jako přístup Linuse k opravám chyb, které by rozbíjely uživatelský prostor. Linux takové změny nepřipustí, přestože je to zjevná chyba a chyba nějakého programu v uživatelském prostoru. Linus ale chápe, že kernel prostě musí žít s těmi programy v uživatelském prostoru, které tady dnes máme.
Vy evidentně potřebujete něco, co vám sice řekne, že proces dané služby běží, ale už nepotřebujete informaci o tom, jak dobře to běží.
Tu informaci potřebuju, ale od jiného nástroje. Který ověřuje například i to, zda je ta služba dostupná z nějakého bodu sítě. A když není, znamená to, že musím já začít řešit, co se děje. Pokud je ale služba nedostupná z toho důvodu, že neběží její proces, je první krok, který je potřeba udělat, jasný, a není k němu potřeba lidský zásah.
Ostatně pokud vám všechny služby běží od startu počítače, nepotřebujete vůbec žádný správce služeb. Přece ty služby můžete nastartovat ručně.
Nevím tedy, proč by v OS měl být zrovna systemd, který řeší první část (autoritativně prozradí stav procesu), ale už ho nezajímá jak dobře to funguje. Když už, tak i rovnou s monitoringem zdraví, ne? (monit a spol.)
Právě proto, že správa stavů procesu je jedna úloha, na kterou je dobré mít jeden nástroj. Monitorování zdraví služby je jiná úloha, podle principu KISS je dobré mít na to jiný nástroj, ne to splácat dohromady s tím prvním.
A k čemu je dobré, že ta aplikace bude vypnutá, než přijde správce?
Bez komentáře. Bylo to tu uvedeno několikrát.
Obvykle tu aplikaci znova zapne.
Pokud jsou k tomu vhodné podmínky, pokud nejsou (což nejsou, protože jinak by ta služba nespadla), tak ty podmínky nejprve zvhodní a potom službu může zapnout.
Systemd holt není určen pro nějaké ideální prostředí
Což je dost zvláštní, protože jak plyne z praxe, tak v neideálním prostředí zase nefunguje především ten systemd.
Tu informaci potřebuju, ale od jiného nástroje.
Aha, tak na zjištění zdraví služby jiný nástroj nevadí, ale na zjištění, zda běží proces služby jiný nástroj použít nelze? Dva nástroje (třeba service a ps) je nutno spojit, ale třetí nástroj (monitoring) už ne?
Ostatně pokud vám všechny služby běží od startu počítače, nepotřebujete vůbec žádný správce služeb. Přece ty služby můžete nastartovat ručně.
Ano. Ne ručně (tam není vidět záměr, že tyto procesy mají běžet od bootu), ale do nějaké konfigurace, která je procházena jednou při bootu.
Právě proto, že správa stavů procesu je jedna úloha, na kterou je dobré mít jeden nástroj.
Správa stavu procesu není atom a lze jej dál dělit. Nevím, proč jste sloučil zrovna start + zjištění stavu procesu do jednoho celku, ale monitoring už tam zrovna nepatří.
Bez komentáře. Bylo to tu uvedeno několikrát.
Několikrát tu bylo uvedeno, že to není k ničemu dobré.
Pokud jsou k tomu vhodné podmínky, pokud nejsou (což nejsou, protože jinak by ta služba nespadla), tak ty podmínky nejprve zvhodní a potom službu může zapnout.
V tom případě ty podmínky ale musíte ověřovat před každým startem služby, tedy třeba i po restartu počítače. Pak ale nepotřebujete žádného správce služeb – prostě administrátor nastartuje systém, přihlásí se do konzole, ověří podmínky a ručně nastartuje ty služby, které mají podmínky splněné.
Což je dost zvláštní, protože jak plyne z praxe, tak v neideálním prostředí zase nefunguje především ten systemd.
To plyne z té praxe, kde jsou programy, které se nikdy nemohou neočekávaně ukončit?
Aha, tak na zjištění zdraví služby jiný nástroj nevadí, ale na zjištění, zda běží proces služby jiný nástroj použít nelze? Dva nástroje (třeba service a ps) je nutno spojit, ale třetí nástroj (monitoring) už ne?
Jaké dva nástroje? Jeden nástroj se správce procesů, který se samozřejmě stará o start procesů, zastavení procesů, výpis běžících procesů atd. Samozřejmě, že se to dá dělat i „ručně“, systemd nedělá nic, co by dříve dělat nešlo. Akorát to systemd dělá jednotným způsobem, takže si nemusí každý psát podobné nástroje od začátku.
V tom případě ty podmínky ale musíte ověřovat před každým startem služby
Samozřejmě. Známé podmínky. Testovatelné podmínky. O tom jsem už psal, snad to není potřeba furt opakovat.
Pokud ale služba spadne, tak evidentně nastala situace neznámá nebo neošetřená. Kdyby byla známá, tak to nespadne.
To plyne z té praxe, kde jsou programy, které se nikdy nemohou neočekávaně ukončit?
Ne, to plyne z produkce. Tam systemd ještě hodně dlouho nasazovat nebudu. Jak jsem psal, tak systemd zatím testuji na soukromých serverech. Ne všechna prostředí jsou stejná, třeba na vývoji mám procesy, co i občas spadnou a náležitě se potom opravují a testují, před vstupem na produkci.
Jaké dva nástroje?
třeba service a ps
Jeden nástroj se správce procesů, který se samozřejmě stará o start procesů, zastavení procesů, výpis běžících procesů atd.
Samozřejmě? Tento nástroj je zcela evidentně nadstavba nad něčím jako je spouštění procesů (nemyslím obecně fork a exec, ale /cesta/k/binárce v shellu), potom kill (pokud se proces neukončí sám na nějaké volání jeho api, signál TERM je ostatně takových vstupem, na který může proces sám vhodně zareagovat a ukončit se) a potom ps nebo obecně výpis procesů.
Všechno, co je nad tím (což vámi definovaný nástroj na: "start procesů, zastavení procesů, výpis běžících procesů" evidentně je) je nástavba nad těmito primitivy OS. Potom je otázka, proč by ten nástroj měl zahrnovat zrovna toto a ne něco navíc nebo něco namíň.
Akorát to systemd dělá jednotným způsobem, takže si nemusí každý psát podobné nástroje od začátku.
Systemd to dělá jen jedním konkrétním způsobem z mnoha.
Já si osobně myslím, že žádné podmínky při startu systému neověřujete a prostě necháte ty služby automaticky nastartovat. Což je podle mne to samé, jako když se ta služba nastartuje kdykoli později, třeba po pádu. Jak už jsem psal – to, že aplikace spadne, může být chyba té aplikace. Ale pokud je špatné aplikaci nastartovat, je to daleko horší chyba.
Ale hlavně – automatický start služby po ukončení procesu je možnost, ne povinnost. Pokud se vám to nelíbí, nepoužívejte to – nikdo vám to nenutí.
Ne všechna prostředí jsou stejná, třeba na vývoji mám procesy, co i občas spadnou a náležitě se potom opravují a testují, před vstupem na produkci.
A v čem je přínos toho, že když ten proces spadne, musí k tomu někdo přijít a znovu ho nastartovat?
Systemd to dělá jen jedním konkrétním způsobem z mnoha.
Což je v pořádku. Pokud to chce někdo dělat jiným způsobem, použije jiný nástroj.
Start služby po restartu celého systému je ale zcela jiná záležitost. Podobnost se dá najít pouze v případě, že se systém restartuje z důvodu chyby. Očekávané chování je, že po restartu systému naběhne vše, co naběhnout má. Pokud nějaká služba po restartu nenaběhne, je to chyba a je třeba ji řešit. Snaha službu nahazovat periodicky je opět blbost.
Přínos manuálního nahození je třeba už jen v tom, že se někdo musí přihlásit a pokud je alespoň trochu kompetentní, před opětovným nahozením služby koukne do logů, kde se třeba může dozvědět, co a proč se stalo a tento stav do budoucna ošetřit.
V pořádku by bylo, kdyby byla možnost si vybrat, jestli chci systemd používat, nebo nechci. Stav, kdy mi v systému běží zbytečný systemd, kterého se nemůžu zbavit, protože mi to distribuce standartní cestou neumožňuje a k tomu spousta věcí pouštěná vlastním způsobem bez systemd je úchylárna. I když v jistých případech asi stejně nakonec nic jinýho nezbyde.
Podobnost se dá najít pouze v případě, že se systém restartuje z důvodu chyby.
A to má nějaký správce stálou službu, a jakmile dostane varování o nějakém neplánovaném restartu, který mohl být způsoben chybou, má pár vteřin na to, aby zabránil klasickému startu systému?
Snaha službu nahazovat periodicky je opět blbost.
Tenhle axiom už jsem slyšel několikrát, ale já na něj nevěřím.
Očekávané chování je, že po restartu systému naběhne vše, co naběhnout má.
Já očekávám chování, že běží vše, co běžet má. Start systému nepovažuju za tak výjimečný okamžik, aby bylo důležité, že se služba spustí po startu systému, ale dál už bylo jedno, zda běží nebo ne.
Stav, kdy mi v systému běží zbytečný systemd, kterého se nemůžu zbavit, protože mi to distribuce standartní cestou neumožňuje
Což je ale problém té distribuce, ne systemd. A taky je dobré se ptát, proč to ta distribuce tak dělá. Jestli to není třeba proto, že díky tomu má snadno dostupné některé služby, které by si jinak musela implementovat pracně sama.
Můžu vám prozradit, jak to bude. Ty distribuce na to budou používat systemd do té doby, dokud budou jeho odpůrci jenom brečet v diskusích, místo toho aby sedli, a ty služby, které poskytuje systemd, naimplementovali po svém a stejně dobře nebo lépe, než to dělá systemd. Podle toho, co čtu v diskusích, by neměl být problém naprogramovat to lépe, než jak to dělají neschopní autoři špatného systemd.
Axiom? Snad pokaždé, když jsem podobné řešení použil to byl důsledek mojí lenosti udělat něco pořádně. A nejednou se mi to vymstilo tím, že se něco zahltilo (cpu, pamět, disk...).
Řekl bych, že není zas tak moc lidí, co považuje autory systemd za neschopné, většinou je lidi označují jinými negativy. Třeba arogantní. A jak už také nejednou zaznělo, problém není ani tak v tom co systemd, řeší, ale jak to řeší.
Já sám chovám bláhovou naději, že současný stav je takový přechodový. Asi jako když se přecvakne vypínač, tak to taky na chvíli udělá pěkný chaos. A snad se to časem ustálí na nějakém rozumném stavu.
Snad pokaždé, když jsem podobné řešení použil to byl důsledek mojí lenosti udělat něco pořádně.
To je váš problém.
A jak už také nejednou zaznělo, problém není ani tak v tom co systemd, řeší, ale jak to řeší.
Nikomu nic nebrání v tom udělat to lépe. Evidentně je tu velká poptávka po tom tohle řešit, tak proč všichni ti chytráci jenom nadávají v diskusích a neměli lepší řešení napsané už dávno před systemd?
Já sám chovám bláhovou naději, že současný stav je takový přechodový.
Samozřejmě že je. Systemd se nevyvíjí jako akademický projekt, který by se budoval někde odděleně od reálného světa, po několikanásobném překročení všech možných i nemožných termínů by se konečně prezentoval jako dokonalé veledílo, aby se zjistilo, že je v praxi úplně k ničemu. Systemd se naopak snaží dodávat funkcionalitu co nejdřív, aby se mohla používat a podle reálného použití přizpůsobovat. No a evidentně už dnes nabízí spoustu věcí, po kterých ostatní rádi sáhnou, i když to není dokonalé. Takže je jasné, že systemd jde správným směrem, že je o něj zájem, a tedy že to bude směřovat k tomu „rozumnému stavu“.
Nikomu nic nebrání v tom udělat to lépe. Evidentně je tu velká poptávka po tom tohle řešit, tak proč všichni ti chytráci jenom nadávají v diskusích a neměli lepší řešení napsané už dávno před systemd?
Ehm?
Ono to lépe uděláno bylo. Potom někdo přišel se systemd, nějak se to dostalo do (skoro) všech (použitelných) dister. A je čím dál větší problém to odpárat (takže keci: tak to nepoužívejte, jsou dost mimo, protože je zaplevelený skoro celý ekosystém). A admini si stěžují. Právem a na základě zkušeností.
A potom se někdo zeptá proč se to neudělalo lépe? Jako vážně?
vývoj systemd
Na vývoji systemd je především vidět, že jeho vývojáři nemaji ani páru o správě serverů.
A jestli si mám zavěštit jak to se systemd dopadne, tak to dopadne stejně jako s Pulse Audio. Na počátku katastrofa, která de facto na pár let rozbila zvuk na linuxu. Postupně (ano, jak jsi psal, dodávání funkcionality co nejdřív) se to dostalo do stavu, který jakš takš funguje. Akorát člověk po tom nesmí moc chtít a hlavně se neodchylovat od defaultu.
A přesně takhle dopadne systemd. V nějakém průměru bude průměrně fungovat. Hlavně po tom nic nechtějte.
> nějak se to dostalo
Nenapadlo te, ze to tam dali lide, kteri ta distra udrzuji a maji trochu prehled o tom, co delaji?
Nevim, jaky mas ty vztah ke spravcum sveho distra, ale ja tem v Archu docela dost (prestoze pochopitelne ne absolutne) duveruji. Jak jejich dobrym umyslum, tak technicke kompetenci.
Nenapadlo te, ze to tam dali lide, kteri ta distra udrzuji a maji trochu prehled o tom, co delaji?
A vůbec kolem toho nebyla kontroverze, že ne.
V Debianu se to prosadilo hlasem navíc (na což má jistě předseda právo, ale myslím si, že na tak důležité změně se měla hledat širší dohoda a ne zanechávat pachuť).
S lidmi z jiného distra chodím na pivko, tam se o systemd nelze bavit vůbec (dokonce mi jeden z nich emailem poslal odpověď: toto není diskuse, když jsem reagoval na jeho předchozí email se success story systemd). Shodou okolností stejného zaměstnavatele má i Lennart. Takže tam není o systemd diskuse.
"A vůbec kolem toho nebyla kontroverze, že ne."
A jak dopadla? Pokud si to navic matne pamatuji, tak lidi, co hazeli lopatou, byli celkem zajedno a kontroverze pochazela spis z jinych zdroju.
proste ve zkratce - verim spis nazoru tech lidi, kteri dali dohromady me oblibene distro nez trebas (bez urazky) tobe
verim spis nazoru tech lidi, kteri dali dohromady me oblibene distro nez trebas (bez urazky) tobe
V pohodě.
Mě je jen divné, že kdykoliv je diskuse i systemd, tak přijde někdo s názorem, že nechápe tu bublinu, vždyť mu na notebooku vše funguje. Mě taky na desktopu s Jessie a systemd vše funguje. Ale to je snad irelevantní.
Potom tu lidi (jako já) začnou řvát a nikdo nepřijde s protinázorem, jak je ten systemd na jeho produkčním serveru super, jak vše krásně běží a jaká je to bomba.
Ne, místo toho se na blogu od člověka, který rázně ukončil emailovou diskusi o systemd (s tím, že to není diskuse) najde článek, kde nastavuje max velikost journald na 256MB. Víte vůbec kolik je na produkčním serveru 256MB? To je asi tak pár hodin. Na co je pár hodin logů? To ten journald může rovnou vypnout.
Já jsem na svém soukromém servříku musel snížit velikost na 16GB, aby s tím šlo vůbec pracovat. I tak některé operace trvaly několik minut. Dodnes trvá výběr unity (journalctl -F _SYSTEMD_UNIT - což volá bash completion při stisku tab na journalctl -u #tab# asi dvě minuty). Toto má někdo nasazeno na produkčním serveru? Skutečně?
Kde jsou story typu: ty blbečku, tady si zapni superskrytý přepínač, který to milionkrát zrychluje a je to napsáno na první řádku v manu xy, nalej si tam 100GB logů a klidně se tím udav. Sem s tím.
Já si osobně myslím
No na to máte jistě právo. ;-) Víc nevím, co bych k tomu napsal a v podstatě si ani nemyslím, že jste to myslel vážně. O čem jiném je práce admina než o tom vytvářet vhodné podmínky pro běh poskytovaných služeb a reagovat na změny okolní?
A v čem je přínos toho, že když ten proces spadne, musí k tomu někdo přijít a znovu ho nastartovat?
Že se ten někdo podívá proč k tomu došlo? Že vyhodnotí závažnost situace a zváží další kroky? Že na základě této situace dospěje k lepšímu řešení celého problému?
O čem jiném je práce admina než o tom vytvářet vhodné podmínky pro běh poskytovaných služeb a reagovat na změny okolní?
Podle mne součástí těch vhodných podmínek je to, že budou zajištěné neustále, ne že to bude muset pokaždé dělat znovu ručně.
Že se ten někdo podívá proč k tomu došlo?
To lze ovšem udělat i tehdy, když ten proces běží.
Že vyhodnotí závažnost situace a zváží další kroky?
To lze ovšem udělat i tehdy, když ten proces běží.
Že na základě této situace dospěje k lepšímu řešení celého problému?
To lze ovšem udělat i tehdy, když ten proces běží.
Já tedy nevím, zda máte problém se střednědobou pamětí, ale opravdu nebudu do každého komentáře psát vše, co jsem napsal v diskusi doposud.
Podle mne součástí těch vhodných podmínek je to, že budou zajištěné neustále, ne že to bude muset pokaždé dělat znovu ručně.
Admin tady není od toho, aby zajišťoval pokaždé ty podmínky ručně (to v této diskusi ani nikdo nepsal). Admin je tady od toho, aby se poučil z mimořádné situace (která vedla k pádu služby), a upravil nastavení serveru tak, aby příště k pádu služby nedošlo.
Nemám problém se střednědobou pamětí, mám problém s tím, že jako důvody pro nenastartování aplikace uvádíte věci, které takovým důvodem nejsou.
Vy pořád dáváte rovnítko mezi chybu aplikace a pád procesu. Jenže žádné takové rovnítko neexistuje. Proces může vesele běžet dál a přitom vyrábět jednu chybu za druhou, stejně tak může aplikace spadnout, aniž by v ní došlo k jediné chybě. Takže odstavení aplikace v případě, že dělá nějakou závažnou chybu, musíte mít vyřešené bez ohledu na to, zda při tom spadne nebo nespadne. No a pak je zase zbytečné tu aplikaci držet vypnutou v případě pádu, protože kdyby ten pád způsobila nějaká závažná chyba, zastaví přece aplikaci ten monitoring chyb.
Upravit nastavení serveru tak, aby příště k pádu nedošlo, to je také dobrý vtip. Pokud třeba na serveru dojde ke kernel panic, má jako administrátor někde v /etc/kernel.conf
nastavit be.good=1
? Nebo má rovnou zastavit celý cluster, protože v tu chvíli neví, kde je chyba – může to být chyba v jádře, stejná na všech uzlech clusteru? Uživatele zatím pošle na dovolenou a začne debugovat jádro…
Mimochodem, třeba v zabezpečení na železnici (což je přeci jen trochu jiná úroveň požadované spolehlivosti, než nějaký webový server) platí, že s chybou se počítá, ale zařízení musí v případě chyby přejít vždy do bezpečnějšího stavu. Vztaženo zpátky na software – pořád je lepší, pokud se aplikace v případě nečekané chyby ukončí a spustí se znovu, než když se z té chyby špatně zotaví a začne skrytě páchat nějaké zlo (a administrátor je spokojený, protože nedošlo k žádnému pádu, takže musí být vše v pořádku).
Vy pořád dáváte rovnítko mezi chybu aplikace a pád procesu.
Nevšiml jsem si.
Proces může vesele běžet dál a přitom vyrábět jednu chybu za druhou
Ano, to zajisté může.
stejně tak může aplikace spadnout, aniž by v ní došlo k jediné chybě
Když nedošlo k chybě, tak proč tedy spadla? (A doufám, že příklad OOMK jsme již probrali.)
Takže odstavení aplikace v případě, že dělá nějakou závažnou chybu, musíte mít vyřešené bez ohledu na to, zda při tom spadne nebo nespadne.
No ano.
A? Co z toho přesně říká, že je nutné aplikaci znovu automaticky nastartovat? Mít více detekcí chyby (monitoring, sledování života procesů, sledování splnění podmínek pro běh) je přece přínosné. Proč bych měl vynechat zrovna indikátor "spadla služba"? To je ukazatel chyby jako kterýkoliv jiný.
Upravit nastavení serveru tak, aby příště k pádu nedošlo, to je také dobrý vtip. Pokud třeba na serveru dojde ke kernel panic, má jako administrátor někde v /etc/kernel.conf nastavit be.good=1?
Zkuste, třeba to pomůže. ;-) Ne, upravení nastavení servery znamená, že k těm N podmínkám, které se kontrolují při běhu služby, se po analýze nestandardní situace přidá podmínka N+1.
třeba v zabezpečení na železnici
Třeba v zabezpečení na železnici je to tak, že když software neví kudy kam, tak vyhlásí general stop a všechny vlaky na daném úseku automaticky zastaví. Určitě se nepokouší situaci nějak vyřešit, i když by to pro cestující všech ostatních vlaků bylo pohodlnější řešení.
Stejně jako v JE, když se neví co dál, tak se reaktor nouzově odstaví.
Vztaženo zpátky na software – pořád je lepší, pokud se aplikace v případě nečekané chyby ukončí a spustí se znovu, než když se z té chyby špatně zotaví a začne skrytě páchat nějaké zlo
Ano, určitě je lepší, když se software ukončí, než když software páchá zlo. Na tom se shodnem.
Když nedošlo k chybě, tak proč tedy spadla?
Třeba proto, aby té chybě předešla. Já jsem tady použil váš termín „spadla“, přesnější by bylo „ukončila se“.
Co z toho přesně říká, že je nutné aplikaci znovu automaticky nastartovat?
Tohle říká, že není žádný důvod tu službu znovu nenastartovat. No a protože požadavek byl, aby služba běžela, je logické, že po ukončení služby je nutné ji znovu nastartovat, aby ten požadavek byl splněn.
Proč bych měl vynechat zrovna indikátor "spadla služba"? To je ukazatel chyby jako kterýkoliv jiný.
Teď už jste si toho rovnítka všiml? Ale stejně to není pravda. Navíc to, že v aplikaci došlo k chybě, neznamená, že ta aplikace nemá běžet.
Ne, upravení nastavení servery znamená, že k těm N podmínkám, které se kontrolují při běhu služby, se po analýze nestandardní situace přidá podmínka N+1.
A během analýzy bude ten systém několik dnů stát. To budete mít radost, až vám v bance oznámí, že bohužel žádné transakce až do odvolání neprovádí, protože na jednom aplikačním serveru došlo k chybě, takže se nyní celý systém analyzuje a do vyřešení problému je odstaven.
Třeba v zabezpečení na železnici je to tak, že když software neví kudy kam, tak vyhlásí general stop a všechny vlaky na daném úseku automaticky zastaví.
Ne, tak to nefunguje. General stop je české specifikum, které zadává ručně výpravčí nebo dispečer, a zastaví jenom ty vlaky, které jsou zrovna na příjmu. Je to taková loterie, z pohledu zabezpečováků to vůbec není bezpečné a funguje to způsobem „aspoň to nic nezkazí“. Což se zrovna minulý týden nepodařilo, zemřel při tom strojvedoucí – z nějakého důvodu projel červené návěstidlo, výpravčí se mu nedovolal, použil general stop, jenže ani ten příslušná lokomotiva nezachytila. Výpravčí ještě stihnul zavolat do následující stanice, tam výpravčí rychle postavil předchozímu vlaku, aby tomu, co projel návěstidlo, stihnul ujet – jenže tenhle vlak general stop zachytil, takže moc daleko neujel.
Určitě se nepokouší situaci nějak vyřešit, i když by to pro cestující všech ostatních vlaků bylo pohodlnější řešení.
Ale snaží. Třeba když nejde z nějakého důvodu rozsvítit volno (třeba přepálené vlákno žárovky), rozsvítí se výstraha. Kdyby nešla rozsvítit výstraha, rozsvítí se červená.
Když nedošlo k chybě, tak proč tedy spadla?
Třeba proto, aby té chybě předešla. Já jsem tady použil váš termín „spadla“, přesnější by bylo „ukončila se“.
To nevíte. To si jen myslíte.
Co z toho přesně říká, že je nutné aplikaci znovu automaticky nastartovat?
Tohle říká, že není žádný důvod tu službu znovu nenastartovat. No a protože požadavek byl, aby služba běžela, je logické, že po ukončení služby je nutné ji znovu nastartovat, aby ten požadavek byl splněn.
Problém s během služby mi přijde jako dostačující důvod. Požadavek byl, aby služba běžela korektně. To nedělá, tak buzeruju admina.
Proč bych měl vynechat zrovna indikátor "spadla služba"? To je ukazatel chyby jako kterýkoliv jiný.
Teď už jste si toho rovnítka všiml? Ale stejně to není pravda. Navíc to, že v aplikaci došlo k chybě, neznamená, že ta aplikace nemá běžet.
Je to pravda. "spadla služba" prostě je chyba. A i kdybychom si nehráli na objektivitu, tak mnozí to za chybu považují.
Ne, upravení nastavení servery znamená, že k těm N podmínkám, které se kontrolují při běhu služby, se po analýze nestandardní situace přidá podmínka N+1.
A během analýzy bude ten systém několik dnů stát. To budete mít radost, až vám v bance oznámí, že bohužel žádné transakce až do odvolání neprovádí, protože na jednom aplikačním serveru došlo k chybě, takže se nyní celý systém analyzuje a do vyřešení problému je odstaven.
No, jiná možnost je, že by mě řekli, že mi pravidelně strhávají každý den litr, protože při platbě spadne služba, a ta se automaticky restartne. No, asi bych se dost hystericky smál.
A během analýzy bude ten systém několik dnů stát. To budete mít radost, až vám v bance oznámí, že bohužel žádné transakce až do odvolání neprovádí, protože na jednom aplikačním serveru došlo k chybě, takže se nyní celý systém analyzuje a do vyřešení problému je odstaven.
No to by byla lepší situace, než kdyby se banka tvářila, že je vše v pořádku a transakce by se v reálu ztrácely, duplikovaly apod. Opravdu je pro mě lepší, když autoritativní služba neběží, než aby běžela a vracela nesmysly.
Apropos banka. Dobrá trefa ;-). S bankou mám veselou příhodu z tohoto léta, kdy v internetovém bankovnictví (IB) byla vidět platba, která ale byla zrušená (příkazem do banky na pobočce) a pracovníci na pobočce to opravdu viděli zrušené.
Takže pracovníkům banky se vesele zobrazoval jiný stav než klientům IB. Prostě jim nefungovala synchronizace mezi ib a backendem v bance. Super stav, ne? V IB vidíte něco, v reálu se na účtu provede něco jiného. Teď může nastat diskuse na téma, který z těch dvou stavů je správný, protože všechny příkazy (ať na pobočce, tak v IB, byly bankou potvrzeny).
Nevím, jak dlouho jim to nefungovalo, ale těch několik týdnů, co jsem to řešil já, určitě.
Nebyla by to lepší situace. I kdyby banka měla problémy s nějakým malým počtem transakcí, pořád je pro všechny zúčastněné daleko lepší, když dojde k těmhle problémům, banka je napraví, omluví se za ně a kompenzuje je, než kdyby úplně zastavila svůj provoz. Navíc ztrácení nebo duplikování transakcí nemá žádnou souvislost s případným pádem serveru – je extrémně nepravděpodobné, že by nějaká chyba způsobila zduplikování transakce a následně pád aplikace. A jako prevence toho ztrácení či duplikování transakcí se používají kontroly, které jsou úplně mimo tu aplikaci.
To, že nefungovala synchronizace mezi IB a backendem je normální (neříkám, že správné, ale realistické). Banky měly nějaké backendy, k tomu se pak dolepovalo IB, které se z pohledu backendu chovalo jenom jako trochu divný úředník u přepážky. První, kdo měl internetové bankovnictví opravdu provázané s backendem, byla Expandia banka. Nové banky už to asi budou mít také tak, ale staré banky nebudou ten svůj původní backend zahazovat jenom kvůli nějakému IB. RB měla dost problémů po pohlcení eBanky při přechodu na jejich modernější systém – a to ten systém eBanky (nástupce Expandia banky) leta fungoval.
Ten problém se synchronizací je samozřejmě špatně, ale je to pořád mnohem lepší, než kdyby na těch několik týdnů zastavili veškeré bankovní operace s tím, že se panu Crhonkovi něco špatně zobrazuje v IB.
V reálném světě holt chyby nastávají a je potřeba porovnávat, co je menší problém a co větší. A je potřeba s chybama počítat – k těm největším průšvihům vždycky dochází právě v těch případech „to nemůže selhat“. Ve Fukušimě taky nemohla nastat situace, že bude potřeba odstavit reaktory a nepůjde proud.
No upřímně řečeno, ti lidi v bance reagovali dost podobně jako pan Jirsák. V podstatě je otravovalo, že musejí řešit nějaký problém, který se jich vlastně vůbec netýká a vlastně je to jedno. Jedna zaměstnankyně mi dokonce řekla: já pro vás víc nemůžu udělat (na můj dotaz, zda se ty platby teda provedou nebo ne). Následně teda (doufám) měla velmi nepříjemný rozhovor se svým nadřízeným. Alespoň to mi tvrdil.
To mě na tom zarazilo nejvíc. To, že vypadne nějaký systém, ano, stane se. To, že to není monitorováno mě děsí. Ale ten přístup je příčina toho, proč ten sync nefunguje. Protože sere pes.
... KB/CSOB .... nechaji te podepsat, jak ses povinen kontrolovat certifikaty a vi buh co vsechno. Pak vlezes na web, a browser ti halasne hlasa, ze cert je 3 dny expirovanej. Tak z tebe jeste zacnou delat debila, ze mas neco spatne a kdesi cosi, ze mas smazat cache .... a kdyz jim rekne, ze to vsechno si uz udelal nejmin 5x s peti podobnejma na druhy strane ... tak sou vpreli ... a prepojej te kamsi ... kde sedi zjevne "kompetneni" ITk, kterej z tebe taky zacne delat debila, a po 1/2 hodine dalsiho dohadovani, kdy konecne ten browser teda pusti a de se tam podivat ... najednou zmlkne, a rekne, ze to mas zkusit za 1/2 hodiny.
Ve druhym pripade, kterej je z letosniho leta, ti na hotline sklidem sdelej, ze mas v nastaveni javy vypnout kontrolu certifikatu, protoze ho maj prosychr ne expirovanej, ale rovnou revokovanej. A pak ti k tomu jeste reknou, ze ofiko ta jejich appka podporuje 3 roky starou javu. A ze to (ten cert) ... mozna ... opravej za tejden.
Jo, muzes ten tejden treba nezaplatit DPH nebo socialni/zdravotni a pak banku zalovat a vymahat z ni flastry ktery zaplatis statu, pripadne penale z prodleni z faktur ...
"a prepojej te kamsi"
Ano, to taky bylo velmi vtipné. Napsal jsem bugreport, přišla automatická odpověď "přijato helpdeskem", tam pochopili, že to asi nevyřeší, tak přišla odpověď "konzultujeme s odborným útvarem" a následně "k prověření řešitelské skupině".
Následně (kdy už jsem věděl výsledek, včetně detailnějšího popisu problému, postranním kanálem), přišel email: "už je to v pořádku, zkontrolujte" (pochopitelně bez detailů).
Jsem velmi rád, že jsem svým problémem zaměstnal tisíce lidí, které platím svým poplatkem za vedení papírových ubrousků na toaletách (nebo co to chodí v tom výpise).
Nemám tam účet zase tak dlouho (11 let ?), ale pamatuji si doby, kdy se všechny problémy vyřešili na pobočce. Dneska je na pobočce 5 lidí i s vrátným, nic nevědí, nic nemohou.
A perlička na konec, za tu dobu mám asi šestého osobního bankéře, pokaždé si mě pozvou do banky na takovéto seznámení s klientem (což má evokovat asi to, že odteď až do smrti se bude starat o všechny mé problémy), které je současně také setkáním posledním, protože příště tam bude zase někdo jiný.
Před rokem to ještě okořenili tvrzením, že od teď se budou _VŠECHNY_ věci řešit na jednom místě a to právě u mého osobního bankéře. Fajn, tak jsem tam naběhl, pořešili jsme pár formalit a bankéř se formálně zeptal: "máte ještě něco k řešení?" Mám no, změnu na účtu SVJ. Aha, tak to musíte na přepážku Q. Dobře, dál mám něco s hypotékou (u stejné společnosti). Aha tak to musíte do patra za kolegyní. No fajn, takže pojištění (u stejné společnosti). Hmm to tady neřešíme.
Prostě vše na jednom místě s jedním stabilním bankéřem. ;-) Je to smutné.
…banka je napraví, omluví se za ně a kompenzuje je…
No upřímně řečeno, ti lidi v bance reagovali dost podobně jako pan Jirsák.
Výborně, předpokládám, že jste byl nakonec spokojen s tím, že banka dokáže problém dobře vyřešit.
Ale ten přístup je příčina toho, proč ten sync nefunguje.
Jsem si jist, že přístup té poslední úřednice na přepážce nemá žádný vliv na to, jak funguje informační systém. Ano, její přístup byl špatný, což ale vůbec neznamená, že vypnout celou banku by bylo lepší.
Výborně, předpokládám, že jste byl nakonec spokojen s tím, že banka dokáže problém dobře vyřešit.
No po formální stránce se sice vše vyřešilo, ale pořád tam zůstává pachuť z toho, jak je možné, že se něco tak důležitého nemonitorovalo a pokud se to monitorovalo, proč si toho nikdo nevšiml a pokud si toho někdo všiml, proč mi to nikdo neřekl dřív než za asi 20 dnů?
Jsem si jist, že přístup té poslední úřednice na přepážce nemá žádný vliv na to, jak funguje informační systém.
Má. Ne sice přímo, pokud ta paní po večerech nekódí ten IS a nespravuje serverovou farmu, ale cosi to říká o přístupu celé té společnosti, pokud tam lidi s tímto přístupem toleruje.
Tohle mimochodem (a teď asi leckoho pobavím) bylo krásně vidět v Pohlreichově Ano šéfe. Restaurace, kde je všem jedno, jak vypadá vstup, není dobrá. I když to vůbec nesouvisí s kuchtěním. Restaurace, kde je personál nepříjemný k hostům není dobrá, i kdyby byl v kuchyni sám Bůh. Prostě proto, že lidem, kterým o něco jde, fakt není lhostejno, jak se jejich hosté k nim dostanou a jak se tam budou cítit.
Poli má v tomto hlubokou pravdu přesahující napříč obory. Pochopitelně není první ani poslední kdo něco takového říká a jsou to dost obecné pravdy. Pro mě to nebyl ani tak seriál o vaření, ale spíš i psychologii těch lidí. S některými (těmi lepšími) jsem měl tu čest se setkat a skutečně ten seriál nebyl jen hraný. Ti lidi jsou takoví. A dík za to, že jsou.
Takže přístup té úřednice souvisí s tím IS už jen tím, že tam takovou úřednici vůbec někdo zaměstnal. Protože tomu někomu evidentně příliš nejde o ty zákazníky. A proč by tento přístup měl omezovat zrovna jen na jednu dámu?
Banka je přeci jen dost velká instituce, takže bych z jediného případu a přístupu jedné osoby nedělal dalekosáhlé závěry. Navíc když se to vše nakonec vyřešilo, můžete se úplně stejně ptát, proč tam dělají ti lidé, kteří to vyřešili.
Ale hlavně celý ten příklad neříká vůbec nic o tom, zda by celková spokojenost klientů s bankou vzrostla, pokud by na základě toho vašeho podnětu banka zastavila veškeré operace do doby, než tu jednu chybu vyřeší. Já jsem si jist, že by klienti nebyli spokojenější, a že byste spokojenější nebyl ani vy sám.
Zkrátka už dneska umíme postavit komplexnější systémy, než je luk a šíp, a v těch systémech může docházet k chybám. To nejhorší, co se dá udělat, je tvářit sem, že k žádným chybám dojít nemůže. Aby ten systém fungoval, musí s chybami počítat, umět je rozpoznávat, minimalizovat jejich dopady a častým chybám musí umět předcházet nebo se z nich automaticky zotavit.
Banka je přeci jen dost velká instituce, takže bych z jediného případu a přístupu jedné osoby nedělal dalekosáhlé závěry.
Já z toho žádné dalekosáhlé závěry nedělám, dokonce jsem ani nezrušil žádný z těch 5 účtů.
Jen jsem nepříjemně překvapen, že něco tak důležitého, jako je synchronizace toho, co vidí klient a co vidí banka, není ošetřeno, otestováno nebo alespoň monitorováno. A děsí mě to o to víc, že jsem na to přišel v podstatě náhodou jen díky tomu, že jsem (asi taky chybou aplikace IB) zadal jednu platbu 2x a chtěl jsem to potom zrušit. Opravdu by měl ani v nejhorší noční může nenapadlo, jaká anabáze se z toho potom stane.
Jako nebavíme se o supersložité aplikaci, IB je v podstatě triviální formulářový frontend a někde vzadu je zase učebnicová relační věc na persistentní ukládání záznamů.
To nejhorší, co se dá udělat, je tvářit sem, že k žádným chybám dojít nemůže.
Souhlas, to tu někdo říká?
Aby ten systém fungoval, musí s chybami počítat, umět je rozpoznávat, minimalizovat jejich dopady a častým chybám musí umět předcházet nebo se z nich automaticky zotavit.
Ano. A pokud všechno toto selže, tak je na řadě admin, který danou situaci posoudí ;-)
něco tak důležitého, jako je synchronizace toho, co vidí klient a co vidí banka
Otázka je, zda to za důležité považuje také banka.
není ošetřeno, otestováno nebo alespoň monitorováno
To je pouze vaše domněnka. Já bych považuju za pravděpodobnější, že se o tomhle rozdílu v okrajových případech ví, ale není považován za důležitý. A dost možná o něm mají vědět i ti zaměstnanci na přepážkách.
někde vzadu je zase učebnicová relační věc na persistentní ukládání záznamů
O tomhle silně pochybuju. A doufám, že komunikace mezi tím frontendem a backendem neprobíhá stylem „na číslo účtu 123 zapiš zůstatek 100000“, ale že to je způsobem „požaduji provést transakci převodu částky X z A do B, autorizace QQ“.
To nejhorší, co se dá udělat, je tvářit sem, že k žádným chybám dojít nemůže. – Souhlas, to tu někdo říká?
Byly tu takové komentáře, že aplikace nesmějí padat, případně že když už aplikace spadne, je všechno ostatní jedno a nejdřív se musí vyřešit, proč spadla…
A pokud všechno toto selže, tak je na řadě admin, který danou situaci posoudí
No vida. Takže už je možné, že když dojde k pádu aplikace, může ji správce procesů znovu nastartovat, aby se ta aplikace mohla z chyby automaticky zotavit – a teprve pokud to selže, bude to zotavení řešit admin?
Otázka je, zda to za důležité považuje také banka.
Ano, to je otázka. Evidentně v tomto konkrétním případě příliš nepovažuje. Což hodnotím negativně.
Já bych považuju za pravděpodobnější, že se o tomhle rozdílu v okrajových případech ví, ale není považován za důležitý.
Aha :-) Takže když se bance zobrazuje něco jiného než klientovi, není to důležité. Jasně. :-D Tak tohle je asi ten důvod, proč se v této diskusi neshodneme. Já to považuji za sakra důležité.
Byly tu takové komentáře, že aplikace nesmějí padat
Nevím, kdo psal, že nesmějí. Mohu jen zopakovat, že zdravé aplikace nepadají. Pokud aplikace padá, není zdravá. Očekává se, že nespadne. Když už spadne, je to špatně.
No vida.
Takže ještě jednou:
Aby ten systém fungoval, musí s chybami počítat, umět je rozpoznávat, minimalizovat jejich dopady a častým chybám musí umět předcházet nebo se z nich automaticky zotavit.
Předpokládám, že když je chyba častá, tak se jedná o známý a dobře popsaný provozní stav (takže vlastně z hlediska té aplikace nejde o chybu, protože je na tento častý stav již připravena). Se známým provozním stavem se samozřejmě aplikace vyrovnat má.
a teprve pokud to selže, bude to zotavení řešit admin
Ano, pokud automatické ošetření všech N a nově N+1 známých provozních stavů selže, má to řešit admin. To už tu bylo napsáno mnohokrát.
Ale s přístupem, že kde co není důležité, že to někdo nepovažuje za závažné se fakt neshodneme. Ano, nedůležité aplikace si restartujte jak vás napadne. Je to asi fakt jedno a asi je i jedno, kdyby tam vůbec nebyly.
Aha :-) Takže když se bance zobrazuje něco jiného než klientovi, není to důležité. Jasně. :-D Tak tohle je asi ten důvod, proč se v této diskusi neshodneme. Já to považuji za sakra důležité.
Otázka je, zda vaše bankovní poplatky odpovídají té sakra důležitosti.
Nevím, kdo psal, že nesmějí. Mohu jen zopakovat, že zdravé aplikace nepadají. Pokud aplikace padá, není zdravá. Očekává se, že nespadne. Když už spadne, je to špatně.
V tom případě netuším, o čem se tady celou dobu bavíme. Zdravé aplikace neexistují, takže teď konečně můžeme řešit, co dělat s nemocnými aplikacemi z reálného světa.
Předpokládám, že když je chyba častá, tak se jedná o známý a dobře popsaný provozní stav
A nebo k té chybě došlo poprvé, ale pořád je to provozní stav, se kterým se počítá.
Ale s přístupem, že kde co není důležité, že to někdo nepovažuje za závažné se fakt neshodneme.
Taková je holt realita. Prostředky jsou omezené, takže se holt musí dělat hierarchie toho, co je jak důležité. Jinak dopadnete tak, že budete opravovat přidávání komentářů k blogu generálního ředitele, zatímco bude stát výroba (protože obojí je stejně důležité a ty komentáře se rozbili dřív).
Ano, nedůležité aplikace si restartujte jak vás napadne.
V předchozích částech komentáře jste nenapsal nic, co by znamenalo, že se důležité aplikace restartovat nemohou. Naopak jste potvrdil, že by pád aplikace nemělo být něco, s čím se nepočítá, a také jste potvrdil, že z očekávaných chybných provozních stavů by se měl systém zotavit automaticky, pokud je to možné. Z toho podle mne plyne, že pokud je to možné, měla by se aplikace po pádu znovu nastartovat.
asi je i jedno, kdyby tam vůbec nebyly.
Tohle odpovídá vašemu přístupu, když aplikaci vypnete, aniž byste k tomu měl pádný důvod.
Otázka je, zda vaše bankovní poplatky odpovídají té sakra důležitosti.
Pobavilo. Takže věci se dělají správně jen když je někdo zaplatí? Jsme opravdu na portálu root.cz? Nevím jak vy, ale já používám hromadu (v některých případech dokonce 100%) programů, za které nikdo nikomu nezaplatil a fungují lépe, než většina komerčních programů co znám.
Bez ohledu na to, že jsem té bance přinesl opravdu dost peněz, se kterými může manipulovat a ani nám za to moc neplatí.
V tom případě netuším, o čem se tady celou dobu bavíme. Zdravé aplikace neexistují, takže teď konečně můžeme řešit, co dělat s nemocnými aplikacemi z reálného světa.
To jsem popsal několikrát. Analyzuje se provozní stav, který vedl k pádu aplikace.
A nebo k té chybě došlo poprvé, ale pořád je to provozní stav, se kterým se počítá.
Když se s ním počítá, tak je vše v pořádku a mimo tuto diskusi.
Jinak dopadnete tak, že budete opravovat přidávání komentářů k blogu generálního ředitele
Hezký posun. Připomínám, že jsme se bavili o bance. Přirovnávat to k blogu je fakt úlet. Zrovna blog je jedna z těch věcí, která fakt nutně nemusí běžet.
z očekávaných chybných provozních stavů by se měl systém zotavit automaticky, pokud je to možné. Z toho podle mne plyne, že pokud je to možné, měla by se aplikace po pádu znovu nastartovat.
Ano, v očekávaných stavech jistě. Já jen nechápu, proč ta služba v očekávané situaci spadne a něco, co kontroluje těch N známých a očekávaných podmínek ji potom restartuje. Proč se těch N podmínek nemůže ošetřit rovnou. Ani vlastně nevím, zda systemd podporuje restart jen za určitých definovaných podmínek. Takže to stejně skončí u toho, že systemd tu službu naslepo zrestartuje a službo poraď si.
Tohle odpovídá vašemu přístupu, když aplikaci vypnete, aniž byste k tomu měl pádný důvod.
Pokud se jedná o aplikaci, u které je jedno, že neběží (což taky bylo v předchozím komentáři), tak by neměla běžet. Ano, to je můj přístup. Ušetření prostředků, snížení bezpečnostního rizika, že někdo přes tuto nedůležitou aplikaci něco provede. Nebudu se zabývat něčím, co tam být nemusí.
Takže věci se dělají správně jen když je někdo zaplatí?
Ne. Pokud „udělat něco lépe“ znamená zároveň „udělat to dráž“, dělá se to jedině tehdy, pokud někdo rozhodne, že se to vyplatí. Vy asi taky máte zálohy třeba na třech místech – což není „správně“, protože pořád existuje nějaké riziko, že ani to nebude stačit, a mít čtyři zálohy nebo deset záloh by bylo „správnější“. Ale nikdo vám to nezaplatí.
programů, za které nikdo nikomu nezaplatil a fungují lépe, než většina komerčních programů co znám
Vy máte účet u nějaké open source banky?
Hezký posun. Připomínám, že jsme se bavili o bance. Přirovnávat to k blogu je fakt úlet. Zrovna blog je jedna z těch věcí, která fakt nutně nemusí běžet.
Kdepak. Reagoval jsem na vaše pohoršení nad tím, že „kde co není důležité“. Ano, kde co není důležité, důležitost věcí je různá, a provoz blogu ředitele banky je méně důležitý, než provoz bankovního systému. A v bankovním systému je zase důležitější provádět správně každodenní transakce, než zobrazovat správně stornované platby v IB. Přičemž ten váš případ mohl být specifický ještě něčím dalším, takže ta chyba ve skutečnosti postihne nějaké mizivé procento uživatelů.
Já jen nechápu, proč ta služba v očekávané situaci spadne
Prostě se v očekávané situaci vypne, protože je to v danou chvíli nejlepší řešení. Třeba proto, že se tím bezpečně dostane do známého stavu.
Proč se těch N podmínek nemůže ošetřit rovnou.
Třeba proto, že ta aplikace může být ve stavu, kdy si tím ošetřením nemůžeme být jisti.
Ani vlastně nevím, zda systemd podporuje restart jen za určitých definovaných podmínek.
Umožňuje. Ale ty podmínky bude především ověřovat ta aplikace při startu.
Takže to stejně skončí u toho, že systemd tu službu naslepo zrestartuje a službo poraď si.
Což je správně. To je jeden ze základních předpokladů správného fungování aplikace, že dokáže při startu zkontrolovat podmínky běhu.
Pokud se jedná o aplikaci, u které je jedno, že neběží, tak by neměla běžet.
Pokud ta aplikace nemá běžet, tak není moc chytré ji nastartovat a pak doufat, že spadne.
Což je správně. To je jeden ze základních předpokladů správného fungování aplikace, že dokáže při startu zkontrolovat podmínky běhu.
Jak se do té aplikace dostane ošetření té nové situace, která vedla k jejímu pádu, když vy navrhujete automatický restart po pádu? Evidentně nedostane.
Umožňuje. Ale ty podmínky bude především ověřovat ta aplikace při startu.
Aha, takže podmínky ani nezadáte do systemd, protože podmínky si má ověřovat sama aplikace. Tak aplikace, která před chvílí spadla z neznámého důvodu. Tak ji prostě znovu nastartujete. Beze změny.
Končím tuto diskusi, evidentně jsme se dostali zpět na počátek.
Jak se do té aplikace dostane ošetření té nové situace, která vedla k jejímu pádu, když vy navrhujete automatický restart po pádu? Evidentně nedostane.
Proč by se tam mělo dostávat ošetření nějaké nové situace? Představte si třeba takový souborový systém, to bývají docela robustně napsané aplikace. Dojde k něčemu neočekávanému, takže souborový systém se neodpojí korektně (může to být vada disku, výpadek nezálohovaného napájení, pád kernelu…) Při následném mountu souborového systému (třeba po obnovení napájení) provede souborový systém kontroly, a buď opraví případné chyby a shledá souborový systém způsobilým připojení a připojí ho, nebo oznámí chybu a připojování ukončí. O situaci, která vedla k pádu, nemusí vědět vůbec nic.
Aha, takže podmínky ani nezadáte do systemd, protože podmínky si má ověřovat sama aplikace.
Samozřejmě. Aplikace, která si neověří podmínky startu a napáchá kvůli tomu škody, je nebezpečná věc a nebudu ji pouštět ani jednou.
Tak aplikace, která před chvílí spadla z neznámého důvodu. Tak ji prostě znovu nastartujete. Beze změny.
Jistě, protože to, že se aplikace z neznámého důvodu ukončila, není z pohledu ověřování podmínek a zajištění konzistence žádný speciální případ. Aplikace to musí umět zajistit když běží neustále, start té aplikace není žádnou výjimkou. Před připojením nekorektně odmountovaného souborového systému asi také neděláte žádné změny v jeho „aplikaci“, tedy v příslušném ovladači.
Končím tuto diskusi, evidentně jsme se dostali zpět na počátek.
Ano, evidentně počítáte s tím, že když se aplikace dostane do stavu, že začne škodit, okamžitě musí spadnout. Já s ničím takovým nepočítám, naopak ji navrhuju tak, aby v základu byly jednoduché mechanismy, které je snadné otestovat a u kterých je chyba velmi nepravděpodobná, a nad tím aby byly složitější konstrukce, ve kterých se dají očekávat chyby – u kterých ale ta nízká spolehlivá vrstva zajistí, že nebudou ty chyby fatální.
Zabezpeceni na zeleznici bych sem vazne netahal. Software? :-) Na mnoha mistech je dodnes v provozu elektromechanika pamatujici pocatky minuleho stoleti, v lepsim pripade "alespon" releovka. Ale rozhodne zadny software. Reakci na nesplneni vstupnich podminek je prechod do bezpecneho (vice omezujiciho) stavu - tedy treba navest zakazujici jizdu. Tento stav jde porad samozrejme obejit - privolavaci navesti, kterou je mozne jizdu vlaku povolit bez ohledu na (ne)zabezpeceni vlakove cesty - samozrejme nikoliv plnou rychlosti.
Generalni stop je pokyn, ktery vydava obslujujici vypravci, nikoliv zabezpecovaci zarizeni. Podminkou nutnou je pokryti trate systemem TRS - ktery take neni na vsech tratich. U novejsiho GSM-R je problemem absence mezinarodniho standardu na uvedenou funkci a skoncilo se max. u pokusu...
Naopak, přijde správce, vyhodnotí situaci a podle svého rozhodnutí sjedná nápravu. Třeba zrovna přidá tomu stroji paměť, nebo sníží konfiguraci, nebo vypne jiný proces, který zrovna nemá takovou prioritu.
A k čemu je dobré, že ta aplikace bude vypnutá, než přijde správce?
Nebo prostě udělá cokoliv, co známe z praxe.
Obvykle tu aplikaci znova zapne.
Ja by som sa rad pozrel na situaciu, az sa ti rozbije synchronizacia disku, na ktorej su redo logy a datafiles Oraclu a bude to systemd dokolecka startovat :)) .. ej to by bola panecku sranda. Alebo pri inych prilezitostiach, ako memory corrupting, rozne extra pamlskove ORA-600 , atd. A to je len Oracle.
Tak vela stastia a stastnych zakaznikov s automatickym restartom v produkcnom nasadeni.
Je uplne najlepsie vytiahnut specificky problem a na nom onanovat. Takze ja ti tiez jeden dam. V telcu bolo bezne ze casto boli karty sparovane. Ked jedna z hocijakeho dovodu padla okamzite do 50ms bola druha hore. Casty dovod bol outofmemory. Urcite sa necakalo na ziadneho admina kedy sa uraci prist. Takto sa tie karty veselo switchovali kym to niekto v dalsom builde nefixol. Plus ako zaujimavost, k initu to pouzivalo cosi velmi podobne systemd. Akurat konfifuracia bola natvrdo urobena tj ziadne dynamicke zalezitosti.
S tím nerestartováním procesu je to ale ve Vašem případě formou ode zdi ke zdi. Nejsou zde pouze varianty a) vše se automaticky restartuje za všech okolností b) vše se restartuje ručně po analýze (nejlépe odhalení a opravení chyby). Tak by nic nefungovalo. Čas administrátorů není v reálném světě nafukovací.
Vše záleží na dostupných zdrojích. Rozumný administrátor se prostě dle svých možností rozhodne pro řešení, které je v jeho situaci optimální a nebude dogmaticky trvat na jediném možném přístupu. To by jeho administrátorská milost brzy doadministrovala.
Presne tak, to ze neco je v RAMce a tvari se to nejak, vubec nic nerika o tom, jestli to taky funguje. A osobne mam i narocnejsi pozadavky nez jen aby web reagoval, nekdy testuju i to, ze funguje zcela konkretni vec, protoze me zajima, zda funguje i ta aplikace a funkcni webserver je mi nanic.
Zřejmě nechtěně mícháte více věcí dohromady.
Pokud mi proces sestřelí OOM killer, tak to sice není jeho vina, ale je dobré aby ten proces znovu naběhl? Podle mejch zkušeností nikoliv. Většinou jsem se pral s pamětí, takže mi to tím jen přidělalo práci.
Starostí správce služeb je starat se o služby. Takže:
- Pokud služba má nějaké závislosti, všechno tohle správce ošéfuje.
- Pokud je služba dobře napsaná, tak nespadne.
- Pokud není dobře napsaná, tak je riziko ji spustit znova. Je to výjimečná situace a jako taková by o ní měl být informován správce (člověk), který případně nastaví nějaký příznak auto-restart=true
- Ano, není úkolem správce služeb hodnotit kvalitu té služby. Takže se na to musí zeptat člověka.
- Pokud správce služeb hlásí, že služba je v pořádku, ale přitom by měla běžet a neběží, tak je ten správce opravdu vadnej. Stejně vadnej by byl, když by do zblbnutí restartoval padající službu.
S tim OOMK je to trosku slozitejsi. Ten killer muze klidne zabit proces, ktery bere nejvice pameti a pritom to nemusi byt chyba toho procesu. Typicky priklad je napriklad pretizeni pametovych moznosti serveru pri praci s databazi - proste se vyrobi tabulka vetsi nez dostupna pamet...nechat kvuli tomu shozeny (at uz tu db, nebo jiny) proces nemusi byt vhodne.
Paměť obvykle dochází tak, že jí nějaký proces pomalu užírá stále víc a víc. Že by nějaký proces běžel několik měsíců bez problémů, pak se bláznil, vyčerpal paměť, a po restartu to okamžitě zopakoval, je dost nepravděpodobné. Nicméně pokud se toho bojíte, jednoduše té službě nastavíte maximální počet opakování pokusů o restart.
Ale predsa nemozete dopredu vediet preco to padlo. Kludne to moze byt nejaka zriedkava race condition napr. Povacsine casom sa tie bugy ktore sa casto zjavia vychytaju a zostanu chutovky ktore je tazko najst lebo pre ich aktivaciu sa musi zist viac veci naraz. V takom pripade restart vobec neni zla volba. Ked napr medzi padmi mate 2mesacny interval.
a zostanu chutovky ktore je tazko najst lebo pre ich aktivaciu sa musi zist viac veci naraz.
Nahodit strace, gdb apod. a kazdy lepsi nez prumerny admin, nedejboze programator, si hrave poradi. Tak nejak byla tvoje argumentace na AbcL k reseni problemu u binarnich modulu systemD vs shell scripty ? :-D
Padnout může vše, dokonce i HW nebo elektrárna, proto musí existovat plánovaný postup co a jak se má v takovém případě stát a ne že nějaký magor bude tvrdit že se to stát nesmí, tudíž se tím není třeba zabývat.
Když padne nějaká kritická komponenta systému, pak jedním z řešení je zalogování příčiny pádu, pokus o odeslání emailu a reboot.
Lenze toto je prave to, co sa na stroji so systemd neda. Zhodit klasicky init za behu je docela problem, nakolko po nabootovani nerobi nic, len dookola vola veci z inittab. Klasicke unixove DOTADIW. Systemd pri svojom DFE (Do eF Everything) ma ovela vasciu sancu na pad uz z definicie a, zial, i v praxi. Takze logovanie nebude, reboot vdakabohu tiez nebude, snad len to odoslanie mailu zabezpeci daky watchdog.
Tady se ukazuje naprostý nedostatek praxe tohoto magora který jediné co umí je rozvíjet nesmyslné teoretické konstrukce! PID=0 neexistuje, init má PID=1. A služba která si při pádu nesmaže PID soubor v pohodě naběhne protože zjistí že proces jehož PID je v tom souboru zapsaný neexistuje. Proto se tomu taky říká PID soubor!
Protože to tak ve spoustě případů tvrdí. Vidíte službu ve výpisu procesů, napíšete /etc/init.d/service restart
a dozvíte se, že prý služba neběží. Nebo naopak služba neběží, dáte /etc/init.d/service start
a dozvíte se, že nelze nastartovat již spuštěnou službu. Takže musíte dát nejdřív /etc/init.d/service zap
, abyste správce služeb přesvědčil, že služba neběží. Hrozné je, že takový příkaz vůbec existuje, a ještě horší je, že je nutné používat ho tak často, že si ho dodneška pamatuju.
Ano ano, se systemd nam konecne sluzby startujou, kdy se chce jim a ne kdy chce administrator, konecne nam sluzby (tohle jeste do widli nedorazilo) nejdou stopnout a dokonce, ta vymozenost, nenastartujou ani sluzby, ktere administrator nastartovat chce.
A ano, pokud se neco nekde podela, tak misto aby to chciplo, tak to bude startovat porad dokola, aby to znicilo vsechna data na disku a ne jen cast. Pricemz kdyz to vytuhne, tak to tuhy stejne zustane, protoze to stejne systemd nepozna.
Problem s loggingem? journalctl -fu <service> a jako bonus to umi cist i to co sluzba zaloguje na stdout+stderr.
Pridani vlastni sluzby? Napises jeden service file a nemusis resit integraci s upstartem, ci vlastinma init.d ohybavkama ruznych distribuci. Plus jako bonus dostanes i rozumny respawn mechanismus.
Takze jsi tu napsal dva blaboly a pak pul strany textu o nicem a FUD.
journalctl -fu <service> a jako bonus to umi cist i to co sluzba zaloguje na stdout+stderr.
Pouze za podmínky, kdy se 50% journald logů na zdravém stroji nepoškodí tak, že je potom journalctl nepřečte.
A za podmínky, kdy máte buď velmi malé logy (a máte štěstí, že to co požadujete se ještě neodrotovalo), nebo máte dostatečně nové systemd, abyste se těch logů vůbec dožil.
Dovolim si nesouhlasit.
Ad logging: zkuste
time journalctl -fu service
time grep service /var/log/messages
To ze by rsyslog neumel stderr a stdout je taktez mylne.
Ad sluzba: pokud vam pro spusteni sluzby staci zadat ExecStart jste v pohode, cokoli slozitejsiho je horror. Jak hledate ty spravne zbesile parametricke slozeniny pro to co potrebujete udelat?
[root@localhost /]# systemctl start opensshd.service
Failed to get D-Bus connection: Operation not permitted
[root@localhost /]# systemctl
Failed to get D-Bus connection: Operation not permitted
[root@localhost /]# whoami
root
[root@localhost log]# journalctl -fu opensshd.service
-- Logs begin at Mon 2015-07-20 11:07:45 CEST. --
Failed to get journal fields: Cannot assign requested address
Manjaro/SystemD cerstvo po instalacii. To len tak ciste pre zaujimavost; je to virtualka, takze som to nikdy neriesil. Restart to (na nejaku dobu) vyriesi.
Nedokazem si ale predstavit myslienkove pochody niekoho, kto si <i>toto</i> nasadi do produkcie.
Lenze o tom to prave cele je. Pad(?) dbus daemona komplet odstavil 3/4 systemu, vratane uzivatelskeho sposobu, ako dbus restartovat.
To, co sa v minulosti riesilo stupidnym skriptom sa "lepsie" riesi IPC komunikaciou dvoch utilit cez prostrednika. SystemD tak vytvara single points of faulure, resp. rovno chain of failure points, kde uz restart nieje len najjednoduchsim, ale i jedinym moznym riesenim. Gratulujem, prekonali sme Windows -_-
To není „podle komunity“, je to „podle části komunity“. Otázka je, jak je ta část velká – ti nespokojení vždy bývají hlasitější. Ti, kteří systemd bez problémů používají, nemají potřebu pod každý článek, kde je zmínka o systemd, hned psát komentář, že oni ho používají a jsou spokojeni.
Kde je problém? Je to prostě docela podstatná změna, a konzervativním lidem se nelíbí žádná změna. Když se podíváte do diskusí, zjistíte, že podle některých lidí je změna k horšímu každá nová verze Firefoxu, Chrome, Opery, Androidu, OpenOffice i čehokoli jiného. Další věc je, že některé věci jsou opravdu kontroverzní – třeba kvůli chování hlavního autora, nebo kvůli tomu, že systemd opravuje věci, které byly od základu rozbité spoustu let. No a k tomu se pak samozřejmě přidávají ti, kteří mají pocit, že nadávat na systemd je v módě, a ti jsou samozřejmě nejhlasitější.
Jeste ze prisel ten novej spasitel sveta a prinesl nam systemd! Jinak bych ani nevedel, ze vsechno bylo tolik let rozbite, a nikdo s tim nic nedelal...
Jeste by k tomu mohl udelat kernel, nakej office a webovej prohlizec, a vyhodim ten squrvenej linux pryc! At to vsechno veme pod palec Poettering, a konecne zavladne radost, stesti a mir. Ein Reich, ein Volk, ein systemd!
Clovece a jak jsi drive resil to, aby ti sluzba bezela na vice systemech?
Fascinující. Tohle mě fakt baví. Není problém udělat program čítající (sta)tisíce řádků (nebo co to vlastně programujete), ale jakmile se má připravit rc skript pro 5 distribucí (což je v podstatě jen o zkopírování a vypsání šablony), tak je to náhle problém.
Jeden init script pro kazdou distribuci, nebo jsi to integraci nechal na distro maintenerech?
Ano, klidně se to dá nechat na distribuci.
Lze to napsat jednou a jede to vsude, vy radeji budete psat 5 skriptu zkoumat rozdily mezi jednotlivyim init.d based distribucemi. To je asi ten hlavni rozdil mezi nami.
A nemusi se jednat o statisice radku, staci psat treba mikroservicy nad node nebo flask. Jedna sablona app.service pak resi vse.
To je tak strašně sprostý.
Ti, kterým stávající stav vyhovuje křičet nebudou. Naopak se budou sem tam objevovat, a vysvětlovat se samozřejmostí sobě vlastní, že přeci není žádný problém.
Ti, kterým stávající stav nevyhovuje křičet budou. Co jim ostatně zbývá?
Největší problém na SystemD není jeho architektura, osoba jeho autora, nebo kvalita zpracování. Ale to, že se nasazuje úplně všude, a aktivně brání tomu, aby byla vytvořena alternativa. Tedy jinými slovy, nejhorší na tom je, že SystemD nejde nepoužívat.
Problém není v tom, že to nefunguje v ideální situaci. Samozřejmě, že to za nějakých normálních podmínek funguje. Jenže za těchto podmínek by vám původní init a rc systém fungoval také a také byste o něm nevěděl. Takto to se porovnávat nedá.
Problém je v tom, jak se to (ne)vyrovná a jaké nástroje k řešení to (ne)poskytuje v nestandardní situaci. Tohle je něco, co nelze hodnotit tak, že "na mém stroji, kde je vše standardní a skoro nic po tom nechci to funguje", toto lze hodnotit pouze roky praxe a zkušenostmi z různých mimořádných událostí.
jj, kolega zrovna resil, proc mu ve widlich (10) nefungujou aktualizace, v 7/8 je ve (kupodivu) textovej log. Mno v desitkach to vylepsili ... lol
Windows Update logs are now generated using ETW (Event Tracing for Windows).
Please run the Get-WindowsUpdateLog PowerShell command to convert ETW traces into a readable WindowsUpdate.log.
http://www.voidlinux.eu/ - distribuce je velmi aktivní, bez systemd a s velkým množstvím balíčků.
Doufám, že podpora Debianu 7 Wheezy prodlouží :)
Nejen kvůli $y$temd zůstávám u Wheezy :P
IMHO, Debian creew udělal chybu, když u 8-ky u GUI instalátoru neudělal nabídku hned si zvolit, jestli uživatel chce init a la Wheezy nebo ten nový $hit.
Zatím to neřeším, až skončí podpora Wheezy, pak se začnu škrábat levou rukou za pravým uchem a spekulovat, jak dál... :)
Moje slova.
A zkusenosti:
Lonsky upgrade produkcniho VPS sqeeze->wheezy = pohoda, nejake to apt-get atd... po restartu vse OK.
Minuly mesic pokusny upgrade wheezy->jessie = prokodovana noc, pak jsem se na to vyflak. Nastesti vse na lokalnim virtualu, zaloze beziciho serveru.
Nezbyva doufat, ze prodlouzeni supportu do [v clanku avizovaneho] 2018–05 klapne.
Na serverech používám Ubuntu 14.04 LTS, na desktopech Linux Mint 17 a jsem naprosto spokojený. Obzvlášť sympatický mi je názor autorů Mintu - systemd podle nich není zatím natolik stabilní aby ho zahrnuli, až se přestane tak živelně vyvíjet tak ho možná zahrnou. Já se trochu obávám jak to bude vypadat až skončí podpora Ubutnu 14.04 LTS (což by mělo být v roce 2019) a doufám že pak buď už bude systemd stabilní, nebo se prosadí nějaká alternativa...
Zatím mám Wheezy, časem přejdu na Jessie, ale instalovat systemd se rozhodně nechystám. Pořád doufám, že zvítězí rozum, Debiana by byla opravdu velká škoda. Zatím nevím, co bych dělal, kdyby přešel na systemd povinně. Ale je jednodušší plynout s davem, tak se obávám, že nakonec do toho h... taky šlápne. :-(
No zatim asi jo. Ale jestli to spravne chapu, jak jsem to tu cetl, clovek se musi branit zuby nehty, aby mu to do systemu nenalezlo. Uz to je tedy spatne, na takovou zasadni vec by se mel upgrade dotazat a ne tam flaknout systemd, aby se pak lidi mohli divit, co se jim to prihodilo. Jesteze sem nekdo dal odkaz na navod, abych neslapl do hovna, az jednou budu upgradovat. Na takovy podraz clovek nepomysli.
Jestli jeden apt-get install = braneni se zuby nehty, tak ano. Jenze to je v zasade aplikovatelne na cokoliv - distribuce ma vzdy nejaky vychozi (preferovany) init, nejake vychozi MTA, nejakou implementaci SSH atd. Nekomu vychozi volby vyhovuji a nekomu ne. Nebudte lini a nedelejte z komara velblouda :-)
Debiani dist-upgrade se vzdy pta, zda ma neco odstranit - a pri prechodu na novejsi verzi se obvykle i nejake zastarale/nahrazene veci odstranuji. Dopadem zminovane lenosti je i to, ze administrator poradne necte, co bude odstraneno ci nainstalovano - a pak se divi. Jenze to neni chyba distribuce - to je blbost dotycneho ;-)
Ano o CoreOS a dockeru byla tusim ted prednaska i v Berline. Myslim, ze spousta lidi, by uvitala nejake sdileni informaci jak se takove vec dela. Je to tak, ze systemd skutecne umoznuje pomerne snadno dosahnout nekterych veci jako je kontejnerovani apod. Ono ja se systemd taky nemam problem, dokud neni problem.... zkuste si treba smazat shutdown.target. A ze se to nemuze stat? Muze.
Po podrobném vyhledání na základě různých podmínek, mými favority bez systemd, když Wheezy už nebude podporován a pokud mezitím si to Debian crew s tím systemd nerozmyslí, jsou:
BOSS GNU/Linux (kde si nainstaluji KDE, protože je tam defaultní gnome, btw)
http://distrowatch.com/table.php?distribution=boss
Fermi Linux
http://distrowatch.com/table.php?distribution=fermi
Springdale Linux
http://distrowatch.com/table.php?distribution=springdale
Calculate Linux
http://distrowatch.com/table.php?distribution=calculate
:)
Jasně, já třeba na desktopu jedu na Funtoo, tam to mám vyřešené.
Jde mi hlavně o ty servery, kde mi debian v řadě věcí vyhovuje a ideálně by se mi hodil přechod na debian-like system bez systemd jen změnou repozitářů a aktualizací, jako to u Devuanu bylo zamýšlené (bez nastavování nového systému od začátku).
Pokud si to teda vývojáři debianu ještě nerozmyslí...
To by se stejne mohl clovek rozhorcovat nad existenci vicero implementaci HTTP, SSH, SMTP, POP, IMAP, DNS... atd... v jedne distribuci - to je taky sracka? :-) To uz je udel distribuce, ktera chce oslovit co mozna nejvic uzivatelu. Lide chteji mit moznost volby. Z pohledu spravce distribuce bylo jednodussi mit tam mene baliku a konkretni funkcionalitu neduplikovat - stanovit, ze na HTTP bude treba jen Apache atd... s initem je to v konecnem dusledku stejne. Uz v dobach pred systemd existovala moznost volby, pokud jde o zpusob startu systemu - ale kdo si toho vsiml... :-) Akorat je kolem toho najednou zbytecny humbuk.
Me nevadi, kdyz ten prujem nekdo nabizi jako jednu z moznosti. Kdyz je nekdo masochista, tak at si to uzije po libosti. Ale vadi mi, ze je to treba default, ktery se cloveku zakerne vplizi do systemu. A u rady dister to zretelne uz je jedina moznost. Zatim jsem treba nevidel navod nebo aspon zminku o nem, jak udelat Blbuntu bez systemd. U Debianu to zatim jde. Tohle: https://en.wikipedia.org/wiki/Systemd#Adoption_and_Reception nevypada dobre.
Zakerne? :-) V pripade Ubuntu je to primo v release notes a Google vraci taky nespocet ruznych navodu. Staci umet cist - a je dobre se zacist do dokumentace primo dane distribuce, nikoliv do obecnych clanku na wiki. Ja vim, to se moc nedela... :D
Jinak to chovani je stejne, jako treba v pripade taskselu - jako DNS server mi taky nainstaluje Bind a ne treba Knot ci jina implementace... jak zakerne! :-)
Tak Gentoo používá v defaultu OpenRC, takže co se týče SystemD, raději použiju Gentoo s mnohem větší uživatelskou základnou, než nějaké jeho klony. (přiznám se, na Gentoo na desktopu už funguju pěknou řádku let a neměl jsem potřebu Funtoo ani nic jinýho zkoušet). Problém je na serverech, pokud je správců víc a ostatní nemají s Gentoo zkušenosti, není to vhodný distro. Ostatně i nějaký disaster recovery plán s Gentoo není zcela jednoduchá záležitost, v případě potřeby těžko vytáhneš ze skříně libovolnej starej krám a během 30ti minut na to uděláš čistou instalaci (ano, dá se řešit přes image, ale zase kdo to má udržovat).
Jinak co se týče všech děch Devuanů, Alpinů a podobných, přece jenom je uživatelská základna trochu jinde, než u Debianu/CentOS, takže i řešení problémů může být složitější a končit zběsilou kompilací různých verzí všeho možnýho, protože distribuční věci jsou rozbitý / starý / zkompilovaný bez featur atd...
nevim, ale zas tak zhavy bych to nevidel ... https://wiki.gentoo.org/wiki/Binary_package_guide
Takze i gentoo nainstalujes za 30 minut, kdyz to mas dobre pripravene.
I na svym hokuspokusnym stroji mam rsync na externi disk ... a pokud to chcipne, tak (narozdil od widli) to proste nasyncuju na libovolnej jinej HW a pobezi to (Gentoo samo). Rek bych, ze i o dost rychlejs nez za 30 minut. Jediny co bude treba udelat, sou partysny a instalnout grub.
Zde je návod, jak upgradovat Debian Wheezy na Jessie BEZ instalace $y$temd :D
http://hydra.geht.net/tino/english/faq/debian/apt/jessie/
Možná jej někdy zkusím?
Btw, zkoušel jste to někdo ? :)
Nie som povinny cokolvek vam dokazovat a hlavne uz som to niekolko krat urobil a nicomu to nepomohlo, tak si dovolim len v kratkosti povedat svoj nazor odvodeny so skusenosti, ktore so systemd mam. Je to tak v poriadku alebo som si dovolil moc ked na systemd nepejem ody? BTW ten kto so systemd nema problem musi takisto dokazovat ze so sysvinit to bolo fakt spatne a chcelo to zmenu?
Ano skutocne sa bojim dna ked nase servre prejdu na RHEL7
fakt to nema zmysel vytahovat to do podrobna, za ten cas si clovek nasiel workaround na vsetko ale moj pocit zo systemd sa nezmenil, k zivotu som ho absolutne nepotreboval ani doma a ani na stovkach servroch v praci, prechod na systemd mi priniesol len rozcarovanie ako nieco take v systeme, ktory som vzdy obdivoval pre svoju jednoduchost mohol niekto integrovat. Pre mna ostane vzdy stary Arch linux s rc.conf to najlepsie na co som si za svoj zivot siahol. A to v ziadnom pripade niesom konzervativny a mam rad pokrok kde to dava nejaky zmysel.
Slyste nazor lamy. Spravovani Linuxu se snazim uz leta nedelat, resp. delat co nejmin. V pocatcich (1.2.13, Slackware 3, bez netu a bez jedineho guru) jsem si v tom hubu machat musel intenzivne, aby distrobuce nejak nabootovala, ale posledni roky zejm. diky dobre navrzenymu Debianu ziju celkem spokojene na ruznejch verzich soubezne, od woodyho (tusim stable ~2003) po jessie.
Muj pristup k systemd byl, jak nekdo doporucuje vyse, proste to tam uzivatelsky dat a nemudrovat kolem. Na osobnim pocitaci, kterej se nicim nevymyka (konkretne Zotac, Intel NUC, MacBook Air, vsechno s jednou rozkopirovanou instalaci jessie amd64), me to zatim nijak nevypeklo, proste to nejak funguje. Nicmene na vestavenem pocitaci s Zynq FPGA+ARM mi ten systemd naprosto silene skodil. Dodnes nevim presne, co se delo, ale uspesnost bootu byla nahodila, debilni ASCII-fart animace mi dokazaly pokazdy zmrvit terminal a pri chybach to dokonce opet nahodile koncilo ruzne podle nalady. NASTESTI sel aptget install sysvinit a od toho okamziku je vsechno v pohode.
Timto nerikam, ze sysvinit je dobre. Jen se mi zda, ze autori systemd jsou velice uzce zahledeni do jednoho konkretniho smeru a typu systemu.
Gentoo dává možnost volby. Podporuje OpenRC s klasickou skladbou démonů a utilit (výchozí volba), i systemd. A tak je to plánované i do budoucna, pokud mi něco neuniklo. Nejde tedy o případ distribuce, která je zrovna v procesu podrobení se.
Gentoo tedy je možné naprosto bez problémů provozovat bez systemd a mělo by tomu tak být i do budoucna.
V rámci Gentoo se také vyvíjí eudev, což je udev zbavený závislosti na systemd balastu.
Tohle ti asi uniklo?
https://lkml.org/lkml/2014/4/2/420
http://archlinuxarm.org/packages
armv7 core systemd 227-1 system and service manager
armv6 core systemd 227-1 system and service manager
armv8 core systemd 227-1 system and service manager
armv5 core systemd 226-3.2 system and service manager
Já bych se na to celé podíval z trochu jiného úhlu.
Linux se čím dál více stává méně průhledným na nastavení, začíná to být stejná nepředvídatelná "černá skříňka", jako Windows.
Pokud jsem se bavil tímto systémem, tak proto, že bylo vše přehledné a jednoduše nastavitelné v textových konfiguračních souborech, ne kvůli zautomatizovaným procesům pro nastavení systému, které v některých případech fungují.
Takže to vypadá na budoucí přechod k Microsoftu, který si na nic takového nehraje a prostě jede.
Proč bych měl používat systém, kterému nebudu rozumět?
Řekl bych, že "systém zadarmo" není pro mne motivace.
"Proč bych měl používat systém, kterému nebudu rozumět?"
Nerikam, ze jsem zastance systemd, je fakt, ze to jeste neni odladene, takze vetsinu stiznosti tu chapu a jsou relevantni a opravnene a dobre ze jsou. Jak to bude se systemd a kernelem to ukaze cas, ale snad to nebude tak sileny, ze by se s nadsazkou systemd zadratoval do kernel (chtel jsem puvodne napsat, aby se systemd nestal novym kernelem :) ).
Systemu kazdopadne nebudes rozumet, proto, ze se ho nenaucis, nebo nesnazis pochopit. Je to jako si stezovat, ze starou skodovku sis opravil a stacili ti na to tri-ctyri nastroje a dnesni skodovku si neopravis sam ani kdyby ses na usi stavel. Je to proste vyvoj.
Koncovemu uzivateli to bude jedno.
Adminovi, to jedno nebude, ale stejne si to bude muset ochocit nebo zmenit pozici/obor.
A neni to cerna skrinka, je to opensource, takze muzes zacit cist ;) Nebo prelez na BSD a mas klid (aspon zatim).
Já jsem třeba kdysi přešel na Gentoo, protože pro mne ostatní distribuce byly právě tou černou skříňkou. V Gentoo bylo přesně to, co jsem si tam nainstaloval, věděl jsem, jaké jsou vazby mezi jednotlivými komponentami. Jediné místo, které zůstalo zatemněné, byly init skripty. Samotný init skript sice býval jednoduchý na přečtení, ale závisel na dalších skriptech a utilitách, takže zjistit, co přesně a jak se tam vlastně spouští, bylo dlouhé pátrání. Typicky pokud něco nestartovalo a potřeboval jsem to z příkazové řádky spustit pokud možno stejně, jako to dělá ten skript. Když se mi to konečně podařilo zjistit a spustit, tak se ten proces stejně odforkoval na pozadí a bylo to zase k ničemu. Pak jsem přes daemontools a upstart přešel na systemd (když jsem si v různých diskusích přečetl, jak je to hrozné, že to dělá to a to, což se shodou okolností shodovalo s tím, co jsem od správce služeb chtěl a divili jsem se, proč už to dávno nějaký neumí). Když mám rozumně napsanou aplikaci, která nedělá žádnou magii, spořádaní běží na popředí a chyby zapisuje na standardní výstup, a ta aplikace špatně startuje, jednoduše si jednotce přečtu, pod jakým běží uživatelem, v jakém se spouští adresáři a jakým se spouští příkazem, to zopakuju v příkazové řádce, a mám ji ve stejném stavu, v jakém ji spouští systemd. Pro mne tedy systemd init systém naopak zprůhlednil.
To jsem nedavno zkousel na Arch Linuxu. Kdyz systemd spusti pri bootu( vyzkousen i rucni start/restart po bootu) acpi demona, tento sice dle logu vidi a nacte soubory v /etc/acpi/events/, ale na eventy acpid nereaguje. Pokud spustim v terminalu prikaz z unit souboru, tak na eventy reaguje. Nikde v logu zadny naznak problemu. Dodnes jsem to nevyresil a podle me to je jasna chyba systemd. Takze je sice hezke, ze to lze rucne pustit "stejne" jak to spousti systemd, ale to neznamena, ze neco vyresite.
Nejak nechapu problemy spojene s nepouzivanim systemd. Mam Debian Jessie, po instalaci jsem v aptitude proste odinstaloval balik systemd-sysv a nainstaloval sysvinit-core a vse mi funguje jak drive.
Jediny problem jsem mel s debendencema u Inkscape, ktery nejak tranzitivne zavisel na dbus-x11, coz slo vyresit vyrobenim prazdneho dummy balicku nahrazujici zavislost na dbus-x11. bez ktereho ten Inkscape realne chodi bez problemu.
Abych to tak nějak shrnul... vypadá to, že jsem striktně proti SystemD a toho arogantního blbečka bych nejraději zalil do betonu (což není blbej nápad). Je to pravda jen částečně, systemd není zcela nezajímavá alternativa k jiným "spouštěčům", ale podle mě to prostě není hotový, mění se to s každou verzí, některé bugy jsou dlouhodobě ignorovány, případně prohlašovány za nové featury a značně to přesahuje účely, ke kterým by to mělo sloužit. Nechat tohle zažrat tak hluboko do jakéhokoliv distra, že to nelze jednoduše nahradit, je cesta do pekel. A pro rejpaly, pravděpodobně u toho budu hodně nadávat, ale jsem přesvědčenej o tom, že SystemD odstraním odkudkoliv, jenom to bude znamenat tak velký zásah do systému a rozházení závislostí, že to prostě není efektivní a použití takovýho distra v podstatě ztrácí smysl a ve výsledku z toho bude parodie na LFS.
Takže... SystemD klidně, ale pouze za předpokladu, že nebude povinný, půjde korektně v rámci distribuce nahradit a nebude na něm závislá další hromada věcí. Za tohoto předpokladu jsem ochotnej tomu dát šanci, až to bude funkčně alespoň na úrovni beta verze.
Začínáte mi s tou demagogií lézt na nervi. Já nikde neřekl, že SystemD je špatný. Logika pláče, pokud z toho, že se nasazuje software bez stabilního api vyvozujete cokoliv o nahrazovaném řešení. Nic co běželo desítky let a i kdyby to byla kupa hnoje se normálně nenahradí něčím, co nemá žádné, slovem: žádné, záruky. Ta kupa hnoje je aspoň známá kupa hnoje.
Vy používáte čistý SysVinit? Pak netuším, o čem se tu bavíme, protože čistý SysVinit nemá smysl nahrazovat systemd. Ve všech distribucích je ale kolem SysVinitu ještě tuna skriptů, které dělají tu skutečnou práci, SysVinit tam je vlastně jenom od toho, aby spustil ten hlavní skript. A tyhle skripty okolo jsou neznámá kupa hnoje, desetkrát větší než celý systemd.
A pro příště, když podle vás systemd nemá API, čímž se nijak neliší od toho, s čím ho porovnáváte, je nesmyslné to neexistující API uvádět jako příklad nevýhody systemd oproti té alternativě. Když napíšete „Mercedes je horší než Trabant, protože Mercedes nemá vrtuli“, tak nějak každý očekává, že si myslíte že Trabant tu vrtuli má.
S velikosti to je sporne. Systemd je dnes na 500+ tisicich radku kodu (diky tomu, jak se nabaluji dalsi a dalsi funkcionality), u tech init scriptu se budeme stale bavit maximalne jen o desitkach tisic radku. Cim vice kodu, tim narocnejsi audit - a tim vetsi pravdepodobnost, ze v krecovite honbe za novymi funkcemi (nahrazujici existujici reseni; ktera vesmes casem proverena jsou) se zanesou nejake chyby, na ktere se hned neprijde...
Nicmene ta 'tuna skriptu' je proste jen defaultni konfigurace, ktera se dodava se sysvinitem. Podobne, jako se dodava nejaka defaultni konfigurace treba s apachem nebo bindem. Pokud uzivateli nevyhovuje, tak ji muze jednoduse nahradit. Ja treba na vetsine mych stroju ji mam radikalne osekanou (volam sve skripty z /etc/inittab, ktere nasledne volaji vybrane skripty z /etc/init.d/). Je pravda, ze tyto distribucni skripty jsou casto kopa hnoje, oproti tomu v Systemd obdobnou kopu hnoje presunuli rovnou do kodu a k tomu pridali par dalsich kolecek vlastniho.
Mohl byste uvést konkrétní případ vašeho skriptu, a vedle toho odpovídající jednotku pro systemd? A co všechno jste musel při vytváření té jednotky pro systemd zkoumat? Protože já si myslím, že je to přesně opačně, že v systemd nic zkoumat nemusíte a ten váš skript nahradíte jednoduchou jednotkou pro systemd, kde bude akorát název volaného programu.
Systemd mysli za vas. Systemd je odpovedi na vsechny otazky. Boli vas hlava? Trapi vas traveni? Mate potize s erekci ci spankem? Nemuzete vyprat zatvrdilou skvrnu na kosili? Pomuze systemd. Adams se myli, odpovedi na zakladni otazku zivota, vesmiru a vubec, je systemd. Clusteru virtualnich Poetteringu trval vypocet odpovedi 5 let.
Ne, nepoužívám. Já používám SystemD.
Ano. Moje chyba. Měl jsem napsat všude "stabilní" api. API má každá věc.
Jinak to je asi všechno co se dá k tvém příspěvku říct.
Všechno ostatní je jenom takové to, kdy mi vsuneš do úst, něco co jsem neřekl, a pak to s velkou parádou rozmetáš. No, tak, k tomu ti gratuluji.
A pro příště, možná by bylo fajn, když by si nejdříve napsal noticku: "Jsem troll, dem na flame? Určitě se nebudu pokoušet chápat tvé příspěvky."
Řekl bych , že jste jenom troll, který vždy napíše nějakou hloupost, a když vás při tom nechytám, otočíte a začnete tvrdit, že jste vlastně myslel něco jiného. Ale dobře, můžeme to zkusit.
Takže věta „Logika pláče, pokud z toho, že se nasazuje software bez stabilního api vyvozujete cokoliv o nahrazovaném řešení“ měla znamenat, že systemd (zde „software“) nemá stabilní API, zatímco SysVinit+skripty (třeba OpenRC, zde „nahrazované řešení“) má stabilní API, nebo že systemd nemá stabilní API a SysVinit také nemá stabilní API?
Řekl bych , že jste jenom troll, který vždy napíše nějakou hloupost, a když vás při tom nechytám, otočíte a začnete tvrdit, že jste vlastně myslel něco jiného. Ale dobře, můžeme to zkusit.
Ha ha, prej nachytat, prej hloupost. Ale viz níže.
Takže věta „Logika pláče, pokud z toho, že se nasazuje software bez stabilního api vyvozujete cokoliv o nahrazovaném řešení“ měla znamenat, že systemd (zde „software“) nemá stabilní API, zatímco SysVinit+skripty (třeba OpenRC, zde „nahrazované řešení“) má stabilní API, nebo že systemd nemá stabilní API a SysVinit také nemá stabilní API?
Ne, to znamená. Že to co popisuješ není logické.
SystemD nemá stabilní API (API jako takové samozřejmě má, to jsem se někde upsal, sorry). Což je věc, kterou jsem mu vyčítal. Nic víc a nic méně.
SysVinit + skripty máme, známe, a neříkal jsem nic o tom, v jakém stavu mají API. Třeba je taky stejně blbé, jako SystemD. Nebo je lepší. To nemám potřebu řešit. Protože ať by bylo jakkékoliv, tak na výsledku mé promluvy nebude mět vliv. To jsem demonstroval tak, že jsem tomu SysVinit + scripty přisoudil, že je to kupa hnoje (pro pořádek a hlavně pro tebe: napsal jsem, "i kdyby to byla kupa hnoje").
Samozřejmě, pokud by někdo vytvářel novou distribuci, tak bychom se mohli bavit o tom, zda má SysVinit + skripty nějaké a jak stabilní API.
Každopádně, já bych to tady zabalil. Má doména je logika, v tom si zřejmě nerozumíme. Takže se nebudem mučit. Čau.
Aha, takže vy jste chtěl napsat, že software, který má třeba nestabilní API, je nelogické nahrazovat softwarem, který má také nestabilní API. Jinými slovy, že každý první software může mít nestabilní API, ale logické je, aby každý software, který ten první nahradí, měl stabilní API. Proč, to nevíme. I kdyby ten nový software byl tisíckrát lepší, má smůlu, pokud nemá stabilní API. Ať už stabilní API znamená cokoli.
Ano, vaší doménou je logika, bohužel ne ta z tohoto vesmíru.
Aha, takže vy jste chtěl napsat, že software, který má třeba nestabilní API, je nelogické nahrazovat softwarem, který má také nestabilní API. Jinými slovy, že každý první software může mít nestabilní API, ale logické je, aby každý software, který ten první nahradí, měl stabilní API. Proč, to nevíme. I kdyby ten nový software byl tisíckrát lepší, má smůlu, pokud nemá stabilní API. Ať už stabilní API znamená cokoli.
Ne, toto jsem říct nechtěl, neřekl. A pokud někdo tuto mou promluvu takto chápe, no tak to mě jeho hodnocení mé logiky nechává chladným.
To máte celkem komplikované, když pořád píšete něco, co jste napsat nechtěl. Takže už víme, že v tom srovnání jste nechtěl psát, že původní init systémy mají stabilní API, také jste nechtěl psát, že mohou mít nestabilní API. Možná jste vůbec nechtěl systemd s jinými init systémy srovnávat? Ale abyste jinými slovy napsal, co jste chtěl vlastně říci, toho se nedočkáme, že.
Jirsáku, přestaňte tady trollit, téměř polovina diskuze je zaplevelená těmi vašimi demagogickými žvásty. Boneflute nepsal v původních 2 postech nic o tom, že by současné inity měly nějaké API, to jste si tam přibájil svým chorým mozečkem VY. Takže pro blba vašeho formátu to zopakuji:
Je nesmysl nahrazovat současná fungující řešení megabastlem v prealfa verzi. To, že ten megabastl nemá stabilní API je jen třešnička na dortu, díky níž se nedají rozumně vytvářet alternativy k těm jeho úžasným modulům (což je další vaše demagogická lež, že je ten bastl modulární a že není nutno ten moloch používat celý - je).
Prioritou by rozhodně mělo být portování registrů systému pro Linux. Nějak mi to už řadu let chybí :D Do SystemD by to krásně pasovalo a když by se to podělalo, SD by mohlo hodit BSOD :D Navíc bych rozhodně přesunul grafický subsystém, ať Xka nebo Wayland, nebo cokoliv jinýho do kernelspace a byla by to povinná, nevolitelná součást a při selhání by to hodilo kernel panic.... ne, kecám... žádnej kernel panic, ale výjimka 0E na adrese... Ostatně, i SD by se mělo dát do kernelu...
Děkuji za pěkný sourh. Poslední 2 články řadím mezi top minimálně za poslední dva týdny :)
Můj laický pohled na systemD je asi takový, že když jsem před několika lety (bylo mi tehdy asi 13) objevil GNU/linux, byl jsem očarován jeho transparentností a možnostmi maximálního nastavení. Taková novodobá stavebnice. Člověk se do něj mohl pořádně zavtat a poznával jsem, jak asi takovým OS funguje. Nebyly to ty chytré Okna, které člověk spustil a ono to nějak jelo.
Dnes mi přijde, že se díky SystemD z linuxu stává právě takový neprůhledný a těžkopádný systém jako tehdy Windows. V každé verzi se nahrazuje jeden ze zavedených funkčních nástrojů, sem tam se něco rozbije a člověk si musí zatraceně dávat bacha, jakou verzi SD zrovna provozuje a co za dokumentaci čte.
Už to tady bylo naznačeno, místo ntpd máme timesyncd, který stejně nefunguje jako plnohodnotný ntp server a dalším takovým má být narazení sudo.. opravdu to potřebujeme? :/
Puvodni idealy systemd - coby inteligentnejsiho spravce sluzeb spatne nebyly. Jenze postupne se z toho stava tezkopadny moloch, ktery se snazi resit a prevzit na sebe uplne vsecko (nejen vlastni spravu behu sluzeb) - a pritom hromada veci nefunguje poradne, jen se stale chrli nove a nove featury. Namisto zdokonalovani tech par existujicich.
To je ale obecny problem s vyvojari - chteji menit svet, ale uz moc nechteji resit problemy, ktere zmenami vyvolaji - kdyz neco v nejakem momente v plnem detailu nedomysli. Lennart Poettering je typicky priklad takoveho cloveka.
Don't freeze system when /etc/mtab is not a symlink
log_error("/etc/mtab is not a symlink or not pointing to /proc/self/mounts. " "This is not supported anymore. " "Please replace /etc/mtab with a symlink to /proc/self/mounts."); freeze_or_reboot();
A jináč bych k tomu ještě podotknul, že před 10+ lety v dobách toho hrozně fuj nemoderního rozbitého initu se věci řešily takhle - přičemž ten systém samozřejmě normálně nabootoval a vyflusnul návod, jak to opravit.
Za dob tzv. moderních Lennartovin se věci řeší tak, že čůráčí hlava zcela bezdůvodně rozbije boot, bez jakékoliv možnosti rescue shellu nebo čehokoliv podobného, a vydává to za přednost. To kdyby tehdy někoho napadlo, tak druhý den už byl od CVS odříznut, protože takový magor bez mozku tam prostě nemá co dělat.
To je tedy pokrok, přátelé.
Četl jsi tu diskusi pod tím? Je tam vysvětlené, proč to systemd dělalo. util-linux v určitých verzích bez symlikového /etc/mtab shodí systemd ve chvíli, kdy se pokusí systemd něco mountovat. Takže asi těžko umožní systemd opravovat /etc, když v té době je /etc read-only. Jakmile tohle bylo opravené v util-linux, tak to systemd už nedělá.
Je to tam vysvětleno. Já jsem si to vysvětlení nevyvěštil z křišťálové koule.
Robustní návrhy čeho? Když nejde udělat remount, tak stejně nic neuděláte.
Samozřejmě, proto nahlásil chybu v util-linux, a dokud to nebylo opravené, tak tam přidal tohle, což vám alespoň řekne, co se děje.
A proč by to do <|> měl někdo remountovat? Stačí ten soubor prostě ignorovat, tak, jako ho již léta ignoruje všechno ostatní. Co mi to jako řekne? Že LP je pyjus čůrus maximus? To už vím dávno. Jinak mě ta informace vůbec nezajímá, mě zajímá to, aby ten systém nabootoval, coz jaksi kdyby bylo hlavním úkolem initu, než z toho ten patlal udělal zblemcaninu s půl milionem řádků.
Už jsem na to jednou odpovídal. Pokud se ta sračka nechá shodit takovou hovadinou, tak je prostě rozbitá. Opět, znova a pomilionté - NIC tam pořádně nefunguje. Žádný fallback, žádné rozumné priority, nic. A mimochodem, tohle celé je úplný nesmysl. On se ve skutečnosti žádný pád nekoná. Ono když si ten bug člověk přečtě, tak tam dotyčný vývojář z Debianu jasně píše, že tam již drahnou dobu mají unit, který to v případě opravuje na symlink. Nic se neshazovalo, nic se nedělo. Rozbilo se to poté, co tam ta vypatlaná hlava Poettering v nové verzi přidala tu kontrolu, která zavolala výtečnou funkci zamrzni().
Ta utilita, která to opravuje na symlink, je v systemd ;-) Jenže ta utilita jaksi nemůže změnit soubor na read-only mountu, a remount na read-write nejde, protože mtab není symlink. A rozbité to bylo všude, kde to nebyl symlink, se systemd to mělo společného jen to, že systemd nahlásilo, o jaký problém jde.
Přečti si ten bug ještě desekrát. A ne, není v systemd. Debian si na to napsal vlastní. Která se spustila POTÉ, co už nic read-only nebylo. Systém normálně bootoval, nic se nehroutilo, nerozbíjelo, nekolabovalo, data nemizela.
Pak přidala kokotí hlava do early bootu v systemd check, který ve fázi, kdy nic opravit nejde, začal toto prodce inteligentně kontrolovat a navrch místo toho, aby aspoň hodil uživatele do rescue shellu, tak místo toho volá funkci zamrzni. Do té doby nikde žádný problém nebyl.
Už mě to tvoje blití z hladu nebaví.
To jistě. Ale nebudu chybu zhoršovat tím, že implementuju funkci "vyfakuj uživatele a zamrzni". Pokud trpím hodně velkým mesiášským syndromem, tak ho můžu dumpnout do rescue shellu. Ale NIKDY žádný soudný člověk kvůli takové krávovině neřešitelným způsobem nerozbije boot systému. To udělá jenom úplný magor. Ta celá funkce reboot_or_freeze() je úplně chorá, to je prostě diagnóza. To můžu udělat, když mám totálně rozbitý filesystém a nechci zlikvidovat zbytky dat. Ano, tam to teoreticky může mít smysl, pokud není jiné řešení. Ale NIKDY ne kvůli tomu, že se mi nelíbí symlink.
Objektivne neexistuje duvod, proc kvuli takove prkotine nenabootovat cely system... to je jeden z cele rady problemu, ktere systemd doprovazi. Ten symlink muze byt (teoreticky) prepsan cimkoliv - takze muzou vznikat akorat nemila prekvapeni. Je vazne rozdil mezi stavem, kdy to funguje "podivne" a kdy to nenabootuje (kvuli kravine) vubec.
To vůbec nemluvím o tom, jak někoho může napadnou vymyslet funkci "zamrzni". Naco bych toho uživatele aspoň dropnul do rescue shellu, že. To je zbytečné, koho by to trápilo, že dotyčný je totálně v řiti. Prostě smůla, nelíbí se mi soubor, tak zamrznu. Skutečně designed by magor.
Computer Hung by Attempt to Turn-on Non-Existent KBD Light
Summer day, summer day, summer day see wheats! Ta dam, ta dam, tadada týdadam...
No to teda. Člověk aby se bál připojit myš - to bude totiž určitě řešeno stejně genitálně.
Prosil se ho o to ten, kdo to tam do distribuce přidal. Mě třeba dost vyhovuje, když po bootu nemusím nastavovat půlku HW znovu. Na Debianu to sysvinit AFAIK dělal taky. Pokud se ti to nelíbí, je tam jeden jasně dokumentovaný parametr, jak to vypnout:
systemd.restore_state=0
Mimochodem fakt pokládáš za chyba Potteringa, že vytuhne dokumentované volání jádra? A po něm chceš, aby jeho software fungoval bezchybně?
Za chybu LP pokládám, že kvůli tomu vytuhne boot. Když to neumí udělat tak, aby se to nestalo, tak ať se do toho prostě nesere. Ať nenastavuje podsvícení, DPI myši, jas displeje, a nechá to nadále utilitám, co to umí dělat lépe a nerozbijí přitom boot.
A to je celé. Tečka. Konec.
Ale on ten systém je normálně funkční i bez posvícení klávesnice. To není problém, kvůli kterému by se měl přestat bootovat. Pokud něco volám tak debilně, že kvůli tomu bootovat přestanu, tak jsem prostě debil, no. Jinak normální člověk, pokud není schopen poznat, jestli ta klávesnice podsvícení má nebo ne, tak se to nesnaží "inteligentně" zapínat.
systemd spouští služby paralelně. Ten backlight má ale nastavené, že to musí skončit před sysinit.target
, a tak na něj systemd čeká.
Mimochodem, opravdu to úplně vytuhne? V nastavení té služby vidím TimeoutSec=90s
, takže pokud vytuhne, tak po 90 sekundách na ní systemd přestane čekat a pokračuje.
Wow, uzasne! Takze ono to startuje veci paralelne, aby mi to usetrilo tri vteriny pri bootu (sporne, kdyz nemam SSD) a pak to boot natahne o 90 vterin timeoutu kvuli nejake blbe naprogramovane picovine, ktera je z jakehosi uplne neznameho duvodu implementovana v initu a ne spoustena napriklad z bashrc. Tedy v optimalnim pripade, kdy to nezavola mrazici funkci.
Kecy! Takže místo toho aby dodělali do systemd patřičné kontroly aby to nespadlo při nevhodném použití klientem (util-linux v tomto případě) tak udělají takovou megaprasárnu? Navíc neúčinnou v případě že dojde ke změně /etc/mtab mezi tou agresivní kontrolou (=megaprasárnou) při bootu a skutečným použitím? To se snad nedá brát vůbec nijak jinak než jako další důkaz že systemd je vyvíjený bandou nekompetentních debilů!
Aha. NIC. Takže při bootu je hrozně důležité hlídat něco, co když po bootu následně změním, tak se nestane NIC. Je to tak důležité, že je naprosto kritické vytuhnout a udělat na uživatele middle finger salute. Ono totiž soubor, co nedělá NIC, je tak kriticky škodlivý, že to uživatel prostě NESMÍ ani opravit přes rescue shell. Designed by magor.
Ano, četl. Správce systemd je jako diagnóza a vysvětlení zcela postačující. Úvaha je asi stejně hodnotná, jako kdyby lékař kontroloval funkčnost přístrojů tím, že se uvidí, jestli to pacienta zabije nebo ne, pokud ano, tak je přístroj vadný a opravíme ho.
Před 18 lety nás na FI MU učili, že v UNIXovýs systémech dělá program jednu věc a tu dělá dobře. Ať už je Systemd jakékoli, vypadá to, že nedělá jednu věc a možná dost často ani správně. Dálé nás učili, že programy musí spolupracovat. Prostě mi to přijde, že jakmile začne Linux ustupovat od základních filozofií, tak je už je jen otázka času, kdy se začne ustupovat od důležitějších filozofií jako je otevřenost.
On trollovat musi, on je to totiz tzv. konzultant, takze to musi vsade zasmradit plkama, aby mohl na potencialni pacienty vytahovat publikacni cinost... :)
Proste to individuum ignorujte, stejne jako toho ms saska. Sice to nepomuze v tom, ze by sem prestali generovat smradek, ale usetrite si cas, nervy a sebeuctu...
Samozřejmě. Všechno to mountování a zjišťování DPI a rozsvěcení podsvícení displeje jsou jenom jednotky, které se spouští ze systemd-initu – úplně stejně, jako všechny ostatní jednotky. Takže pokud administrátor tyhle jednotky nepoužije, nic z toho se dít nebude.
Naopak je to ještě otevřenější, než klasické init.d skripty, protože u těch jsou pokud vím některé části zadrátované napevno v té utilitě spouštěné ze SysVinitu, tj. při startu se toho děje víc, než jen spuštění init.d skriptů. Naproti tomu systemd-init pokud vím řeší jenom meziprocesovou komunikaci a závislosti, pokud nastartujete systemd bez jediné jednotky, nestane se nic a nic se nespustí.
Bohuzel to neni dle mych zjisteni,pravda jak je videt uz z cesty. Vsechny logy musi projit pres journald, ktery je jedinymi "cilem" vsech logu. Zda pak nastavite journald na storage=none a na socketu nechate poslouchat rsyslog, ktery si odtamtud data bude cist je vase vec. Bez journald to ale nepujde.
No, nejpitomější na celém tom SystemD je to, že se mu, Potteringovi, nějak povedlo podchytit psycho-niku, kdy zlikviduje všechnu konkurenci.
Proč, probilla proč, nemůže mět SystemD konkurenci? Ať jse skvělej, nebo špatnej, ať se používá třeba na většině majoritních distribucí, když to třeba takovému RedHatu vyhovuje. Ale proč nemůže být konkurence?
Vždyť i ten balíčkovací systém není jen jeden. A to jsou tak vymazlený nástroje, že se jim vyčítaj už fakt jen mikrobugy.
To je zase nějaká ta vaše mimozemská logika, že? Jediné, co brání konkurenci, je to, že o tom pořád někdo mluví, ale kód nenapíše nikdo. Co konkrétní vám brání napsat si vlastní init? Nebo použít SysVinit? Když se o to pokusíte, objeví se nad barákem černá helikoptéra? Ne, jediné, co vám brání, je to, že byste musel něco udělat.
To by's mohl dát.
Neblázni. Onehdá, když měl taky své dny, tak zasral diskusi o Gimpu u konkurence asi 300 posty na téma, že mi zmizelo ukládání souborů, až si vysloužil vlastní komiks, načež přešel na tom serveru raději do ilegality. :-DDD
„se shim v podstatě přestal vyvíjet“, „Podobný osud zdá se postihl i openrc-settingsd“, „nedostatek zájmu“
Za co z toho může systemd?
Takže zbývá jediná věc: „neustále se měnící chování systemd“. Což brání vytvoření konkurence systemd jak? Také nijak, pokud bude konkurence umět to samé, a navíc se neustále nebude měnit, ostatní určitě sáhnou raději po té konkurenci. Navíc to „neustále se měnící chování“ je nepřesně napsané, ony ve skutečnosti hlavně přibývají nové funkce. Které buď někdo chce používat, takže pokud tomu někdo chce konkurovat, bude těm uživatelům muset nabídnout způsob, jak to řešit, nebo je nikdo používat nechce, a pak se tím konkurence nemusí zabývat.
Takže si můžeme konečně odpovědět, jak systemd likviduje konkurenci – nijak, konkurence se likviduje sama tím, že „se přestala vyvíjet“ nebo že je „nedostatek zájmu“.
Ach jo. Sem ti říkál, že nemáš tu svou logiku zapínat.
SystemD stále mění API; tzn: Nikdo není schopen napsat 100% kompatabilní alternativu; tzn: Nikdo nemůže vzít, a nahradit SystemD za tu alternativu, páč by si to rozbil.
Přidávání nových funkcí vytváří tím větší závislost; tzn: aby někdo naimplementoval 100% kompatabilní náhradu za SystemD, včetně jeho mega featur, je prakticky nemožné, když se to nepovedlo ani Poetteringovi.
(Samozřejmě, když by Poettering dodržel Unixovou filozofii, a SystemD byla skupina malých prográmků, každá se svým vlastním API, a samostatně nahraditelná... Jenže asi se bál konkurence.)
Takže většina vývojářů, místo aby bojovala s hrubou silou tak čeká jak to dopadne.
Takže snad, jako poslední na tomto fóru, pochopíš, jak SystemD likviduje konkurenci. No, držím ti palce.
Nikdo není schopen napsat 100% kompatabilní alternativu; tzn: Nikdo nemůže vzít, a nahradit SystemD za tu alternativu, páč by si to rozbil.
Pěkné, pěkné. Akorát že řeč byla o konkurenci, ne o 100% kompatibilní alternativě.
Navíc, pokud systemd neustále mění API, jak je možné, že uživatelé (tedy programy, které to API využívají) se dokáží neustále tomu API přizpůsobovat?
Řeč je přeci o nahrazení systemd konkurenčním řešením. Takže pokud mám ve své instalaci aplikace A, B, C, které využívají funkce X, Y, Z poskytované systemd, konkurenční řešení pro mé potřeby znamená, že poskytne funkce X, Y, Z se stejným API, které používají ty aplikace A, B, C. Že celý balík systemd poskytuje ještě další funkce Fň a Bž, kterým se třeba mění API, mne vůbec nemusí zajímat.
Přidávání nových funkcí vytváří tím větší závislost
Fakt? Když já si do svého programu přidám novou funkci, stává se tím váš program na této funkci závislý? Jo pardon, to je ta vaše logika z jiného světa. Vězte, že tady na Zemi to funguje jinak. Program se stává na nějaké funkci závislý teprve tehdy, když ji využije.
Samozřejmě, když by Poettering dodržel Unixovou filozofii, a SystemD byla skupina malých prográmků, každá se svým vlastním API, a samostatně nahraditelná...
Samozřejmě, kdybyste alespoň tušil, o čem píšete… Takže, z kolika programů se podle vás skládá systemd?
Takže většina vývojářů, místo aby bojovala s hrubou silou tak čeká jak to dopadne.
Co přesně je ta hrubá síla? „Tady to máte, pokud chcete, můžete to použít?“
Takže snad, jako poslední na tomto fóru, pochopíš, jak SystemD likviduje konkurenci.
Jo jo, snad to pochopím. Jen co pochopím, že konkurence znamená 100% kompatibilní alternativa. Poslyšte, on systemd ale není 100% kompatibilní alternativa k SysVinitu a skriptům, že? Takže systemd vlastně pro SysVinit+skripty není konkurencí. Tak na co si vlastně stěžujete?
Pěkné, pěkné. Akorát že řeč byla o konkurenci, ne o 100% kompatibilní alternativě
A rozbít klienty? Jsi normální?
Navíc, pokud systemd neustále mění API, jak je možné, že uživatelé (tedy programy, které to API využívají) se dokáží neustále tomu API přizpůsobovat?
Protože klienti. Jenže já mám psát alternativu. A co si budem povídat, smyslem alternativy není furt dobíhat nějakou implementaci, která se ani nedá nazvat referenční.
Řeč je přeci o nahrazení systemd konkurenčním řešením. Takže pokud mám ve své instalaci aplikace A, B, C, které využívají funkce X, Y, Z poskytované systemd, konkurenční řešení pro mé potřeby znamená, že poskytne funkce X, Y, Z se stejným API, které používají ty aplikace A, B, C. Že celý balík systemd poskytuje ještě další funkce Fň a Bž, kterým se třeba mění API, mne vůbec nemusí zajímat.
Protože v praxi to takhle není. V praxi balíci nezávisí na nějaké funkcionalitě, ale na systemd, a já nevím, kterou funkcionalitu potřebujou.
A o tom je celá ta konspirace.
Fakt? Když já si do svého programu přidám novou funkci, stává se tím váš program na této funkci závislý? Jo pardon, to je ta vaše logika z jiného světa. Vězte, že tady na Zemi to funguje jinak. Program se stává na nějaké funkci závislý teprve tehdy, když ji využije.
A jak něco takového zjístíš? He?
Samozřejmě, kdybyste alespoň tušil, o čem píšete… Takže, z kolika programů se podle vás skládá systemd?
Z několika. Které nejdou samostatně nahrazovat. A stává se, že v různé verzi je různý počet těchto progámků, a dokonce se i různě jmenujou.
Co přesně je ta hrubá síla? „Tady to máte, pokud chcete, můžete to použít?“
Proč by to klient použil, když už má SystemD? T alternativa nefunguje dobře. Ani nemůže, když dobře nefunguje ani předloha. Jenže tu předlohu už klient má. Jenže to jsem taky psal.
Jo jo, snad to pochopím. Jen co pochopím, že konkurence znamená 100% kompatibilní alternativa. Poslyšte, on systemd ale není 100% kompatibilní alternativa k SysVinitu a skriptům, že? Takže systemd vlastně pro SysVinit+skripty není konkurencí. Tak na co si vlastně stěžujete?
Vždyť už jsem to psal. Normálně by se nic takového nestalo protože SystemD není stabilní. Z nějakého důvodu je SystemD i v tomto stavu nasazován a nahrazuje známá řešení. Když sem napíšeš nějaké věrohodné vysvětlení, proč se tak stalo, budu rád.
Pokud si budeš i nadále vymejšlet takovéhle argumenty a polopravdy, tak di do míst kam slunce nesvítí.
Řeč byla o konkurenci, nikoli o 100% kompatibilní alternativě. Třeba LibreOffice je konkurencí MS Office, přestože není 100% kompatibilní alternativou a nerozbíjí klienty. Je systemd 100% kompatibilní alternativou SysVinitu? Už jsem se na to ptal, odpovědi jsem se nedočkal, přitom napsat „ano“ nebo „ne“ by nemělo být tak těžké. Je systemd konkurencí SysVinitu? Opět jednoduchá otázka.
Protože klienti.
Někam se vám zatoulal přísudek.
Jenže já mám psát alternativu.
Ne, nemáte. Máte psát konkurenční produkt. Což klidně znamená, že napíšete něco totálně nekompatibilního, ale uživatelé to rádi začnou používat, protože to bude mnohem lepší a bude to mít stabilní API.
V praxi balíci nezávisí na nějaké funkcionalitě, ale na systemd
A za to můžou autoři systemd, že to takhle balí autoři distribucí? Co vám brání to balení upravit?
já nevím, kterou funkcionalitu potřebujou
Hlavně že víte, že je to špatně…
A o tom je celá ta konspirace.
Ano, ta je o tom, že když konspirátoři chtějí změnu, musí ji sami udělat. A to je pro konspirátora omezování jeho svobody a znemožnění změny, protože on chce a chce a chce, a to stačí.
Z několika. Které nejdou samostatně nahrazovat.
Proč nejdou samostatně nahrazovat? Můžete uvést konkrétní příklad? Máte třeba server, který funguje jako webserver pro statický web, takže tam máte základní systémový software a Apcha a Sshd. Co konkrétně vám brání systemd tam vůbec nemít?
Proč by to klient použil, když už má SystemD?
Třeba protože by to bylo lepší? To jako podle vás samotná existence systemd způsobila, že už nikdy nevznikne žádný jiný init systém?
T alternativa nefunguje dobře. Ani nemůže, když dobře nefunguje ani předloha. Jenže tu předlohu už klient má.
Když předloha nefunguje dobře, tak se na ní vykašlete a napište konkurenční produkt, který bude fungovat dobře. Nebo si myslíte, že pak lidi budou pořád dál používat ten podle vás špatně fungující systemd? Proč?
Normálně by se nic takového nestalo protože SystemD není stabilní.
Otázka je, co ve vašem výkladu znamená „normálně“ a co „není stabilní“. Linuxové jádro podle vás je stabilní? A pokud ano, mohl byste na konkrétním příkladu nějaké aplikace ukázat ten rozdíl? Například: „Aplikace X volá funkci jádra abc, kterou už navěky může volat s těmito parametry a ta funkce bude dělat pořád to samé, což znamená, že jádro je stabilní. Naproti tomu aplikace X volá funkci systemd efg, kterou už na věky může volat s těmito parametry a ta funkce bude dělat pořád to samé, což by normálně znamenalo, že je systemd stabilní, ale protože je to fuj fuj systemd, je to nestabilní.“
Z nějakého důvodu je SystemD i v tomto stavu nasazován a nahrazuje známá řešení. Když sem napíšeš nějaké věrohodné vysvětlení, proč se tak stalo, budu rád.
To vysvětlení jsem psal už několikrát. Protože systemd v současném stavu je mnohem lepší, než ta předchozí „známá řešení“.
Jirask, co by kdo psal novy init, kdyz nikomu zadny neschazi?My tady na novy init sereme, vcetne systemd. My od systemd chceme jednu jedinou vec: aby nebyl povinny, ale pouze volitelny a aby nevznikal software, ktery na tom sraci je zavisly a bez nej nefunguje, jako pry ted treba Gnome. Pokud nam systemd nebude nikdo nasilim rvat do chrtanu, tak nam to ke stesti uplne bude stacit.
Já ti teda v tomto budu tak trochu odporovat. Já nevidím problém v Poetteringovi. Jako člověk je mi u zadele. Jeho soft, no, jsou i horší. Komu bych to vyčítal jsou hlavně RedHat, Debian, a spol, kteří se z nějakého důvodu zbláznili a nasazujou neozkoušený soft.
Nebo jako myslíš, že je Poettering očaroval, jo? ;-)
Na druhou stranu, já to vidím optimisticky. RedHat v tom vidí nějaký záměr. Debian billví. Takže ono se to usadí, a aspoň se uvolní nika, a z některých těch alternativ, co jsou zmíněné v článku, se vybrousí nová majoritní distribuce (bez SystemD).
Ještě doplním:
Ať už to se SystemD dopadne jakkoliv, já pevně doufám, že se časem, až všeci přejdou na SystemD, objeví alternativa. Vždycky to tak v Linuxu bylo, tak doufám, že to tak bude i u tohodle. Mohlo by tomu nahrávat i to, že se SystemD vendorlockuje na Intely, což se ARMům líbit nebude. Nemýlím-li se, tak na Mac běží LaunchD, Android nevím, ten to má snad staticky linkované...
No bude to ještě zajímavé sledovat.
http://rpmfind.net/linux/rpm2html/search.php?query=systemd
Tady si to muzes najit, ze jsou verse pro ARMv5 az ARMv8
http://archlinuxarm.org/packages
Co mi tedy zbývá, pokud chci mít na laptopu, desktopu i serverech stejný OS?
Doposady mám všude Debian (na serverech stable, jinde mix testing+sid/exp), ale vidím to do budoucna černě a nechci přecházet na nějaké onemanshow distribuce, které moho kdykoli chcípnout...
Co tedy zbývá? Nějaké BSD? Může mi někdo (znalý Debianu a BSD) doporučit konkrétní distribuci, na kterou bude co nejméně bolestivý přechod, bude provozovatelná na thinkpadech, thinkserverech a thinkstations, bude obsahovat aktuální KDE, nějakou rozumnou komunitu?
V tomhle diskusním "humusu" snad první konstruktivní otázka. Jinak mám pocit, že se tady obě strany předhánějí v tom, kdo použije větší demagogii. Jedna strana se chvástá zkušenostmi z velkých produkčních instalací a přitom argumentují zkoumáním logů na produkčním serveru. Že se v dnešní době používají strukturované logy a logy by na serveru neměly zůstat déle než 15 minut (když už nejsou odesílány okamžitě) asi nikdy ani neslyšeli. A to nemluvím o problémech závislostí v init.d. Naprosto si umím představit, že v instalacích s tisíci (někdy na sobě závislými) virtuálními stroji v rámci OpenStacku nebo Dockeru je init.d neřešitelná záležitost.
Druhá strana zas většinou demagogicky obhajuje neobhajitelné (růst a bobtnání systemd), přičemž většina těchto věcí by se dala řešit jednodušeji a lépe a přehlíží to, že zde opravdu RedHat ve svém vlastním zájmu buduje jakousi černou skříňku, která se v budoucnu vymstí a přinese víc problémů než výhod. Osobně mi docela vyhovoval upstart, řešil pěkně závislosti, spuštění služby bylo na pár řádků a vůbec... ;) Ono je otázka, jestli budoucnost nejde spíš směrem CoreOS, etcd (tady lze diskutovat, jak dalece se to podobá registrům ve Windows) a zda pak bude (ve větším měřítku) systemd vůbec potřeba. Většina zdejších diskutérů nechápe to, že RedHat a další nevyvíjí Linux pro ně, ale pro velké internetové poskytovatele a korporace (kteří jim platí) a kteří hostují opravdu tisíce až desetisíce serverů.
Co se týče samotné otázky, tenhle článek mne nakopl, že jsem si konečně nainstaloval do virtuálu FreeBSD (jako server i jako desktop) a začnu přemýšlet o možném přechodu. U serveru to v mnoha případech bude mnohem jednodušší a možná i bezpečnější... Podpora je docela dobrá.
"Že se v dnešní době používají strukturované logy a logy by na serveru neměly zůstat déle než 15 minut (když už nejsou odesílány okamžitě) asi nikdy ani neslyšeli."
Sorry, ale jak tohle řeší to, že se na serveru něco podělá a binární log se nikam neodešle a navíc se poškodí? Navíc takovéto logovaní není ani zdaleka pravidlem.
Jinak jsme asi četli každý jinou diskuzi. Já jsem zaznamenal převážně to, že drtivá většina uznává, že s init systémem bylo potřeba něco udělat, i když v podstatě dosavadní implementace fungovaly. Takže oproti nekritické demagogické straně zastánců (zde reprezentované zejména Jirsákem) odpůrci poukazují zejména na bobtnající moloch, na kterém bude za chvíli závislé kdo co, pokud se přístup zásadně nezmění.
a přitom argumentují zkoumáním logů na produkčním serveru
Takže když nastane nějaká porucha (třeba zrovna se sítí, takže to ty logy ani neodešle), tak se logy na serveru zkoumat nesmí?
Že se v dnešní době používají strukturované logy ... asi nikdy ani neslyšeli.
Slyšeli. Jak to souvisí s tématem?
Apropos journald (http://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) je služba strukturovaného logu, neukládá "anonymní" textové řádky jako staré logy (které se snaží nahradit), ale hromadu polí (http://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html), další lze definovat uživatelsky, lze podle nich přímo pomocí journactl hledat, filtrovat apod. A mimo jiné se chlubí: All objects stored in the journal can be up to 2^64-1 bytes in size.
logy by na serveru neměly zůstat déle než 15 minut
Kdo říkal?
Naprosto si umím představit, že v instalacích s tisíci ... je init.d neřešitelná záležitost.
A on někdo říká, že je povinně nutné na tu instalaci použít init.d?
Tak asi to neni na me, rozhodovat co je sprave a co ne, ze. Ale jedna vec mi neni jasna - proc se zavedlo systemd? Kdyz chci neco zavest, tak bych mel mit duvod. A zatim jsem zadnej rozumnej nejak nevidel. Takze to bude asi moje chyba.
Co se tyce systemd v debianu 8 - vypadla elektrika a rebootoval se mi. Nenabootoval. Mel jsem ve fstab usb disk, kterej jsem mel vytazenej. Proc?
Chtel jsem pridat radek do resolv.conf ... nezabralo mi to. Proc?
Kdyz chci neco zavest, tak bych mel mit duvod. A zatim jsem zadnej rozumnej nejak nevidel. Takze to bude asi moje chyba.
Když já chci něco zavést, tak k tomu mám nějaký důvod. A je mi úplně jedno, jestli vy pro to nějaký důvod vidíte a jestli s ním souhlasíte. Takže chyba je v tom, že si myslíte, že musíte rozumět důvodům, které má někdo jiný.
Co se tyce systemd v debianu 8 - vypadla elektrika a rebootoval se mi. Nenabootoval. Mel jsem ve fstab usb disk, kterej jsem mel vytazenej. Proc?
Těžko říct, když o tom nic nevíme. Jak to souvisí se systemd?
Chtel jsem pridat radek do resolv.conf ... nezabralo mi to. Proc?
Těžko říct, když o tom nic nevíme. Tipoval bych, že proto, že jste ignoroval komentář na začátku souboru, který říká, že nemáte editovat tento soubor, protože bude přepsán, a s vysvětlením, odkud se konfigurace bere. Jak to souvisí se systemd?