Úvod do Operačních Systémů
Transkript
Úvod do Operačních Systémů 10. cvičení Uživatelský vstup, zpracování přepínačů, psaní a ladění skriptů, plánování úloh. Úvod do Operačních Systémů – cvičení 10 1 Obsah Skript pro logování informací o systému, uložení konfigurace, transformaci logu. ● Psaní a ladění skriptů #! set ● Zpracování přepínačů getopts ● Uživatelský vstup read ● Plánování úloh crontab Úvod do Operačních Systémů – cvičení 10 2 Cíl Úvod do Operačních Systémů – cvičení 10 3 Výběr informací Skript bude logovat informace o zatížení systému (load) (průměr za 1, 5 a 15 min) a počtu příhlášených uživatelů (celkem a unikátních). ● Formát log souboru [27/11/2006-07:30:00] Load: 0.75 0.36 0.12 [27/11/2006-07:30:00] Users: 38 29 ● Informace o zatížení systému uptime ... ● Počet přihlášených uživatelů a počet unikátních uživatelů who ... Úvod do Operačních Systémů – cvičení 10 4 Skript, debug info ● Interpret skriptu (první řádek skriptu) #!/bin/bash ● Výpis prováděných řádků skriptu #!/bin/bash -v set -v ● Výpis prováděných řádků skriptu po expanzi #!/bin/bash -x set -x ● Nastavení přístupových práv a spuštění skriptu chmod +rx logger ./logger Úvod do Operačních Systémů – cvičení 10 5 Transformační funkce ● Volání logovacích skriptů, transformace výstupu pomocí funkce log, kde vstupem je jméno informace a samotná informace. filename=.mylog function log() { ... } # Logovani urcenych informaci log Load hodnoty... log Users hodnoty... Úvod do Operačních Systémů – cvičení 10 6 Použití zámků I + ● Skript při startu zkontroluje, zda neexistuje zvolený soubor (zámek). Pokud ne, vytvoří jej a vloží do něj PID skriptu. LOCK_FILE=$HOME/.mylog.lock if locked then exit 2 else echo $$ > "$LOCK_FILE" trap "rm $LOCK_FILE; exit" 2 3 15 fi ... rm "$LOCK_FILE" Úvod do Operačních Systémů – cvičení 10 7 Použití zámků II + ● Pokud soubor existuje, ale obsahuje PID procesu, který nepatří tomuto skriptu, soubor se ignoruje. function locked() { if [ -f "$LOCK_FILE" ] \ && ps -u $USER -o pid,args \ | grep "^ *`cat $LOCK_FILE` .* logger" \ >/dev/null then echo "Lock file found! (PID=`cat $LOCK_FILE`)" return 0 else return 1 fi } Úvod do Operačních Systémů – cvičení 10 8 Volby z příkazové řádky I VERBOSE=0 CONFIG=$HOME/.mylog.conf LOCK_FILE=$HOME/.mylog.lock USAGE="Usage: $0 [-h] [-vd] [-c config_file]" HELP=" -h this help -v verbose mode (use multiply for more verbosity) -d daemon mode (check lock file) -c conf use alternative configuration file " Úvod do Operačních Systémů – cvičení 10 9 Volby z příkazové řádky II + while getopts hvc: opt do case $opt in h) #display help echo "$USAGE"; echo "$HELP"; exit 0;; c) #config if [ -f then else fi;; file "$OPTARG" -a -w "$OPTARG" ] CONFIG=$OPTARG echo "$OPTARG: wrong config file" >&2; exit 2 v) #verbose mode ((VERBOSE++)) ((VERBOSE>0)) && set -v ((VERBOSE>1)) && set -x ;; \?) #err - unknown option echo "$USAGE" >&2; exit 2 ;; esac done ; shift `expr $OPTIND - 1` Úvod do Operačních Systémů – cvičení 10 10 Konfigurační soubor ● Konfigurační soubor obsahující nastavení ve formátu název_proměnné=hodnota #MyLog config file #Modified: 27.lis 2006 (07:30:00) #Modified by barinkl #filename of log file #filename=/home/k336/barinkl/.mylog filename=/home/k336/barinkl/.mylog #log system load #load=y load=y #log number of users #users=y users=y Úvod do Operačních Systémů – cvičení 10 11 Konfigurační soubor, vytvoření I ● Skript vytvářející konfigurační soubor podle vstupu uživatele. Vstup je čten pomocí příkazu read . #cesta k log souboru a jeho jmeno until [ -f "$filename" -a -w "$filename" ] do echo -n "Log filename [$HOME/.mylog]: " read filename junk echo "${filename:=$HOME/.mylog}" if [ "`echo $filename | cut -c1`" != / ] then filename="$PWD/$filename" fi [ -f "$filename" ] \ || { touch "$filename"; chmod u+w "$filename"; } done Úvod do Operačních Systémů – cvičení 10 12 Konfigurační soubor, vytvoření II ● Dotaz na logování zátěže (load) – možnosti y/n while ! echo "$load" | grep '^[yYnN]$' do echo -n "Log load [y]/n? " read load junk [[ -z "$load" ]] && load=y done ● Dotaz na logování počtu uživatelů (users) – možnosti y/n while ! echo "$users" | grep '^[yYnN]$' do echo -n "Log users [y]/n? " read users junk [[ -z "$users" ]] && users=y; done Úvod do Operačních Systémů – cvičení 10 13 Konfigurační soubor, vytvoření III cat <<KONEC >"$CONFIG" #MyLog config file #Modified: `date '+%d.%b %Y (%T)'` #Modified by $USER #filename of log file #filename=$HOME/.mylog filename=$filename #log system load #load=y load=$load #log number of users #users=y users=$users KONEC Úvod do Operačních Systémů – cvičení 10 14 Načtení konfigurace I ● Načtení funkce ze souboru readconf do skriptu . ./readconf ● Načtení konfigurace ze souboru. Funkce je v samostatném souboru readconf. function readconf() { err=0 while [ $# -gt 0 ] do case "$1" in filename) filename=`sed -n '/^filename=/s/[^=]*=//p' $CONFIG \ | tail -1` if ! [ -f "$filename" -a -w "$filename" ] then err=1; fi ;; Úvod do Operačních Systémů – cvičení 10 15 Načtení konfigurace II load) load=`sed -n '/^load=/s/[^=]*=//p' $CONFIG \ | tail -1` if [[ "$load" != [yYnN] ]]; then err=1; fi ;; users) users=`sed -n '/^users=/s/[^=]*=//p' $CONFIG \ | tail -1` if [[ "$users" != [yYnN] ]]; then err=1; fi ;; *) return 2;; esac shift done return $err } Úvod do Operačních Systémů – cvičení 10 16 Použití načtení konfigurace ● Načtení proměnných z konfiguračního souboru # Nacteni konfigurace if ! readconf filename load users then echo "Error reading config file" exit 2 fi Úvod do Operačních Systémů – cvičení 10 17 Plánování úloh + ● Nastavení a vypsání opakovaného spouštění úloh export EDITOR=vi crontab -e * * * * * $HOME/logger den v týdnu měsíc den hodina minuta ● Možné hodnoty: * */2 5 2,7 1-5 každá hodnota každá 2. hodnota hodnota 5 hodnoty 2 a 7 hodnoty 1,2,3,4,5 crontab -l Úvod do Operačních Systémů – cvičení 10 18 Vykreslení grafu z dat v logu + ● Transformace dat z logu awk '/Load:/ {L1=$3; L2=$4; L3=$5} /Users:/ { print $1,L1,L2,L3,$3,$4}' ~/.mylog > .mylog.data ● Vykreslení grafu pomocí příkazu gnuplot gnuplot .mylog.plot ● Zobrazení grafu v obrázku display .mylog.png Úvod do Operačních Systémů – cvičení 10 19 Skript pro gnuplot ++ set set set set set set set set set set set terminal png small color size 1.5 output ".mylog.png" rmargin 3 lmargin 6 tmargin 1 bmargin 1.5 nogrid multiplot xdata time timefmt "[%d/%m/%Y-%H:%M:%S]" set format x "" set size ratio 0.5 plot [][0:] \ '.mylog.data' using 1:2 title '1 min avg' with lines, \ '' using 1:3 smooth bezier title '5 min avg' with lines, \ '' using 1:4 smooth bezier title '15 min avg' with lines set format x "%H:%M" set origin 0,0.99 set size ratio 0.25 plot [][0:] \ '.mylog.data' using 1:5 title 'users' with lines, \ '' using 1:6 title 'uniq users' with lines Úvod do Operačních Systémů – cvičení 10 20 Příprava na příští cvičení ● Upravte skripty z tohoto cvičení tak aby ● ● ● ● ● ● byly uživateli hlášeny chyby při práci se soubory (neexistence, nedostatečná práva, špatný obsah, ...), skripty i soubory mohly být uloženy v libovolném adresáři (odstranění absolutních cest), skript přijímal argumenty z příkazové řádky, které by uváděly názvy logovacích funkcí (skriptů). Argumenty by pak měly přednost před nastavením z konfiguračního souboru. jméno log souboru mohlo být předáno jako argument přepínače -o z příkazové řádky, přibyla informace, která se bude také logovat. Vytvořte skript a naplánujte jeho pravidelné spouštění, který by generoval do určeného adresáře grafy z log souboru za zvolené období. Úvod do Operačních Systémů – cvičení 10 21
Podobné dokumenty
Grafické zpracování dat a měření
uloží aktuální stav gnuplotu , tj. uživatelsky nadefinované proměnné, funkce, všechna nastavení provedená
pomocí set a poslední příkaz plot, resp. splot.
1 V Linuxu stačí napsat do příkazové řádky ...
Poprvé s gnuplotem
load 'scriptname'
call 'scriptname' args
pwd, cd 'dir'
save opts 'file'
quit, exit, CtrlD
gnuplot.pdf
Bezdiskové stanice na Ubuntu Linuxu
skrýt adresáře v /, vytvořte soubor /.hidden a do něj napište všechny adresáře, které se mají
skrýt. Syntaxe je jeden soubor/adresář na řádek. Rozumné nastavení vypadá asi takto:
zde
příletových cestách. V tomto směru může být protivníkem příroda, která v nedávné době, po
záplavách, vyžádala intenzivní záchranné práce. Je na našem strategickém velení, aby si
vyhodnotilo do jaké...
Ovládání programu WinEiv2d
Do pole Delta's File se zadává cesta k souboru s popisem diskretizovaných kroužků. Stisknutím
tlačítka Browse se otevře dialog pro výběr souboru.
Hodnotu parametru epsilon lze zadat buďto zadáním c...
Toto
dětmi objektů figure a rodiči objektů line, surface, patch, image a text. Objekty axes
definují polohu a rozsah svých dětí uvnitř objektu figure.
axes – samostatně – vytváří objekt axes a vrací jeh...
Program Můj PVS
Provádí import dat nebo pořízení dat. Umožňuje provádět předepsané kontroly dat podle pravidel
ČSSZ. Vytváří exportní XML soubor k odeslání disketou či na CD, tisk přehledové sestavy.
Zejména však ...
Zde - Penguin
Perl je programovacím jazykem primárně určeným jako pomůcka pro správu systému. Kombinuje v sobě prvky jazyka C, awk, grepu, sedu, a Bourne shellu. Perl je výtečným nástrojem
pro zpracování textu. ...