Open source download manager Fatrat povstal z popela. Autor k dvacetiletému výročí projektu přidal do vínku podporu nejnovější knihovny libtorrent, rozhraní portoval na QT6, došlo k nahrazení podpory java rozšíření pythonem. Webové rozhraní bylo přepsáno s podporou mobilních zařízení. Aplikaci je taktéž možno zkompilovat bez podpory GUI. Více informací v releases.
Zranitelnost Broccoli2Shell (CVE-2026-111497) v kompresní knihovně Brotli se netýká pouze Node.js. Ohroženy jsou také aplikace využívající HTTP. Knihovnu používají webové prohlížeče, servery i řada dalších aplikací a technologií, například také Python nebo Bun. Identifikace všech zranitelných komponent může být obtížná, protože knihovna bývá součástí dalších softwarových balíčků nebo je přímo začleněna do spustitelných souborů aplikací.
Quad9, švýcarský celosvětově působící neziskový poskytovatel DNS, od 24. listopadu 2026 ukončí své služby ve Francii kvůli soudnímu sporu s katarskou televizní stanicí beIN. Ta požadovala blokování domén, které podle ní nelegálně zpřístupňují sportovní přenosy. Francouzský soud Katarům vyhověl a nařídil (🇫🇷, PDF) Quad9 blokaci zavést, pod hrozbou pokuty 1000 eur denně. Provozovatel příkaz odmítá s tím, že blokace
… více »Článek na blogu APNIC vysvětluje, jak správně vytvářet a používat ASPA záznamy — podepsané objekty v RPKI, které uvádějí, kteří poskytovatelé směrování jsou pro dané autonomní číslo (ASN) oprávněni. Síťoví operátoři je mohou využít k ověřování tras BGP a k odhalování úniků tras či podvržených tras.
Byla vydána (𝕏) verze 8.0.0 open source programu pro prolamování hesel hashcat (GitHub, Wikipedie). Přehled novinek v příspěvku v diskusním fóru a pdf.
Byla vydána (𝕏, Bluesky) nová verze 2026.3 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem 6 nových nástrojů v oficiálním oznámení na blogu.
Výzkumníci ukazují, jak mohou otevřené tunely a IPv6 Extension Headers synchronizovat pakety do krátkých provozních špiček. V kontrolovaném experimentu naměřili přes 180násobnou koncentraci paketového toku vůči průměrné rychlosti odesílání — nikoli 180násobné zvětšení objemu dat. Článek obsahuje metodiku, limity měření i mitigace pro GRE, IPIP a další tunely.
Po velkém úspěchu prvního MobileLinux Hackdaye se vracíme do Českých Budějovic s druhým ročníkem. V pátek 30. října 2026 od 10:00 se v prostorách Jihočeské univerzity uskuteční Embedded & MobileLinux Hackday #2. Těšit se můžete na témata jako Immutable Linux na telefonech (BengalOS), U-Boot a upstream vývoj, AI optimalizace pro embedded systémy nebo otevřený hardware. Nebude chybět praktické hackování, sdílení zkušeností a možnost … více »
Dne 21. října 2026 vydal projekt Node.js bezpečnostní aktualizace opravující deset zranitelností, včetně jedné umožňující potenciální vzdálené spuštění kódu (RCE). Nejzajímavější je CVE-2026-111497, chyba dekodéru Brotli, kterou objevili výzkumníci využívající OpenAI Codex Security. Chyba je v nativním dekodéru Brotli, nikoli v samotném JavaScriptu. Speciálně vytvořený komprimovaný vstup způsobí, že dekodér zamění
… více »Řešení dotazu:
sudo -u $DAEMONUSER ffmpeg -loglevel quiet -i $source -vn ... \ -f mpegts - | sudo -u $DAEMONUSER ffmpeg -loglevel quiet \ -f mpegts -i - -c copy ... $dst $index \ -f mpegts -c copy -f mpegts udp://@$udp_dst & echo $! > $PIDFILE
${PIPESTATUS[@]}
což vám vrátí všechny PID procesů, které jsou spojené rourou. Ty pak pozabíjíte jedním killnutím.
Bez bashe je zjištění všech PID složitější -- vyžaduje větší znalost file deskriptorů. Přičemž bude takové řešení výrazně nepřehlednější (pokud to má být stále one-liner). Další způsob (méně spolehlivý) je: zjistit poslední PID pomocí !$ (tak jak to máte) a pomocí utilitky ps a programu awk nebo sed si vytáhnout všechny PID u stejného subprocesu.
( ffmpeg..|ffmpeg.. )& echo $!
Nevím proč mi to nenapadlo dřív :).
# cat /var/run/ffmpeg/109.pid 28767
28767 ? S 0:00 /bin/sh /etc/init.d/ffmpeg-hls-restream startVypadá to takto:
28767 ? S 0:00 /bin/sh /etc/init.d/ffmpeg-hls-restream start 28768 ? S 0:00 \_ sudo -u vlc /usr/local/bin/ffmpeg -loglevel quiet -i udp://@... 28769 ? S 0:00 \_ /usr/local/bin/ffmpeg -loglevel quiet -f mpegts -i - -c copy ...Po killu 28767 zmizí jen ten jeden řádek, ale ty ffmpegy si žijou dál. Divný. :(
start-stop-daemon --stop --signal 9 --oknodo --pidfile "$PIDFILE" --exec /usr/local/bin/ffmpeg
Předpokládám, že sudo využíváš pouze pro přepnutí na jiného uživatele. Místo sudo bych použil přímo start-stop-daemon a ffmpeg rouru by jsem spouštěl ze skriptu $DAEMON_WRAPPER:
start-stop-daemon --start --quiet --pidfile $PIDFILE
--chuid $DAEMONUSER --background --make-pidfile --exec $DAEMON_WRAPPER -- $ARGS
Vše poté zabiješ pomocí:
pkill -P $(cat $PIDFILE)
Proměná $ARGS se využívá k předání parametrů skriptu $DAEMON_WRAPPER, je na tobě co všechno mu budeš předávat. Wrapper bude zajišťovat spuštění pouze jedné instace ffmpeg roury, v init.d skriptu máš cyklus for, který postupně spouští X různých instací. Závorky zruš, stejně jako sudo a ukládání PID do PIDFILE na konci roury, to zařídí start-stop-daemon. Pod pojmem "ffmpeg roura" mám na mysli (tj. celou jednu instaci):
FFMPEG1 PARAM_1 PARAM_N |FFMPEG2 PARAM_2 PARAM_N
start-stop-daemon zařídí forknutí wrapperu na pozadí, spuštění pod definovaným uživatelem, vytvoření $PIDFILE, kde bude PID právě tohoto forknutého wrapperu, ve kterém budeš spouštět ffmpeg rouru bez přesunu na pozadí (tj. žádný ampersand na konci roury), ffmpeg roura má jako rodiče právě wrapper, takže když pozabíjíš jeho potomky, máš vyřešeno. Ano, uděláš to příkazem pkill místo "start-stop-daemon --stop", protože rodič se ukončí sám, jakmile budou pozabíjeni potomci, protože nedělá nic jiného než, že čeká na jejich dokončení. Na vhodném místě si ještě smaž PIDFILE, třeba v init.d skriptu po pozabíjení potomků. Můžeš jim nejprve poslat SIGTERM, vyčkat, sjistit pomocí pgrep zda-li ještě potomci běží a případně jim poslat SIGKILL, pokud budou běžet i po uplynutí definované doby.
$ man start-stop-daemon
Ne, takto jsem to vůbec nemyslel. Psal jsem, ať si uděláš skript $DAEMON_WRAPPER, do kterého vložíš spouštění ffmpeg a případné potřebné argumenty mu předáš pomocí proměné $ARG. Možná ti níže uvedený fragment pomůže v pochopení jak jsem to myslel.
# vim init.d/ffmpeg-hls-restream
...
DAEMON_WRAPPER=/usr/local/bin/ffmpeg_wrapper.sh
...
do_start() {
...
start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $DAEMONUSER --background --make-pidfile --exec $DAEMON_WRAPPER -- $ARGS
...
do_stop() {
...
pkill -P $(cat $PIDFILE)
...
# vim /usr/local/bin/ffmpeg_wrapper.sh
...
if [ $vcodec ]; then
/usr/local/bin/ffmpeg -loglevel quiet -i $source -flags -global_header -profile:v baseline -c:v $vcodec -b:v $bitrate -maxrate $vbvmaxrate -bufsize $vbvbufsize \
-deinterlace -vf "crop=in_w$vcrop:in_h$vcrop,scale=$width:$height" -keyint_min $keyint_min -g $gop -c:a $acodec -b:a $abitrate -ar $asrate \
-f mpegts - | /usr/local/bin/ffmpeg -loglevel quiet \
-f mpegts -i - -c copy -hls_time $seglen -hls_list_size $numsegs -hls_base_url $index_url -hls_flags delete_segments -hls_segment_filename $dst $index \
-f mpegts -c copy -f mpegts udp://@$udp_dst
...
ffmpeg ... | ffmpeg .... | ffmpeg ... & ps -o "%p %c" --no-headers --ppid $$ | sed -n '/ffmpeg\|vlc/{s/ffmpeg//;s/vlc//;p}' | tr -d '\n' > pid.txt
Řešení s file deskriptory bych vám také mohl nabídnout, ale jelikož to máte stejně ve skriptu, který spouštíte (tj. máte rodiče a jeho pid se nechá získat pomocí $$), není nutné to hned hrotit :); tohle by mělo vrátit co potřebujete. Stačit by mělo už jen kill -9 $(cat pid.txt).
Tiskni
Sdílej: