abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:55 | Nová verze

    Bylo oznámeno vydání nové verze 8.1 "Hoare" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie). Doprovodný příspěvek na blogu Khronosu rozebírá kódování a dekódování videa pomocí Vulkan Compute Shaders v FFmpeg.

    Ladislav Hagara | Komentářů: 0
    dnes 04:33 | Zajímavý projekt

    Byl představen open-source a open-hardware prototyp nízkonákladového raketometu kategorie MANPADS, který byl sestaven z běžně dostupné elektroniky a komponent vytištěných na 3D tiskárně. Raketa využívá skládací stabilizační křidélka a canardovou stabilizaci aktivně řízenou palubním letovým počítačem ESP32, vybaveným inerciální měřicí jednotkou MPU6050 (gyroskop a akcelerometr). Přenosné odpalovací zařízení obsahuje GPS,

    … více »
    NUKE GAZA! 🎆 | Komentářů: 0
    včera 14:22 | IT novinky

    Vědci z univerzity La Sapienza v Římě vyvinuli systém, který dokáže identifikovat jednotlivce pouze na základě toho, jak narušují signály Wi-Fi. Autoři tuto novou technologii nazvali WhoFi. Na rozdíl od tradičních biometrických systémů, jako jsou skenery otisků prstů a rozpoznávání obličeje, nevyžaduje tato metoda přímý fyzický kontakt ani vizuální vstupy. WhoFi může také sledovat jednotlivce na větší ploše než kamera s pevnou polohou; stačí, je-li k dispozici Wi-Fi síť.

    Ladislav Hagara | Komentářů: 8
    včera 04:22 | Nová verze

    SuperTux (Wikipedie), tj. klasická 2D plošinovka inspirovaná sérií Super Mario, byl vydán v nové verzi 0.7.0. Videoukázka na YouTube. Hrát lze i ve webovém prohlížeči.

    Ladislav Hagara | Komentářů: 7
    včera 03:11 | Zajímavý projekt

    Ageless Linux je linuxová distribuce vytvořená jako politický protest proti kalifornskému zákonu o věkovém ověřování uživatelů na úrovni OS (AB 1043). Kromě běžného instalačního obrazu je k dispozici i konverzní skript, který kompatibilní systém označí za Ageless Linux a levné jednodeskové počítače v ceně 12$ s předinstalovaným Ageless Linuxem, které se chystají autoři projektu dávat dětem. Ageless Linux je registrován jako operační

    … více »
    NUKE GAZA! 🎆 | Komentářů: 8
    15.3. 15:33 | Humor

    PimpMyGRC upravuje vzhled toolkitu GNU Radio a přidává alternativní barevná témata. Primárním cílem autora bylo pouze vytvořit tmavé prostředí vhodné pro noční práci, nicméně k dispozici je nakonec celá škála barevných schémat včetně možností různých animací a vizuálních efektů (plameny, matrix, bubliny...), které nepochybně posunou uživatelský zážitek na zcela jinou úroveň. Témata jsou skripty v jazyce Python, které nahrazují

    … více »
    NUKE GAZA! 🎆 | Komentářů: 3
    15.3. 14:33 | Nová verze Ladislav Hagara | Komentářů: 1
    15.3. 12:33 | Zajímavý projekt

    FRANK OS je open-source operační systém pro mikrokontrolér RP2350 (s FRANK M2 board) postavený na FreeRTOS, který přetváří tento levný čip na plně funkční počítač s desktopovým uživatelským rozhraním ve stylu Windows 95 se správcem oken, terminálem, prohlížečem souborů a knihovnou aplikací, ovládaný PS/2 myší a klávesnicí, s DVI video výstupem. Otázkou zůstává, zda by 520 KB SRAM stačilo každému 😅.

    NUKE GAZA! 🎆 | Komentářů: 4
    14.3. 22:55 | IT novinky

    Administrativa amerického prezidenta Donalda Trumpa by měla dostat zhruba deset miliard dolarů (asi 214 miliard Kč) za zprostředkování dohody o převzetí kontroly nad aktivitami sociální sítě TikTok ve Spojených státech.

    Ladislav Hagara | Komentářů: 2
    14.3. 21:33 | Nová verze

    Projekt Debian aktualizoval obrazy stabilní větve „Trixie“ (13.4). Shrnuje opravy za poslední dva měsíce, 111 aktualizovaných balíčků a 67 bezpečnostních hlášení. Opravy se týkají mj. chyb v glibc nebo webovém serveru Apache.

    |🇵🇸 | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (16%)
     (7%)
     (0%)
     (11%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1095 hlasů
     Komentářů: 26, poslední 12.3. 08:56
    Rozcestník

    Pythoní tipy triky - daemoni

    1.9.2006 09:14 | Přečteno: 1372× | Linux | Výběrový blog

    Včera jsem psal o komunikaci pythonu s jabberem. Jedná se o moc neprobírané téma na českém internetu a teď zabruslíme do dalšího takového tématu a to jsou daemoni.

    Nejdříve trochu teorie o init scriptech a o tom co to vlastně daemon je. Když spustíme nějaký program končící na d, většinou se jedná o tzv. daemona. Není to prakticky nic jiného než program, který nevypisuje data na standardní výstup, ale někam jinam kam my chceme.. pokud vůbec. Tento program si na nějaké místo zapíše svůj pid (identifikační číslo procesu). Běžně se ukládá do /var/run. Initscripty, které najdeme snad v každé distribuci pak pracují s s těmito *.pid soubory a podle toho jaké jim pošleme parametry proces buď jemně nebo tvrdě zakillují nebo mu pošlou nějaké parametry, které ovlivní jeho chod nebo udělají cokoli jiného. Důležité pro nás dneska bude vytvoření procesu, který nebude vypisovat nic na standardní výstup a bude si hezky potichu dělat to své. Využití najdeme například u jabber bota :)

    Dlouho jsem se snažil zabít standardní výstup u programu dokud jsem nenašel stránku kde se využívala fce os.fork(). Je to fce, která vytvoří další proces stejného programu. Ten proces využívá standardní výstup toho prvního procesu a tak, když teď ten první zabijeme, tak ten druhej už nebude mít kam vypisovat data a poběží hezky na pozadí :) Nemusí se to zdát jako zrovna nejčistější řešení, ale pro naši věc to určitě bude stačit. Možná bych měl ještě říct, že na linku níže je příklad kde se vytvářejí dva forky. Podle mě to je zbytečné, ale možná se najde někdo kdo to nějak rozumně vysvětlí.

    Teorie bylo už dost a teď praxe.

    import os,sys
    
    try:
    	pid = os.fork()#vytvoříme child proces
    	if pid > 0:#
    		#zabijeme rodiče
    		sys.exit(0)
    except OSError, e:#pokud se něco zvrtlo napíšeme o tom
    	print >>sys.stderr, "fork nevytvořen: %d (%s)" % (e.errno, e.strerror)
    	sys.exit(1)
    
    while 1:
    	pass
    

    Takže první co uděláme je, že vytvoříme náš nový "fork". Ten starý rodičovský "fork" při úspěšném vytvoření zabijeme. Když se něco nepovede tak o tom dáme vědět na stderr. Dále pak následuje už kód našeho daemona. Na spouštění a zastavování služby, by jsme si měli napsat nějaký initscript, ale o tom až jindy. Kdo vládne angličtinou tak má jeden initscript na pydaemony na linku níže. Není snad problém ho upravit. Nakonec bych ještě doplnil, že pid, který získáme si musíme někam zapsat pokud sním chceme pracovat později v initsciptu.

    Web kde jsem našel tuto metodu
    Cx's blog        

    Hodnocení: 75 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    1.9.2006 09:56 myšák | skóre: 26 | blog: EmentuX | Ostrava
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni

    Možná teď říkám úplnou blbost, ale nevznikne ti zabitím "parent_processu" zombík? Není čistější řešení prostě přesměrovat tomu původnímu skriptu standardní výstup do /dev/null?

    Je nesmírně těžké být idiotem, konkurence je obrovská...
    1.9.2006 10:06 Creckx | skóre: 23 | blog: cxblog | Lanškroun
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni
    Zombík se z něj nestane. S tím přesměrováním jsem to zkoušel dlouho a různými způsoby, ale nakonec jsem to vzdal.
    Můj blog Pokud máte taky blog, můžeme vyměnit odkazy :)
    Marek Bernát avatar 1.9.2006 10:19 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni
    Odporúčam prečítať tento FAQ. Okrem iného aj o dvoch forkoch. A nenechať sa zmiasť tým, že je to pre C ;-)
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Jardík avatar 1.9.2006 11:42 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni
    Pokud chcete radu, v c existuje funkce freopen, ktere muzete dat jako parametr stdout nebo stderr a presmerovavat treba do souboru.
    Věřím v jednoho Boha.
    1.9.2006 12:12 Creckx | skóre: 23 | blog: cxblog | Lanškroun
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni
    O tykání se tu už mluvilo... o to to je horší když si píšem na jabberu! Že to je v C neznamená že to bude v Pythonu, ale porozhlídnu se.
    Můj blog Pokud máte taky blog, můžeme vyměnit odkazy :)
    1.9.2006 15:16 myšák | skóre: 26 | blog: EmentuX | Ostrava
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni

    No, v Pythonu zrovna moc neprogramuju, ale teoreticky by se dalo použít tohle, ne?

    Je nesmírně těžké být idiotem, konkurence je obrovská...
    1.9.2006 15:48 Creckx | skóre: 23 | blog: cxblog | Lanškroun
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni
    Pořád zůstává v konsoli..
    Můj blog Pokud máte taky blog, můžeme vyměnit odkazy :)
    1.9.2006 15:19 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni
    1. místo sys.exit() se tuším doporučuje os._exit(), aby se např. stdout buffery apod flushovaly jen jednou.

    2. ještě se doporučuje detach z controlling tty, pomocí os.setsid()

    3. je ještě "slušnost" pro daemony udělat chdir("/"), a expliciě zavřít stdin, stdout, a stderr; moc sice nevím proč ale dělá se to..
    Táto, ty de byl? V práci, já debil.
    1.9.2006 15:47 Creckx | skóre: 23 | blog: cxblog | Lanškroun
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni

    ad 3: V příkladě na tom linku to dělaj. Ale nepochopil jsem proč a funguje to v pohodě i bez toho.

    Můj blog Pokud máte taky blog, můžeme vyměnit odkazy :)
    Mikos avatar 1.9.2006 16:27 Mikos | skóre: 34 | blog: Jaderný blog | Praha
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni
    Však už ti sem někdo vysvětlení dával (je tam vysvětleno i proč se správně dělají dva forky), stačilo se na ten odkaz podívat:
    1. fork() so the parent can exit, this returns control to the command line or shell invoking your program. This step is required so that the new process is guaranteed not to be a process group leader. The next step, setsid(), fails if you're a process group leader.
    2. setsid() to become a process group and session group leader. Since a controlling terminal is associated with a session, and this new session has not yet acquired a controlling terminal our process now has no controlling terminal, which is a Good Thing for daemons.
    3. fork() again so the parent, (the session group leader), can exit. This means that we, as a non-session group leader, can never regain a controlling terminal.
    4. chdir("/") to ensure that our process doesn't keep any directory in use. Failure to do this could make it so that an administrator couldn't unmount a filesystem, because it was our current directory.

      [Equivalently, we could change to any directory containing files important to the daemon's operation.]
    5. umask(0) so that we have complete control over the permissions of anything we write. We don't know what umask we may have inherited.

      [This step is optional]
    6. close() fds 0, 1, and 2. This releases the standard in, out, and error we inherited from our parent process. We have no way of knowing where these fds might have been redirected to. Note that many daemons use sysconf() to determine the limit _SC_OPEN_MAX. _SC_OPEN_MAX tells you the maximun open files/process. Then in a loop, the daemon can close all possible file descriptors. You have to decide if you need to do this or not. If you think that there might be file-descriptors open you should close them, since there's a limit on number of concurrent file descriptors.
    7. Establish new open descriptors for stdin, stdout and stderr. Even if you don't plan to use them, it is still a good idea to have them open. The precise handling of these is a matter of taste; if you have a logfile, for example, you might wish to open it as stdout or stderr, and open `/dev/null' as stdin; alternatively, you could open `/dev/console' as stderr and/or stdout, and `/dev/null' as stdin, or any other combination that makes sense for your particular daemon.
    CETERUM CENSEO DRM ESSE DELENDAM Ostatně soudím, že DRM musí být zničeno!
    Mikos avatar 1.9.2006 16:31 Mikos | skóre: 34 | blog: Jaderný blog | Praha
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni
    Ještě podotýkám, že v skriptu z ASPN Python Cookbook (jak jsem na něj dával odkaz níže) všechny tyto kroky činí... možná to tak je i v tom tvém původním odkazu v blogpostu, nevím, na ten sem nekoukal...
    CETERUM CENSEO DRM ESSE DELENDAM Ostatně soudím, že DRM musí být zničeno!
    Luk avatar 1.9.2006 20:17 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni
    je ještě "slušnost" pro daemony udělat chdir("/"), a expliciě zavřít stdin, stdout, a stderr; moc sice nevím proč ale dělá se to..
    Přechod na / je kvůli tomu, že tento adresář je vždycky k dispozici. Jiný být nemusí, třeba po chrootu.

    Zavírání standardních I/O zase souvisí s podstatou démona, který by neměl mít žádnou vazbu na terminál. Kdyby se to neudělalo a démon by se spustil z terminálu, pořád hrozí, že tam může chrlit nějaké výstupy nebo odtud něco číst.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    1.9.2006 20:25 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni
    A i když to dělat nebude, je tu ještě jeden problém: pokud takového démona spustíte na vzdáleném počítači z SSH session, po odhlášení zůstane spojení "viset" a je potřeba ssh klienta odstřelit signálem.
    Mikos avatar 1.9.2006 15:27 Mikos | skóre: 34 | blog: Jaderný blog | Praha
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni
    Tady máš návod (a hotový skript) jak to udělat správně: ASPN : Python Cookbook : Creating a daemon the Python way
    CETERUM CENSEO DRM ESSE DELENDAM Ostatně soudím, že DRM musí být zničeno!
    1.9.2006 15:51 Creckx | skóre: 23 | blog: cxblog | Lanškroun
    Rozbalit Rozbalit vše Re: Pythoní tipy triky - daemoni
    Obdoba toho co se nachází v tom anglickym návodě.
    Můj blog Pokud máte taky blog, můžeme vyměnit odkazy :)

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.