abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:55 | IT novinky

    Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.

    Ladislav Hagara | Komentářů: 4
    dnes 11:44 | Zajímavý software

    NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 1
    dnes 10:55 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.

    Ladislav Hagara | Komentářů: 0
    včera 20:55 | IT novinky

    IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.

    Ladislav Hagara | Komentářů: 0
    včera 10:44 | Zajímavý článek

    Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.

    Ladislav Hagara | Komentářů: 32
    včera 01:00 | Nová verze

    Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    včera 00:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) nová verze 2024.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    5.6. 16:44 | IT novinky

    Počítačová hra Tetris slaví 40 let. Alexej Pažitnov dokončil první hratelnou verzi 6. června 1984. Mezitím vznikla celá řada variant. Například Peklo nebo Nebe. Loni měl premiéru film Tetris.

    Ladislav Hagara | Komentářů: 10
    5.6. 10:44 | Nová verze

    MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.23.0. V přehledu novinek je vypíchnuta podpora dynamických USB zařízení nebo nové moduly openamp, tls a vfs.

    Ladislav Hagara | Komentářů: 0
    5.6. 10:22 | Nová verze

    Canonical vydal Ubuntu Core 24. Představení na YouTube. Nová verze Ubuntu Core vychází z Ubuntu 24.04 LTS a podporována bude 12 let. Ubuntu Core je určeno pro IoT (internet věcí) a vestavěné systémy.

    Ladislav Hagara | Komentářů: 2
    Rozcestník

    Dotaz: Cron - nespouštět novou instanci

    16.9.2011 09:16 Standa N.
    Cron - nespouštět novou instanci
    Přečteno: 265×

    Pouštím v CRONu každé 2 minuty úlohu, která zpracovává poměrně složitý SQL job nad Oracle DB.

    */2 06-18 * * 1-5 su - oracle -c "sqlplus @/usr/local/bin/job.sql"

    Job běží cca 10-20 sekund a čas si loguji do DB.
    Bohužel při extrémním zatížení DB (které neovlivním) běží skript i 5 minut.

    OTÁZKA:
    Mohu nějak zařídit, aby se úloha v cronu nespustila znovu, dokud nedoběhla její předchozí instance?
    Něco podobného jako je ve WIN-plánovači úloh.
    Jediné co mne napadá, že si budu ukládat a hlídat "běží/neběží" až v DB.

    Díky, Standa


    Řešení dotazu:


    Odpovědi

    16.9.2011 10:07 David Karban | skóre: 12 | blog: DK
    Rozbalit Rozbalit vše Re: Cron - nespouštět novou instanci
    Zdravím,

    nestačí na toto jen obyčejný zámek realizovaný souborem?

    Na začátku skriptu si otestujete, jestli existuje zámek, pokud ano tak skript ještě běží. Pokud ne tak ho vytvoříte a na konci cronu jej smažete. Má to ale háček v tom, že když skript spadne, tak neodstraní zámek. To se dá vyřešit třeba tak, že v zámku máte uloženo PID procesu co běží a na začátku provedete i test zda skutečně běží.

    Stejně tak se dá zámek udělat přímo v databázi.
    16.9.2011 10:36 Standa N.
    Rozbalit Rozbalit vše Re: Cron - nespouštět novou instanci

    Díky,
    právě - jediné čeho jsem se bál je situace, kdy by skript padnul, nebo by ho někdo killnul.
    Zkusím to nějak realizovat, Díky.

    16.9.2011 12:21 l4m4
    Rozbalit Rozbalit vše Re: Cron - nespouštět novou instanci
    Pokud skript může padat, nedávej zaykání do něj, ale do nějakého wrapperu (který navíc pomocí trap po sobě může vyčistit i v případě ukončení signálem - kromě KILL samozřejmě).
    16.9.2011 11:16 jekub
    Rozbalit Rozbalit vše Re: Cron - nespouštět novou instanci
    Proč si úlohu nenaplánujete přímo v databázi (dbms_job, dbms_scheduler)?
    16.9.2011 12:28 Standa N.
    Rozbalit Rozbalit vše Re: Cron - nespouštět novou instanci

    Aha, taková možnost mne ani nenapadla - SQL umím obstojně, ale nejsem ORACLE specialista.

    Je tam někde možnost spustit max. jednu instanci?
    Syntaxi si dohledám, díky.

    16.9.2011 13:42 jekub
    Rozbalit Rozbalit vše Re: Cron - nespouštět novou instanci
    pokud je interval spouštění kratší než doba běhu, tak...
    drop table t;
    create table t(sid number,dt date,descr varchar2(10));
    
    create or replace procedure p is
    begin
    	insert into t values(sys_context('userenv','sid'),sysdate,'start');
    	dbms_lock.sleep(90);
    	insert into t values(sys_context('userenv','sid'),sysdate,'stop');
    end;	
    /
    
    var job number
    exec dbms_job.submit(:job,'begin p;end;',sysdate,'sysdate+1/24/60')
    commit;
    
    ...
    
    select sid,to_char(dt,'DD.MM.YYYY HH24:MI:SS'),descr from t order by dt
    
    157	16.09.2011 13:32:32	start
    157	16.09.2011 13:34:02	stop
    157	16.09.2011 13:34:02	start
    157	16.09.2011 13:35:32	stop
    157	16.09.2011 13:35:32	start
    157	16.09.2011 13:37:02	stop
    
    exec dbms_job.remove(:job)
    drop procedure p;
    drop table t;
    
    
    16.9.2011 14:20 drunkezz | skóre: 34 | blog: kadeco
    Rozbalit Rozbalit vše Re: Cron - nespouštět novou instanci
    alebo priamo do skriptu spravit podmienku

    cize zistit si PID beziaceho job.sql..a vzdy ked sa uloha z kronu spusti tak najprv skontroluje ci bezi alebo nebezi predchadzajuca uloha....ja to robim tak.. D.
    17.9.2011 11:57 Jooky (inactive) | skóre: 39 | blog: Jooky | Bratislava
    Rozbalit Rozbalit vše Re: Cron - nespouštět novou instanci
    Ja na podobne pripady pouzivam vyspelejsi "fcron". Jeden s viacerych parametrov, ktore ma je moznost "serial". Job oznaceny ako serial, moze bezat len raz, aj ked podla planovania by sa mal pustit znova ... no ak je moznost to pustat rovno v DB, tak ja by som pouzil tu moznost.

    Založit nové vláknoNahoru

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

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