Ú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. ...
ZDE NALEPTE SVÉ ZNÁMKY:
1. známka pro vás zdarma