Posts with tag Počítače
Běžná práce se systemd
Stejně jako v předchozích variantách service managerů existuje i v systemd program, pomocí kterého se služby spouští, zastavují, restartují nebo se načítá jejich konfigurace za běhu. Pro tyto a další úkony slouží aplikace systemctl:
Spuštění služby, pokud již běží, nic se neděje:
systemctl start mysqld.service
Zastavení služby, pokud je již zastavena, nic se neděje:
systemctl stop mysqld.service
Restart a podmíněný restart služby; drůhý z uvedených bude proveden pouze pokud služba běží, tedy nespustí zastavenou službu, jako by to udělal první z nich:
systemctl restart mysqld.service
systemctl try-restart mysqld.service
Znovu-načtení konfigurace:
systemctl reload mysqld.service
Spouštět službu na defaultních runlevelech po startu:
systemctl enable mysqld.service
Nespouštět službu automaticky po startu:
systemctl disable mysqld.service
Zjištění, zda je služba automaticky spouštěna po startu:
systemctl is-enabled mysqld.service
Přepnutí do runlevelu 3:
systemctl isolate multi-user.target
systemctl isolate runlevel3.target
Přepnutí do runlevelu 5:
systemctl isolate graphical.target
systemctl isolate runlevel5.target
Výpis všech služeb a jejich stavů:
systemctl list-units
Znovu-načtení konfigurace démona, důležitý krok po úpravě unit souborů:
systemctl daemon-reload
Pro zpětnou kompatibilitu systemd podporuje i dřívější způsob provádění těchto operací - tedy pomocí programů service, chkconfig apod., nicméně preferovaná je novější varianta.
Pokud jste si vyzkoušeli například příkaz systemctl enable, všimli jste si, že systemd hojně pracuje se symbolickými odkazy. Například instalace služby po startu znamená přidání symbolického odkazu na příslušný service file do adresáře cíleného runlevelu, který končí příponou "target". Pokud pochopíte tento celkem jednoduchý princip, nic vám nebrání vytváření vlastních symbolických odkazů manuálně, tedy bez programu systemctl.
Jak ze systemd dostat více informací
Pokud se dostanete tak daleko, že bude te upravovat nějakou službu, například její unit soubor, případně vytvářet službu novou, bude se vám hodit trochu ukecanější systemd. To v GRUBu zařídíme přidáním následujících parametrů do příkazu načtení jádra:
systemd.log_level=debu systemd.log_target=kmsg
v případě GRUB 2 můžeme nastavit proměnnou v souboru /etc/default/grub:
GRUB_CMDLINE_LINUX="systemd.log_target=kmsg systemd.log_level=debug"
add comment
view posted comments (0)
Démonizace po startu a zrychleni bootování
V jednom z předešlých dílů seriálu jsem se zmínil o PID a PPID nově spuštěných procesů. Pokud spouštíme démona, chceme ho vyvázat ze stromu procesů, aby nebyl nijak ovlivněn procesem, který ho spustil. Tomu říkáme démonizace, přičemž je dobré změnit i aktuální pracovní adresář a ignorovat signály týkajicí se práce v terminálu. Ukázkovou démonizaci můžeme vidět na následujícím kódu, který je vypůjčen z implementace lighttpd, jednoduchého http serveru.
signal(SIGTTOU, SIG_IGN);
signal(SIGTTIN, SIG_IGN);
signal(SIGTSTP, SIG_IGN);
if (0 != fork()) exit(0);
if (-1 == setsid()) exit(0);
signal(SIGHUP, SIG_IGN);
if (0 != fork()) exit(0);
if (0 != chdir("/")) exit(0);
Jak vidíme, klasická démonizace navíc obsahuje tzv. double-fork, tedy celkem dvakrát se spouští nový proces se všemi důsledky pro výkon. Rodičovský proces vždy končí s návratovým kódem 0, což je již na první pohled neefektivní z hlediska výkonu (uvědomme si, kolikrát se daná procedura provádí během jednoho bootu), ale také nám dost znesnadňuje kontrolu inicializace démona. V mnoha případech je totiž načítání konfigurace a další inicializační činnost prováděna až v démonizovaném procesu.
Pokud inicializace selže, démon není spuštěn, nicméně rodičovský proces při démonizaci již vrátil nulový návratový kód, tedy hlásil úspěšné spuštění. Tento problém je většinou pomíjen a je pouze na init systému, aby si pomocí pid souboru dohledal, že efektivní proces daného démona již neběží a zaujal příslušná opatření.
Tam, kde by nesprávný návratový kód znamenal větší potíže, je potřeba vytvořit IPC komunikaci mezi novým procesem a původním rodičem, což přináší další nemalé zásahy do kódu démona. Využít můžeme například dbus nebo komunikaci pomocí socketů, nicméně asi cítíme, že to všechno by bylo docela zbytečné, pokud bychom měli lepší způsob, jak se vyvázat z terminálu, resp. od rodičovského procesu.
systemd a démonizace
Nejnovější implementace procesu init spatřilo světlo světa v roce 2010 a jmneuje se systemd. Označení init systém vychází z historického označení systémů sysvinit, proto se pokusím nadále používat obecného označení systémový manažer a manažer služeb (system and service manager).
systemd dokáže používat i starší skripty používané pro Upstart nebo System V. Nicméně pro plné využití je doporučeno vytvořit nativní konfigurační soubory, tzv. Unit files.
Zkusme vzít například lighttpd, jednoduchou implementaci http démona. Ten používá ukázkovou démonizaci pomocí double-fork metody. systemd dokáže takovou implementaci vzít bez změn a díky své vnitřní logice pozná hlavní proces od rodičovského (v tomto případě zůstane běžící pouze jeden, přičemž rodičovské jsou ukončeny). Tento proces potom stráží a případně restartuje službu, pokud hlavní proces neočekávaně skončí. Nativní Unit file pro lighttpd se zachovanou démonizací i s definicí konfiguračního souboru pro démona vypadá následovně:
[Unit] Description=Lightning Fast Webserver With Light System Requirements After=syslog.target network.target [Service] Type=forking PIDFile=/var/run/lighttpd.pid EnvironmentFile=-/etc/sysconfig/lighttpd ExecStart=/usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf [Install] WantedBy=multi-user.target
Všimněme si typu služby "forking", která právě definuje, že démon používá démonizaci pomocí double-fork. systemd nicméně dovoluje (a dokonce doporučuje, pokud je to možné) používat spouštění bez démonizace, tedy pouze v jednom procesu. lighttpd démon nám dovoluje spuštění na popředí pomocí přepínače -D, kdy se démonizace neprovede a můžeme tak démona snáze ladit. V případě systemd můžeme tento mód použít a místo "forking" definovat službu jako "simple", což je výchozí hodnota, takže to nemusíme do Unit souboru vůbec uvádět. Výsledný soubor tedy bude vypadat následovně:
[Unit] Description=Lightning Fast Webserver With Light System Requirements After=syslog.target network.target [Service] PIDFile=/var/run/lighttpd.pid EnvironmentFile=-/etc/sysconfig/lighttpd ExecStart=/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf [Install] WantedBy=multi-user.target
Čeho jsme docílili? Tak zejména systemd nemusí zjišťovat, který proces je výkonný pomocí pid souboru nebo jiného mechanizmu, protože je ve skutečnosti spuštěný všehovšudy pouze jeden proces. Zároveň neprovádíme démonizaci, což znamená ušetření určitého výpočetního času.
Jednoduché je i reportování či případné ukončení služby a správné vrácení návratové hodnoty v případě, že inicializace démona neproběhne v pořádku. A v neposlední řadě si můžeme (pokud by systemd byl používán na všech systémech, které používají našeho démona) ušetřit čas při programování a ladění démona. Při spuštění se o veškerou démonizaci postará systemd.
Výkonnostní srovnání Fedora 15 s Gnome 3 a Ubuntu 11.04 s Unity
http://www.phoronix.com/scan.php?page=article&item=fedora15_v_ubuntu1104&num=1
Hrozivá statistika zabezpečení počítačů
Dostal jsem se k tomu čistě náhodou - nejedná se o velmi reprezentativní statistiku, ale pouze o anketu na serveru computerworld.cz. O co jde? Otázka zněla: "Jak máte zabezpečen přístup k počítači?", přičemž na ní do této chvíle odpovědělo 230 čtenářů, podle zaměření portálu předpokádám především technicky založených.
A jaké byly výsledky? Použití čipových karet pro zabezpečení přístupu bylo uvedeno pouze v 1%, což nebylo překvapením. Možná o trochu zajímavější bylo použití biometrických dat v rozsahu 8%, ale vzhledem k rozšíření čtečky otisku prstů ani tohle není příliš nečekané. Co mě ale překvapilo nejvíc, bylo "žádné zabezpečení" u celých 40% a to znovu opakuji - u skupiny uživatelů, kteří jsou vesměs více než počítačově gramotní a často se dokonce jedná o lidi pracující v IT.
Pokud by většina z takových počítačů nebyla připojena k internetu, nebyl by to takový průšvih, nicméně kdo dnes nemá na počítači přístup k internetu?
Můžeme se bavit o kvalitě hesel a jejich nejlepší uložení, ale přitom útočníkům necháváme otevřená vrátka dokořán.. Přijde to jen mě nebo skutečně tolik lidí na zabezpečení naprosto kašle?
Jen pro pořádek - zbytek, tedy zhruba polovina uživatelů uvedla jako způsob svého zabezpečení heslo.
Cheet sheets - GDB příkazy, Vim, Latex
Důležité věci je dobré mít vždy po ruce. V mém případě je to mimojiné několik stručných, ale pro běžné použití dostatečně obsáhlých cheet sheetů. Některé v PDF pro vytisknutí, některé webové, vhodnější pro fulltext:
- GDB cheet sheet v PDF: http://users.ece.utexas.edu/~adnan/gdb-refcard.pdf
- GDB cheet sheet na webu: http://www.yolinux.com/TUTORIALS/GDB-Commands.html
- Vim cheet sheet na webu: http://www.worldtimzone.com/res/vi.html
- LaTeX cheet sheet v PDF: http://users.ece.utexas.edu/~adnan/latex-refcard.pdf
- CVS cheet sheet v PDF: http://www.bravegnu.org/cvscheat/cvscheat.pdf
- Git cheet sheet v PDF: http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf
Nabídka domény 2. řádu zdarma - unikátní způsob růstu ekonomiky
Říká vám něco stát Tokelau? Nejste sami. Jedná se o ministát v jižním pacifiku, rozkládající se na ostrově o rozloze asi 10km2 a obývá je necelých 1500 obyvatel.
Jako každý stát má ale nárok na vlastní doménu nejvyššího řádu, v tomto případě .tk. A protože díky malému počtu obyvatel není naprostá většina domén 2. řádu využita, rozhodl se tento malý stát rozdávat tyto domény zdarma a udělat si tak reklamu po celém světě. Však kdo by nechtěl mít svou doménu? Krom toho údajně tento krok pomohl zvýšit HDP o 10%. Ať tak nebo tak, službu www.dot.tk jsem si vyzkoušel i já.
Zkusil jsem si zaregistrovat doménu pod svým jménem, tedy janhorak.tk. V praxi to funguje tak, že daná doména je pouze zástupcem pro jinou, často komplikovanější URL. Konkrétně je na doméně umístěna jednoduchá stránka s framem, ve kterém se nachází původní stránka. Z hlediska SEO tedy nic moc zajímavého, ale jako zástupce pro složitou adresu ideální.




