Appunti corso “Amministrazione Linux”


Modulo 6: La programmazione della shell BASH; creazione di una partizione di swap; la gestione delle “quote” di disco



Download 1.08 Mb.
Page6/11
Date28.01.2017
Size1.08 Mb.
#10196
1   2   3   4   5   6   7   8   9   10   11

Modulo 6: La programmazione della shell BASH; creazione di una partizione di swap; la gestione delle “quote” di disco





  • Creazione e attivazione di un filesystem di swap (esercitazione)

    • Creare una nuova partizione logica con spazio sufficiente per ospitare l’area di swap (es. /dev/hda8 di 512Mbyte con 256MB di RAM).

    • Memorizzare la partition table da fdisk o cfdisk e riavviare la macchina.

    • Creare il filesystem di swap con mkswap –c /dev/hda8.

    • Attivare la partizione di swap con swapon /dev/hda8 per verificare che la partizione sia stata creata e formattata in maniera corretta.

    • Modificare /etc/fstab per essere sicuri che l’area di swap venga montata sulla partizione swap corretta (/dev/hda8):

/dev/hda8 swap swap defaults 0 0

    • Swapon viene eseguito all’avvio dentro rc.sysinit (System V).

    • Fare il reboot della macchina e verificare che i messaggi di avvio non contengano errori relativi alla partizione di swap.

    • Swapon –s (informazioni relative alla partizione di swap).

    • Verificare con parted o cfdisk che la partizione /dev/hda8 sia di tipo Linux swap.

    • Modificare /etc/fsab per montare /home sulla nuova partizione logica /dev/hda9 creata dal precedente ridimensionamento di / (ATTENZIONE: tutti i dati in /home non sono piu’ accessibili tramite questa operazione, o meglio la nuova partizione viene montata sulla vecchia versione di /home che era montata in precedenza sul filesystem di root; per accedervi smontare la nuova partizione).


La gestione e l’impostazione delle quote di utilizzo del disco (esercitazione)

Come prerequisito e’ necessario controllare se nel kernel e’ attivata l’opzione per la gestione delle quote di spazio su disco nel menu’ File System.



  1. Creare una nuova partizione su di un disco esistente o su di un nuovo disco (es. /dev/hdb1).

  2. Utilizzare cfdisk o fdisk per impostare filesystem type = linux (83).

  3. Creare un filesystem ext3 sulla nuova partizione con: mkfs –t ext3 –L quotafs –cv /dev/hdb1

  4. Per controllare il superblock della nuova partizione utilizzare: tune2fs –l /dev/hdb1

  5. Montare il filesystem /home sulla nuova partizione modificando /etc/fstab ed utilizzando come opzioni defaults,usrquota su /home (filesystem su cui vogliamo attivare la gestione della quota).

  6. Creare i file che conterranno le informazioni relative alle quote nel nuovo filesystem con: touch /home/aquota.user

  7. touch /home/aquota.group

  8. chmod 600 /home/aquota.user /home/aquota.group

  9. quotacheck –avug per inizializzare i database appena creati

  10. quotaon –a (attiva la gestione quota sui filesystem definiti in /etc/fstab)

  11. edquota -u david (imposta la quota di spazio ammessa per l'utente david)

  12. Ogni utente puo’ controllare la propria situazione relativa allo spazio su disco tramite il comand quota

(attenzione, l'attivazione del controllo delle quote andrebbe attivato su di un file system appena creato)


Per verificare il funzionamento provare a mettere un limite di 100 su soft e 200 su hard (espressi in block, equivalgono ai kbyte) e provare a scrivere un file come utente david; è da notare che se si oltrepassa il limite soft si riceve uno warning e se si oltrepassa il limite hard non si riesce piu' a scrivere oltre il limite; si possono mettere limiti sul numero di file oltre che sulla dimensione (numero di inode).
con edquota -t si edita il "grace time" oltre il quale anche le violazioni soft vengono punite e non si è più in grado di scrivere sulla partizione anche se siamo sopra il “soft limit”.
Per controllare lo stato di un filesystem con quota:

quotaoff /home

quotacheck -avug

quotaon /home


Per permettere la scrittura anche in presenza del sistema di quota attivato:

quotaoff /home

scrittura

quotaon /home


quota visualizza lo stato attuale della propria quota.
La migrazione di un filesystem su di un nuovo disco (esercitazione)

Lo scopo dell’esercizio e’ quello di simulare lo spostamento di una cartella come /var su di un nuovo disco rigido o su di una nuova partizione.




    1. Creare una nuova partizione su di un disco esistente o su di un nuovo disco (es. /dev/hdb1).

    2. Creare un filesystem ext3 sulla nuova partizione tramite il comando mkfs –t ext3 –L newpart –cv /dev/hdb1

    3. Montare manualmente la nuova partizione sotto /mnt.

    4. Copiare tutto contenuto della directory /var attuale nella nuova partizione con il comando cp –pR /var/* .

    5. Rinominare la vecchia directory /var in /var.old

    6. Modificare il file /etc/fstab in modo da montare in maniera permanente /var sulla nuova partizione.

    7. Far ripartire il computer e controllare tramite il comando df –k che /var/ sia montata sul nuovo filesystem.

    8. A questo punto e’ possibile cancellare la vecchia /var.old per liberare spazio nel filesystem di root.

Programmazione bash



    • echo –e “ciao\tdavid” (il comando echo interpreta le sequenze di escape)

$ vi sayH
#
#Script to read your name from key-board
#
echo "Your first name please:"
read fname
echo "Hello $fname, Lets be friend!"


Operator_in_Shell_Script__Meaning'>Mathematical Operator in  Shell Script 

Meaning

Normal Arithmetical/ Mathematical Statements

But in Shell

 

 

 

For test statement with if command

For [ expr ] statement with if command

-eq

Is equal to

5 == 6

if test 5 -eq 6

if [ 5 -eq 6 ]

-ne

Is not equal to

5 != 6

if test 5 -ne 6

if [ 5 -ne 6 ]

-lt

is less than

5 < 6

if test 5 -lt 6

if [ 5 -lt 6 ]

-le

is less than or equal to

5 <= 6

if test 5 -le 6

if [ 5 -le 6 ]

-gt

is greater than

5 > 6

if test 5 -gt 6

if [ 5 -gt 6 ]

-ge

is greater than or equal to

5 >= 6

if test 5 -ge 6

if [ 5 -ge 6 ]

NOTE: == is equal, != is not equal.

For string Comparisons use



Operator

Meaning

string1 = string2

string1 is equal to string2

string1 != string2

string1 is NOT equal to string2

string1

string1 is NOT NULL or not defined 

-n string1

string1 is NOT NULL and does exist

-z string1

string1 is NULL and does exist

Shell also test for file and directory types

Test

Meaning

-s file   

Non empty file

-f file   

Is File exist or normal file and not a directory 

-d dir    

Is Directory exist and not a file

-w file  

Is writeable file

-r file   

Is read-only file

-x file   

Is file is executable

Logical Operators

Logical operators are used to combine two or more condition at a time



Operator           

Meaning

! expression

Logical NOT

expression1  -a  expression2

Logical AND

expression1  -o  expression2

Logical OR

#!/bin/sh

X=0

while [ -n "$X" ]



do

echo "Enter some text (RETURN to quit)"

read X

if [ -n "$X" ]; then



echo "Hai digitato: $X"

fi

done


#!/bin/sh

echo "I was called with $# parameters" (numero di parametri)

echo "My name is $0" (nome del programma stesso)

echo "My first parameter is $1"

echo "My second parameter is $2"

echo "All parameters are $@" (lista di tutti I parametri)


(Test output di un comando tramite $?, 0 esito OK)
#!/bin/sh

/usr/local/bin/my-command

if [ "$?" -ne "0" ]; then

echo "Errore nel comando"

fi
(per ogni utente in passwd stampa il nome utente ed il nome completo)

for a in `cat /etc/passwd | cut -d: -f1`

do

MYNAME=`grep "$a:" /etc/passwd | cut -d: -f5`



echo -e $a "\t" $MYNAME | expand -t15

done
(per ogni directory in input stampa occupazione in Kbyte oppure il msg “Dir inesistente”)


#!/bin/sh

if [ $# -eq 1 ]; then

echo "Usage: space.sh

…"

fi

for a



do

echo –ne “La dir $a occupa `du –sk $a | awk ‘{ print $1 }’` bytes \n”

done
Esercitazione(1):

Scrivere uno shell script interattivo per l’aggiunta di utenti con nome, nome completo, commenti; continuare l’inserimento di utenti fino a che non viene selezionato q.


Useradd –c “Umberto Pone” umberto

Passwd umberto umberto


(Per far prendere la password in input a passwd in maniera non interattiva)

cat pino | passwd pino --stdin


(ciclo da 1 a 10 con Bash)

#!/bin/sh

counter=1

while [ $counter -le 10 ]

do

echo $counter



counter=`expr $counter + 1`

done
Script generico con gestione dell’exit code e l’interpretazione dei parametri –x e dei file su cui operare; mostra inoltre come funziona basename e trap.


#!/bin/bash

# tellspace - visualizza spazio su disco di una serie di file

# usage: tellspace [opzioni] file [...files]

stat=1 #codice uscita di default

trap 'exit $stat' 0

trap 'echo "`basename $0`: Sono stato interrotto..." 1>&2' 9 15


files= switches=

for arg


do

case "$arg" in

-*) switches="$switches $arg";;

*) files="$files $arg";;

esac

done
case "$files" in



"") echo "Usage `basename $0` [opzioni] [file]" 1>&2 ;;

*) for file in $files

do du $switches "$file"

done


stat=0

;;

esac





Download 1.08 Mb.

Share with your friends:
1   2   3   4   5   6   7   8   9   10   11




The database is protected by copyright ©ininet.org 2024
send message

    Main page