Byla vydána beta verze Ubuntu 25.10 s kódovým názvem Questing Quokka. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 25.10 mělo vyjít 9. října 2025.
Bola vydaná nová verzia 4.13 security platformy Wazuh. Prináša nový IT hygiene dashboard, hot reload dekodérov a pravidiel. Podrobnosti v poznámkách k vydaniu.
Americký výrobce čipů Nvidia investuje pět miliard dolarů (přes 100 miliard Kč) do konkurenta Intel, který se v poslední době potýká s vážnými problémy. Firmy to včera oznámily ve společné tiskové zprávě. Dohoda o investici zahrnuje spolupráci při vývoji čipů pro osobní počítače a datová centra. Akcie společnosti Intel na zprávu reagovaly výrazným růstem.
Dlouholetý balíčkář KDE Jonathan Riddell končí. Jeho práci na KDE neon financovala firma Blue Systems, která ale končí (Clemens Tönnies, Jr., dědic jatek Tönnies Holding, ji už nebude sponzorovat), někteří vývojáři KDE se přesunuli k nově založené firmě Techpaladin. Pro Riddella se již nenašlo místo. Následovala debata o organizaci těchto firem, které zahraniční vývojáře nezaměstnávají, nýbrž najímají jako kontraktory (s příslušnými důsledky z pohledu pracovního práva).
V Amsterdamu probíhá Blender Conference 2025. Videozáznamy přednášek lze zhlédnout na YouTube. V úvodní keynote Ton Roosendaal oznámil, že k 1. lednu 2026 skončí jako chairman a CEO Blender Foundation. Tyto role převezme současný COO Blender Foundation Francesco Siddi.
The Document Foundation, organizace zastřešující projekt LibreOffice a další aktivity, zveřejnila výroční zprávu za rok 2024.
Byla vydána nová stabilní verze 7.6 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 140. Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána verze 1.90.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
GNUnet (Wikipedie) byl vydán v nové major verzi 0.25.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.
Byla vydána nová major verze 7.0 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově je postavena je na Debianu 13 (Trixie) a GNOME 48 (Bengaluru). Další novinky v příslušném seznamu.
Dobrý den, potřeboval bych poradit se scriptem. Mám script pomocí kterého do souboru zapíšu [OK]. Pokud je tato podmínka splněna tak se vše ukončí se zápisem do logu. Pokud místo "echo "[OK] 2011-05-24 18:23:50" > $LOGNAME" zadám "echo "[OOOK] 2011-05-24 18:23:50" > $LOGNAME, tak vše taky proběhne tak jak má a zapíše se do error logu.
Potřeboval bych udělat to aby když bude vše OK, tak aby se mi spustil ještě jedena část a to konkrétně toto: echo "[PAIR] 2011-05-24 18:23:50" > $LOGNAME2 ale jen v případě toho že předchozí podmínka bude OK. Jinak ať se vše okončí tím že se zapíše do error logu error, ale logname2 se nevytvoří.
cat test.sh
#!/bin/bash
COMPANY="Test"
SLEEP="2"
TRIES="3"
# let it "as is" until you know what you're doing
SCRIPTNAME="$0"
SCRIPTPATH=$(cd ${SCRIPTNAME%/*} && pwd)
LOGNAME="$SCRIPTPATH/log/stop_$$.log"
LOGNAME2="$SCRIPTPATH/log/pair-_$$.log"
LASTSTATUS="$SCRIPTPATH/log/laststatus.log"
ERRLOGS="$SCRIPTPATH/log/errors"
OKLOGS="$SCRIPTPATH/log/allright"
COUNT="0"
checklog(){
if [ ! -f $1 ] ; then
return 1
elif [ $(tail -n 1 $1 | grep -c '^\[WARNING\]') -eq 1 ] ; then
return 2
elif [ $(tail -n 1 $1 | grep -c '^\[OK\]') -eq 0 ] ; then
return 1
else
return 0
fi
}
# better to run as www user and with mutt installed
[ -d $ERRLOGS ] || mkdir -p $ERRLOGS
[ -d $OKLOGS ] || mkdir -p $OKLOGS
while [ $COUNT -lt $TRIES ]; do
if ! checklog $LOGNAME ; then
# real stop
echo "[OK] 2011-05-24 18:23:50" > $LOGNAME
# take some sleep after unsuccessful run
if [ $COUNT -gt 0 ] ; then
sleep $SLEEP
fi
# raise counter
COUNT=$((COUNT + 1))
else
# break counter
COUNT=$((TRIES + 1))
fi
done
[ -f $LOGNAME ] && TAIL=$(tail -n1 $LOGNAME)
# alert mail in case of any problem (and exit)
if ! checklog $LOGNAME ; then
echo -e "$COMPANY stop was not proceeded properly: $TAIL" gzip -9 $LOGNAME
gzip -9 $LOGNAME
[ -d $ERRLOGS ] && mv $LOGNAME.gz $ERRLOGS/$(date +%Y%m%d_%H%M).gz
echo "$TAIL" > $LASTSTATUS
exit 0
fi
# delete logfile in the end of successful run
if [ -f $LOGNAME ] ; then
gzip -9 $LOGNAME
[ -d $OKLOGS ] && mv $LOGNAME.gz $OKLOGS/$(date +%Y%m%d_%H%M).gz
fi
# "OK mail" in case of successful run after previous error run
if ! checklog $LASTSTATUS ; then
echo -e "$COMPANY stop is all right now.\n\nScript exited with [OK] string. Number of tries: $TRIES. Here is last line from script: $TAIL"
fi
# log last output line to statusfile for test and "OK mail" eventually
echo "$TAIL" > $LASTSTATUS
exit 0
cat test.sh #!/bin/bash COMPANY="Test" SLEEP="2" TRIES="3" # let it "as is" until you know what you're doing SCRIPTNAME="$0" SCRIPTPATH=$(cd ${SCRIPTNAME%/*} && pwd) LOGNAME="$SCRIPTPATH/log/stop_$$.log" LOGNAME2="$SCRIPTPATH/log/pair-_$$.log" LASTSTATUS="$SCRIPTPATH/log/laststatus.log" ERRLOGS="$SCRIPTPATH/log/errors" OKLOGS="$SCRIPTPATH/log/allright" COUNT="0" checklog(){ if [ ! -f $1 ] ; then return 1 elif [ $(tail -n 1 $1 | grep -c '^\[WARNING\]') -eq 1 ] ; then return 2 elif [ $(tail -n 1 $1 | grep -c '^\[OK\]') -eq 0 ] ; then return 1 else return 0 fi } # better to run as www user and with mutt installed [ -d $ERRLOGS ] || mkdir -p $ERRLOGS [ -d $OKLOGS ] || mkdir -p $OKLOGS while [ $COUNT -lt $TRIES ]; do if ! checklog $LOGNAME ; then # real stop echo "[OK] 2011-05-24 18:23:50" > $LOGNAME echo "[PAIR] 2011-05-24 18:23:50" > $LOGNAME2 # take some sleep after unsuccessful run if [ $COUNT -gt 0 ] ; then sleep $SLEEP fi # raise counter COUNT=$((COUNT + 1)) else # break counter COUNT=$((TRIES + 1)) fi done [ -f $LOGNAME ] && TAIL=$(tail -n1 $LOGNAME) # alert mail in case of any problem (and exit) if ! checklog $LOGNAME ; then echo -e "$COMPANY stop was not proceeded properly: $TAIL" gzip -9 $LOGNAME gzip -9 $LOGNAME [ -d $ERRLOGS ] && mv $LOGNAME.gz $ERRLOGS/$(date +%Y%m%d_%H%M).gz echo "$TAIL" > $LASTSTATUS exit 0 fi # delete logfile in the end of successful run if [ -f $LOGNAME ] ; then gzip -9 $LOGNAME [ -d $OKLOGS ] && mv $LOGNAME.gz $OKLOGS/$(date +%Y%m%d_%H%M).gz fi # "OK mail" in case of successful run after previous error run if ! checklog $LASTSTATUS ; then echo -e "$COMPANY stop is all right now.\n\nScript exited with [OK] string. Number of tries: $TRIES. Here is last line from script: $TAIL" fi # log last output line to statusfile for test and "OK mail" eventually echo "$TAIL" > $LASTSTATUS exit 0priste to prosim dej jako formatovanej kod, lip se to pak cte
if ! checklog $LOGNAME ; thenMam pocit, ze tahle podminka vubec nenastane, jelikoz funkce checklog vzdy vrati hodnotu a tudiz je vzdy true ,ale mozna se pletu.
else # break counter COUNT=$((TRIES + 1))Zaprve na co cekat (?) a zadruhe je jednoduzsi pouzit
breakBtw, proc vubec pouzivat ciklus, kdyz stejne kontrolujes jen posledni radek ?
# better to run as www user and with mutt installedReally ?
# alert mail in case of any problem (and exit) if ! checklog $LOGNAME ; then # "OK mail" in case of successful run after previous error run if ! checklog $LASTSTATUS ; thenProc provadet tu samou vec trikrat, kdyz se da udelat jen nednou ?
SCRIPTNAME="$0" TRIES="3"Na co pouzivat promenne, kdyz je pouzijes jen jednou ? silenost, NN PS: pouzivet tag pre diky..
SCRIPTPATH=$(cd ${SCRIPTNAME%/*} && pwd)Coze? Tak takhle urcite ne.. NN
! checklog foo
nastane v závislosti na návratové hodnotě funkce checklog
(nula versus nenulová hodnota).
Proměnné nejí něco, co "nahrazuje věci které se dělají víckrát". Proměnné jsou i symbolická jména a rovněž mohou plnit funkci konfiguračních proměnných.
checklog
by bylo lepší volat jen jednou, možná by pomohlo něco jako:
company_exited_flawlessly=false if checklog $LOGNAME ; then company_exited_flawlessly=true else company_exited_flawlessly=false fi (nebo víc skripťácky: checklog $LOGNAME && company_exited_flawlessly=true ) if $company_exited_flawlessly; then ... else ... fia to i v jiných místech. Pro ukončení smyčky lépe použít
break
(jak radí NN).
Funkci checklog
bych zlidštil a asi i nějak přejmenoval, aby už její název evokoval, jestli se v případě úspěchu očekává 0 nebo spíš 1. Dost to pomáhá čitelnosti, zvlášť pokud výsledek ještě navíc negujete (! checklog
). Pokud by takových funkciček a podmínek bylo víc, umí to pokazit den.
log_ok(){ if [ -f $1 ] ; then if [ $(tail -n 1 $1 | grep -c '^\[OK\]') -eq 1 ] ; then return 0 fi fi return 1 } log_ok $LOGNAME && company_exited_flawlessly=trueP.S. Jestli jsem funkci
checklog
někde použil obráceně tak se omlouvám, připadá mi že ji máte opačně, ale možná že ne, takhle po ránu bych fakt potřeboval spíš log_ok $LOGNAME && company_exited_flawlessly=true
Tiskni
Sdílej: