Firma Proxmox vydala novou serverovou distribuci Datacenter Manager ve verzi 1.0 (poznámky k vydání). Podobně jako Virtual Environment, Mail Gateway či Backup Server je založená na Debianu, k němuž přidává integraci ZFS, webové administrační rozhraní a další. Datacenter Manager je určený ke správě instalací právě ostatních distribucí Proxmox.
Byla vydána nová verze 2.4.66 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 5 bezpečnostních chyb.
Programovací jazyk JavaScript (Wikipedie) dnes slaví 30 let od svého oficiálního představení 4. prosince 1995.
Byly zveřejněny informace o kritické zranitelnosti CVE-2025-55182 s CVSS 10.0 v React Server Components. Zranitelnost je opravena v Reactu 19.0.1, 19.1.2 a 19.2.1.
Bylo rozhodnuto, že nejnovější Linux 6.18 je jádrem s prodlouženou upstream podporou (LTS). Ta je aktuálně plánována do prosince 2027. LTS jader je aktuálně šest: 5.10, 5.15, 6.1, 6.6, 6.12 a 6.18.
Byla vydána nová stabilní verze 3.23.0, tj. první z nové řady 3.23, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Přehled novinek v poznámkách k vydání.
Byla vydána verze 6.0 webového aplikačního frameworku napsaného v Pythonu Django (Wikipedie). Přehled novinek v poznámkách k vydání.
Po více než 7 měsících vývoje od vydání verze 6.8 byla vydána nová verze 6.9 svobodného open source redakčního systému WordPress. Kódové jméno Gene bylo vybráno na počest amerického jazzového klavíristy Gene Harrise (Ray Brown Trio - Summertime).
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za listopad (YouTube).
Google Chrome 143 byl prohlášen za stabilní. Nejnovější stabilní verze 143.0.7499.40 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 13 bezpečnostních chyb.
Děkuji
tempfile=`tempfile 2>/tmp/null` || tempfile=/tmp/test$$ trap "rm -f $tempfile" 0 1 2 5 15
tak presne nevim, ale prvni radek se pokusi nastavit do promenne docasny nazev souboru pomoci prikazu tempfile, presmerovava error vystup, pokud se to nepovede, naplni promennou tempfile cestou /temp/test<pid>. Potom se spusti prikaz trap, ktery neznam ale manual by mel napomoci. Asi to dela neco ze v pripade ze nastane jeden ze signalu 0 1 2 5 nebo 15 tak provede akci "rm -f atd". Ale opravdu jen hadam
trap provede to, co je v uvozovkách za ním - v tomto případě odstraní ten dočasný soubor, pokud odchytí některý ze signálů uvedených těmi čísly na konci. Seznam signálů tady:
$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX
Ještě dodám, že "signál 0" v tomto kontextu znamená normální ukončení skriptu.
Jinak v zájmu toho, kdo má ten skript používat, doufám, že to /tmp/null je ve skutečnosti jen špatně opsané /dev/null. A ten "plán B" taky vypadá dost nebezpečně.
mkdir /home/aaa 2>/dev/null cat /home/virt/doc/index.php 2>/dev/null ls /home/aaa 2>/dev/null atd.. ??
A ten "plán B" taky vypadá dost nebezpečně.to jako tohle? tempfile=/tmp/test$$ a co konkrétně?
Hm, díky za pomoc, ale to mi chcete říct, že bych měl za každý příkaz dávat 2>/dev/null ?
Ne, jen za takový, u kterého chcete zahodit případný chybový výstup.
to jako tohle? tempfile=/tmp/test$$ a co konkrétně?
Vysvětloval jsem to např. tady.
tempfile=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX) #vytvoří /tmp/result.4bYDvkblOsfKPTMDR
tempfile=/tmp/test$$ # vytvoří /tmp/test25723tudíž i při použití test$$ by byla velká náhoda aby se do toho někdo trefil, ne? Jinak tento zápis
tempfile=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX)je totéž jako tento?
tempfile=`mktemp /tmp/result.XXXXXXXXXXXXXXXXX`
tmp=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX) mkdir /home/aaa 2>>$tmp cat /home/virt/doc/index.php 2>>$tmp ls /home/aaa 2>>$tmptohle? Bude účel stejny?
function foo () {
tmp=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX)
mkdir /home/aaa
cat /home/virt/doc/index.php
ls /home/aaa
}
foo 2>>$tmp
Díky
1. V bashi je to totéž, u některých starších shellů by $(...) nemuselo fungovat. Na druhou stranu, varianta s $(...) je IMHO trochu přehlednější, zejména pokud chcete příkazové substituce vnořovat.
2. Ta druhá varianta nebude vůbec fungovat, protože přesměrování provedete ještě předtím, než proměnné tmp přiřadíte hodnotu. Musel byste řádek 2 přesunout někam na "8.5".
tmp=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX)
function aaa () {
#tady bude chyba
}
function bbb () {
aaa
}
bbb 2> $tmp
Mně to funguje:
mike@unicorn:~> cat x
#!/bin/bash
tmp=out
function aaa () {
echo ahoj >&2
}
function bbb () {
aaa
}
bbb 2> $tmp
mike@unicorn:~> rm -f out
mike@unicorn:~> ./x
mike@unicorn:~> cat out
ahoj
no tohle ano, jelikož to máte napsáno jinak než já, v tom případě je zcela bezpředmětné spouštět funkci takto
bbb 2> $tmpkdyž ve funkci aaa () máte echo ahoj >&2, ne? Jinak teď se dívám že používate něco jiného, patrně jistě lepšího než já.. jaký v tom je rozdíl? Díky
echo ahoj >&2 echo ahoj 2>/$tmp
echo ahoj 2>/$tmpmi nedává smysl, protože
echo neprodukuje chybový výstup. Ten se dá vyrobit právě příkazem echo ahoj >&2
Je v tom podstatný rozdíl. Měl by ses konečně podívat do manuálu....Ten se dá vyrobit právě příkazemTo jste mi to tedy vysvětlil..echo ahoj >&2
Spíše bych měl programování v bash definitivně zabalit, jelikož neobsahuje základní potřeby programátora..
>&2" přesměruje standardní výstup do standardního chybového výstupu. Asi jsi to v manuálu přehlédl. Je to jedno ze základních pravidel.
1 vstup 1 standardní výstup 1 standardní chybový výstupPokud by byla pravda to co píšete (bez urážky), že: >&2 přesměruje standardní výstup do standardního chybového výstupu a já bych tento výstup přesměroval jak píšete, tak bych přece nic na obrazovce neviděl, ne? Čili tohle je evidentně špatně (potom ale nevím proč to funguje
)
ERROR_LOG=$(mktemp /tmp/tmp.XXXXXXXXXXXXXXXXX)
(eval ${TOKS[1]}) 2>> $ERROR_LOG
a takto je to dobře ?
ERROR_LOG=$(mktemp /tmp/tmp.XXXXXXXXXXXXXXXXX)
(eval ${TOKS[1]}) >&2 $ERROR_LOG
Děkuji..
Standardní chybový výstup se standardně vypisuje na obrazovce.Souhlasím..
Je to proto, aby se chybová hlášení nevypisovala do výstupních dat.Taky souhlasím..
To je také v manuálu.Nevím, neumím americky...
Předpoklad byl chybný, zbytek tedy nemá smysl komentovat.Má, pořád nevím co je tedy to 2>. Taky je ale otázkou je, co je myšleno tím standardním výstupem. Chápu to tedy dobře? Když použiju echo "Nazdar dědku" předpokládám, že se to odešle na standardní výstup, čili obrazovka, ok? Když použiju ls /home, je to taky odesláno do standardního výstupu čili na obrazovku, pokud ale použiju ls /hhome a dostanu na obrazovku ls: cannot access /homed: No such file or directory tak se nejedná o standardní výstup ale o standardní chybový výstup, ok? No a když ten příkaz použiju takto ls /hhome >&2 /tmp/error.log tak neuvidím na obrazovce vůbec nic, taky ok? Díky
Nevím, neumím americky...
A to je snad náš problém, súdruh Haluška?
Pokud by byla pravda to co píšete (bez urážky), že: >&2 přesměruje standardní výstup do standardního chybového výstupu a já bych tento výstup přesměroval jak píšete, tak bych přece nic na obrazovce neviděl, ne?
Však se také v tom mém příkladu na terminál nic nevypsalo.
Začínám nějak tápat v tom, jestli jsem žádal o radu já vás nebo vy nás. Začínám mít pocit, že my jsme všichni blbci, kteří tomu nerozumíme a prosíme vám, abyste nám poradil… :-(
A teď poslední pokus vám vysvětlit, co se děje. Jestliže uvnitř funkce použijete
echo ahoj >&2
pak se standardní výstup (deskriptor 1) toho příkazu připojí k chybovému (deskriptor 2). Jetliže tu funkci pak zavoláte jako
funkce 2>/tmp/foo
pak se její chybový výstup (což je to slovo ahoj) přesměruje do příslušného souboru.
mkdir /home/foo 2>/tmp/loga tohle je dobře
mkdir /home/foo >2& /tmp/log
když ve funkci aaa () máte echo ahoj >&2, ne?
A v čem se to podle vás liší od kteréhokoli jiného příkazu, který něco napíše na chybový výstup? Zkuste si tam dát něco jiného a dopadne to stejně.
Tiskni
Sdílej: