===== Bash - konzolové skripty ===== * uplne mega super navod na bash * prace s retezci (nahrazeni, orezenani, zjisteni delky ...) * http://tldp.org/LDP/abs/html/parameter-substitution.html#LENGTH ==== find ==== * spuštění více příkazů u exec * vypíše 2 prefixy pro každý soubor find . -exec echo "pr1:{}" \; -exec echo "pr2:{}" \; * vypíše soubory a u souborů obsahující podřetězec find vypíše replace find . -exec sh -c "echo {} | sed 's/find/replace/g'" \; * spuštění více příkazů bez exec find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done * zrušení rekurzivního procházení find . -maxdepth 1 -exec echo {} \; * přejmenování přípony souborů find . -name \*.html -exec echo -n "mv {} " \; -exec sh -c "echo {} | sed 's/\.html/\.phtml/g'" \; | sh ==== odstranění duplicitních řádků ==== * mám slovník, který vzniknul spojením více malých a chci oddělat duplicity * uniq - odstraní duplicity, ale jen když jsou duplicitní řádky po sobě * sort - umí setřídit řádky k sobě :) sort all > sortedall uniq sortedall uniqsortedall ==== vyřazení řádků kratších než 8 znaků ==== * první nápad s for cyklem - děsně pomalé, asi 0.1KB/s for i in `cat uniqsortedall`; do COUNT=$(echo $i | wc -m); if [ $COUNT -gt 7 ]; then echo $i >> cutteduniqsortedall; fi; done * druhý nápad s readline - pomalé, asi 0.2KB/s while read line; do COUNT=$(echo $line | wc -m); if [ $COUNT -gt 7 ]; then echo $line >> cutteduniqsortedall; fi; done < uniqsortedall * nejlepší nápad za pomocí google :) awk '{ if (length() > 8) print $0 }' uniqsortedall > cutted8uniqsortedall ==== procesy, otevrene spojeni ==== * zabiti potomku procesu kill_children_of() { CHILDS=`ps -ef | awk '$3 == '${1}' { print $2 }'` for CHILD in $CHILDS; do echo "killing child $CHILD" #kill $CHILD done } * hodne detailni info o procesech ps -aux * vypis tcp soketu vcetne procesu (-p) netstat -tanp * zjisteni, ktere procesy pouzivaji soubor djbuldog@Pharaon:~$ fuser -v /dev/snd/pcmC* Cannot open /proc/swaps UŽIVATEL PID PŘÍSTUP PŘÍKAZ /dev/snd/pcmC0D0p: djbuldog 3883 F...m pulseaudio /dev/snd/pcmC1D0c: djbuldog 3883 F...m pulseaudio * zjisteni otevrenych souboru a soketu * aktivni spojeni lze vypsat parametrem -i tcp nebo -i4 nebo lsof -nl | egrep "TCP|UDP" lsof * zjisteni aktulaniho pracovniho adresare procesu pwdx ==== sledování procesů / syscallů ==== inotify * inotifywait * sleduje požadované operace nad soubory/adresáři v dané cestě * options `-m` slouží k nepřetržitému monitorování, jinak se program ukončí po první detekované operaci inotifywait [options] [path] * inotifywatch * počítá statistiku operací se soubory/adresáři v dané castě * po ukončení statistiku vypíše inotifywatch * není možné zjistit PID procesu, pouze detekovat operaci lsof/fuser * slouží k zobrazení otevřených file deskriptorů lsof [-p PID] [path] * rychlejší je prý fuser.. ale zobrazuje PID místo názvu procesu fuser [path] auditd * vypsání aktivních pravidel auditctl -l * přidání pravidla pro monitorování operace read na souborem auditctl -w -p r * výstup je v /var/log/audit/audit.log * pravidla se vymažou parametrem -D