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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 0
včera 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 16
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 2
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
2.12. 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 767 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Jak dlouho je proces v read()?

xvasek avatar 7.12.2010 16:02 xvasek | skóre: 21 | blog: | Zlín
Jak dlouho je proces v read()?
Přečteno: 304×
Ahojte,

mám před sebou problém, kdy potřebuju zabít instance serveru (procesy), které dlouho nic nedělají. Server typicky volá read(), ve kterém je "zaseknutý" dokud nedostane data a jakmile je dostane, tak je zpracuje, něco udělá a pak zase visí v read(). Představoval bych si to tak, že např. každou hodinu poběží cronjob, který projde procesy serveru a ty, které jsou v read() už více než čtyři hodiny, tak zabije. Dá se nějak poznat, kdy (nejlíp v sekundách od začátku epochy) ten proces zavolal read(), ve kterém teď visí, popřípadě kolik sekund už tam visí doteď?

Předem díky.

Odpovědi

7.12.2010 16:45 psonek | skóre: 20 | blog: psonek
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
Pred read() nekam zapsat svuj PID a akt. cas, po dokonceni readu zase zapsat, ze uz se operace dokoncila.

V tom cronjobu pak precist PIDy a podle casu je pozabijet.

Jinak read() operace se da prerusit z jineho vlakna pres pthread_kill() a nebo je mozne pouzit async io. Externi zabijec je zajimavej, ale spis by se mel korektne ukoncit sam server podle me.
xvasek avatar 7.12.2010 18:02 xvasek | skóre: 21 | blog: | Zlín
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
Aha, to jsem mohl napsat do dotazu - server je closed-source. Vím o něm, že jej můžu bezpečně zabít přes kill -15. Ono je to v praxi tak, že chci implementovat automatické odpojování uživatelů při nečinnosti, protože nepřítomnost komunikace se rovná tomu, že uživatel s daným oknem nepracuje. Výrobce tuto funkci neplánuje, tak jsem chtěl vzít spravedlnost do vlastních rukou. Taky by mi to vyřešilo mé problémy s freetds, protože to se dostane do stejného stavu, pokud se restartuje MSSQL server. (Timeouty freetds mám nastavené, ale nepomáhá to.)
7.12.2010 16:52 lofcek
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
Myslim, ze takto moze program napisat iba velmi neskuseny programator (po slovensky blb) a takyto program moze nainstalovat iba velmi neskuseny administrator (do slovenciny radsej neprekladam).

Nie .. prenositelny a jednoduchy sposob ako toto spoznat neexistuje. Zrejme by sa to cez velke hacky dalo zistit, ale myslim, ze ovela vhodnejsie je autora tohto programu kopat do zadnej casti tak dlho, kym to neopravi.

Tento sposob opravy ma mnohe vyhody - zlepsuje prenositelnost kodu, ma mensie hardvarove naroky a znamena aj jednoduchsiu administraciu systemu.
stativ avatar 7.12.2010 16:54 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
Určitě by to šlo přes profiler. To je ale blbost, protože ten běh nehorázně zpomalí.

Já bych na to šel cestou LD_PRELOAD. Vytvořil bych si knihovnu s fcí read(), která by někam uložila záznam o čase jejího zavolání. Po jejím dokončení by se zase záznam smazal.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
xvasek avatar 7.12.2010 18:05 xvasek | skóre: 21 | blog: | Zlín
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
Zajímavý nápad, ale myslel jsem, že by to mohlo jít jednoduššeji z té hromady čísílek, která jsou v souborech v /proc/PID, každopádně toto vypadá taky schůdně.
rADOn avatar 7.12.2010 19:29 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
Jestli ten server pro kazde spojeni spawnuje novy pracovni podproces, stacilo by nastavit mu nejaky rozumny cas na zivot pres ulimit nebo proste signal na budik.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
xvasek avatar 7.12.2010 21:01 xvasek | skóre: 21 | blog: | Zlín
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
Nene, takto to nejde. Je mi jedno, kolik si proces vezme zdrojů. Velký proces, který pořád sedí na CPU a pořád komunikuje, je "dobrý", naopak malý proces, který nic dlouhodobě nedělá, je "špatný" - bere totiž licenci ze serveru.

Jinak pokud by to pomohlo, tak to celé běží přes inetd / xinetd, ale tam jsem se díval a ten tuto funkci nepodporuje - otevře socket, přilepí vstupy / výstupy a dál se o to nestará.

Tak mě tak napadá, že by to tím pádem mohlo jít přes nějaké tee jednak k serveru a druhak do watchdogu, který by nečinnost vlastnoručně "trestal". (Ale původní idea "zjisti, jak dlouho už stojí ten read() a zabij to" mi přijde jednodušší, ale jestli nic takového nejde...)
rADOn avatar 8.12.2010 14:44 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
nápad: v cronjobu si někam poznačit cpu time spotřebovaný dotyčným PID. Pokud při příštím spuštení bude stejný, proces visí.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
michich avatar 8.12.2010 16:12 michich | skóre: 50 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
Nebo třeba počet přepnutí kontextu, které proces zažil. Je to někde v /proc/PID/... Při zapnutém CONFIG_SCHEDSTATS je tam někde i časová značka, kdy šel proces spát.
xvasek avatar 9.12.2010 12:16 xvasek | skóre: 21 | blog: | Zlín
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
To si právě myslím taky. Původně jsem ten dotaz pokládal s tím, že někdo za 5 minut vysype z hlavy, kde ta značka je.
8.12.2010 09:30 lofcek
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
Existuje aj dalsie riesenie .. a sice, ze inet daemon by spustil Vas program na monitorovanie aktivity. Tento program by nasledne spustil prislusnu ulohu a predposielal by jej vsetky vstupy a vystupy. A ked by ziadne citanie ani zapis neboli nejaky dostatocne dlhy cas, tak by ju cez kill poslal do prec.

Ale stale si myslim, ze opravit utilitku aby sa nazasekla pri open je v 99% pripadov jednoduchsie ako tahat kalibre ma monitoravanie aktivit procesu.
8.12.2010 17:29 lofcek
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
Kazde volanie je prerusitelne (ak neobsahuje kernel chybu - uz som videl aj to). Signaly ako SIGINT, SIGHUP, SIGTERM sa daju ignorovat, ale SIGKILL (a este SIGSTOP - ale ten teraz nepotrebujeme) sa neda.
frEon avatar 8.12.2010 15:28 frEon | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
read() je syscall, tudiz proces, kterej je uprostred blokujiciho volani read() nezabijes protoze je v neprerusitelnem spanku. Doruceny signal se zpracuje az prave probihajici syscall skonci.
Talking about music is like dancing to architecture.
michich avatar 8.12.2010 16:09 michich | skóre: 50 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
Jak víš, že ten spánek bude nepřerušitelný? Pravděpodobně ten proces čte z nějaké roury nebo soketu, to bude přerušitelné.
8.12.2010 22:21 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
v dokumentaci od read je že vrací EINTR pokud je přerušen signálem, ergo dojde i k přepnutí kontextu a obsluze signálu.
In Ada the typical infinite loop would normally be terminated by detonation.
frEon avatar 9.12.2010 10:28 frEon | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
nj, koukam. mas pravdu
Talking about music is like dancing to architecture.
xvasek avatar 9.12.2010 12:12 xvasek | skóre: 21 | blog: | Zlín
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
Přesně tak, když to přes kill zabiju, tak si to korektně ukončí session k aplikačnímu serveru - je to v dokumentaci toho serveru.
8.12.2010 18:15 Semo | skóre: 44 | blog: Semo
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
V jadre 2.6.36 pribudol do iptables filter testujuci dobu necinnosti spojenia. Ale ak po spojeni behaju keepalive pakety, tak to nepomoze. Ak ale tvrdis, ze server visi v read(), tak keepalive pakety asi nebehaju a dalo by sa to tymto mechanizmom rozpoznat.

Ak nemozes mat najnovsie jadro, tak by som sa priklonil by som sa ku jednoduchemu forwarderu medzi xinetd a samotnym serverom, ktory bude pocitat cas od posledneho prietoku dat. A ak expiruje, tak strihne spojenie, co by server mohol vyhodnotit ako odpojenie klienta.

Vyhol by som sa podstrceniu read() cez LD_PRELOAD, pretoze tym by si prepisal aj vsetky ostatne vyskyty read pouzite na inom mieste servera.
If you hold a Unix shell up to your ear, you can you hear the C.
9.12.2010 00:01 darkenik
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
otazka je este, ze na akom OS to bezi. v Solarise by sa to dalo robit nejak cez dtrace skripty. A pokial viem, tak linux ma na sledovanie tiez nejaku sadu *trace prikazov a nejaky sposob sledovacich bodov v kerneli.
xvasek avatar 9.12.2010 12:10 xvasek | skóre: 21 | blog: | Zlín
Rozbalit Rozbalit vše Re: Jak dlouho je proces v read()?
Linux, nejčastěji Debian 5, ale taky RHEL 4 a výš. Dávat tam nedistribuční jádro se mi moc nechce.

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.