Sei sulla pagina 1di 51

IntroduzioneaUnix

Primadiunix:l'hardware

fondamentale comprendere che non tutti i computer sono equivalenti > nontuttiicomputervannoutilizzatiallostesso modo:

Postazionidilavoro(mox1...mox20) Stazionigrafiche(monet):schedaememoriagrafica,HDveloce Serverdicalcolo(ebla,mozia,bithia):moltaRAM,HDveloce, busveloci. Computerperfunzionispecifiche(adesempiogw)(tosca) Servertrasparentiall'utente(fileserver,postaelettronica,www, stampanti,...)

Hardware:ogniprocessorevuoleuncodicebinariodiverso
IngenereNONesistecompatibilitbinariafraprocessorididiversa casaproduttrice. Processoridellastessaserie,ingenere,sonocompatibili. I processori pi diffusi sono Intel, di architettura i386. Esistono sottoarchitetture (i486, i586, i686,...), ma sono tutte compatibili all'indietro (i.e. i386 compatibile con le successive). (386, 486, pentium,pentiumII,pentiumIII,pentiumIV,xeon) Esiste un altro produttore, AMD, che produce processori di architetturai386(k5,k6,duron,athlon) Molto diffusi sono i processori utilizzati da Apple: non hanno compatibilitbinariaconi386.

Architetturea64bit
Intelhainproduzioneunprocessorediarchitetturanoncompatibile con i386, si chiama Itanium (architettura ia64), ed ha registri a 64bit. Anche AMD ha in produzione processori a 64bit, si chiamano OpteroneAthlon64.AlcontrariodiIntel,possonoeseguireanche codicicompilatiperi386. IBM,HP,SGI,Sun,...,hannotuttiinproduzioneprocessoria64bit, masonoaproduzionepilimitataemoltopicostosi.Nonhanno nessunacompatibilit(aparteall'internodiseriediproduzione). AlMOXsiusanoarchitetturei386eAMD64,MA... tosca(CompaQ)haprocessoriAlphaev56 monet(SGI)haunprocessoreMIPS12K NONTENTATEDIFARGIRARESUTOSCAe/oMONET CODICICOMPILATIALTROVE!

Generalit suUnix

NONesisteunsistemaoperativochesichiamaUNIX! Linux,AIX,HPUX,TrueUnix64,IRIX,Solaris...,sonofraipi diffusiunixa64bit.Ingeneresonolegatiaprocessoridiununico produttore Linux,openBSD,netBSD,freeBSD,SCOUnix,Solaris,...sono alcunifraipidiffusiunicesperia32(Intel Xeon/Pentium/Celeron,AMDAthlon/Duron) LinuxIA64,perora,l'unicounixperIntelia64(Itanium)e AMD64(Opteron/Athlon64)

Linux

Documentazione: www.kernel.org

EunoUnixstileBSD Esiste per processori Intel/AMD (i normali PC), Alpha (usualmente utilizzati sui server da Compaq/Digital), Spark (utilizzatidaSun),m68000(AppleMacintosh),. NonlunicoUnixperPCIntel,eprobabilmentenonneanche ilmigliore,mailpidiffuso EdistribuibilesottolalicenzaGPL Sicaratterizzaufficialmenteconlaversionedelkernel(2.6.5),e pigenericamenteconladistribuzione

DistribuzioniLinux

Documentazione: www.redhat.com fedora.redhat.com www.suse.com www.linuxfromscratch.org

Chiunque pu distribuire Linux, anche a pagamento, arricchendolo di tutti i software complementari che vuole (sia GPL che non), purch fornisca il codice sorgente di tutto il codice GPL e garantisca a chiunque di poter distribuire a sua voltasottolestessecondizioni. Le principali distribuzioni Linux sono tutte gratuite se prelevateviarete,eapagamentoserichiesteviapostanormale (inquestocasosonocorredatedimanuali,eavoltediassistenza telefonica).Periodicamenteappaionoindistribuzionegratuitain edicola,abbinatearivistediinformatica.

UNIXvsWINDOWS
UnixunS.O.adattoperiserver(WSnonmaistato,fin'ora,a 64bit),conunelevatissimouptime. Unix ha una solidissima distribuzione di software freeware e shareware. Con Unix molto facile assemblare e gestire sistemi di calcolatori collegati fra loro in rete, multiutente e multiarchitettura. Windows funziona molto meglio come ambiente ufficio, ossia comecalcolatoredascrivaniaperprodottioffice MA... oggettodiattaccodapartedeivirusinformatici.

UNIXcomesistema

multiutente:nonpensateMAIdiesseregliuniciadutilizzareil computersucuistatelavorando.

multitasking:nonpensateMAIchelevostreapplicazionisiano leunicheagiraresuunadatamacchina.

Halerisorsedistribuite:nonpensateMAIdisapereesattamente quanticomputerstateutilizzandoinundatomomento(enon pensateMAIdiutilizzarneunosolo).

Esempio

Sietel'utenteluca, lavoratenellaboratorioMOXsumox5, lanciateilcodicefluentsuebla, ilcodiceleggel'inputda /u/luca/..../input escrivel'outputsu /u/disco4/luca/output

QUANTICOMPUTERSTATEUTILIZZANDO?

8
1.mox5dacuilanciateilcomando 2.eblaacuisietecollegati 3.ebla2sucuigirailjob 4.ebla4sucuiildiscosucuiscrivetel'output 5.ipmma12dacuipassanolecomunicazioniperinodidiebla 6.normasucuirisiedelaHOMEdiluca 7.carthagosucuirisiedel'eseguibilenelrepository 8.moxtempcherilascialemappeperlavostraidentit

Esempio1:mox5

AMDAthlon1400,256MBRAM s.o.Linuxkernel2.4,distribuzioneRH9.0 Nessunfilesystemutentelocale HWlocale:CDrom,floppy,schedavideo Ilmonitor(SonyTrinitronGS420)costacircailtriplodelPC.

unapostazionedilavoro,adattaacompilare(a32bit)egirarecasi testpiccoliemedi

Esempio2:ebla3

PCbiprocessoreAMDAthlon1800,4GBRAM s.o.OpenmosixLinux2.4,R.H.7.3 fsutentelocalesudiscoSCSI36GB Nessunmonitor,nessunaschedavideo Schedadiretea1Gigabit

unnododicalcolo,confsscratch,diunclusterperilcalcolo parallelo

Esempio3:mozia

BiprocessoreAMDOpteron180064bit S.O.Linuxkernel2.4,RHEnterprise 6GBRAM FsutentelocalesudiscoSCSI36GB Nessunmonitor,nessunaschedavideo Schedadiretea1Gigabit

unserverdicalcoloseriale/paralleloa64bit

Inconclusione...

Utilizzate sempre il computer pi appropriato per quello che dovetefare.

Imparate a minimizzare il numero di computer che utilizzate contemporaneamente,inmododamassimizzareleprenotazionie minimizzareilrischiodifallimento.

TerminalevsInterfacciagrafica

L'uso del terminale essenziale in un sistema Unix composto da differenticomputer:soloilterminaleassicuralapienaoperabilit sututtelemacchine,apartiredaun'unicaconsole. Il terminale aiuta inoltre ad unuso piconsapevole dei comandi e delfunzionamentodelPCstesso.

Lashell

Documentazione: www.gnu.org/software/bash/bash.html

Lashell ilprogrammachegestiscelalineacomandiel'ambiente terminale.Neesistonodiverse(sh,ksh,bash,csh,ash,...)masono analoghe (quando non simili). Una delle pi diffuse la bash. Tutte le shell hanno i costrutti tipici dei linguaggi di programmazione, e vengono estensivamente usate per comporre programmi(script). Quandounashellsiavvia,vienedidefaultcostruitounambietedi variabili (variabili d'ambiente) predefinito. Ogni istanza della shellhaunambienteseparatodallealtre.

Levariabilid'ambiente
Ogni sessione (da intendersi come ogni prompt attivo)

possiede un insieme di variabili dambiente che determinano alcune caratteristiche della sessione. I loro nomi possono dipenderedallaparticolareshellinuso. Sivisualizzanoconlistruzioneset Sireferenzianoprecedutedalcarattere$ Si possono definire a cura dellutilizzatore con listruzione export(kshebash)osetenv(csh)eperconvenzionesiusanosolo letteremaiuscoleperiloronomi. Le principali variabili di uso comune sono PATH e DISPLAY

PATHeDISPLAY
PATH linsieme di directory in cui la shell va a cercare il comando inserito. Per aggiungere una nuova directory a quelle gi esistenti,ilcomando exportPATH=$PATH:/nuova_directory DISPLAY lo schermo su cui vengono visualizzate le applicazionigrafiche(nellaformanome_macchina:0).Esempio exportDISPLAY=aida.mate.polimi.it:0 La macchina remota (in questo caso aida), deve autorizzare lesportazioneconlistruzionexhost xhost+<nome_macchina>

Icomandi

Icomandipossibilidaterminalesonoalcunemigliaia...

man<comando> info<comando> apropos<comando>

Ladocumentazioneottima(almenoininglese)

Unsottoinsiemeessenzialedicomandiper...

...crearefileedirectory(vuoti):touch,mkdir ...crearefiletesto(nonvuoti)emodificarli:editor ...elencareifileinunadirectory:ls ...visualizzareunfiletesto:more,cat,less ...cambiaredirectory:cd(./../) ...collegarsiadaltricomputer:ssh,sftp

Unsottoinsiemeessenzialediapplicazioni

Editor... Browser:mozilla,netscape,konqueror,... Grafica:gimp,xmgr,xfig Fotoritocco:,xpaint Visorigrafici:ee Compilatori:suitegnu(gcc,g++,g77,...),ifc,prof90,... Debugger:ddd

Editor

Esistonodecinedieditorditesto:laregola cheognunosceglieil preferito,inquantotuttiifileprodottisonocompatibili. vi:editornongraficouniversale(eantiquato).E'l'unicochevi permettedilavoraredaterminalesuqualsiasicomputerunix localeoremotosenzapreoccuparsidell'esportazionediDISPLAY emacs,xemacs:unodeglieditorgraficipiraffinati nedit:unodeipiutilizzatialMOX

Redirezionediinputeoutput

possibile manipolare lo STDIN e lo STDOUT dei comandi, perredirigerloda/afileeda/acomando

>redirezionedelloSTDOUTafile <redirezionedelloSTDINdafile

| (pipe) STDOUT rediretto nello STDIN di un secondo comando

Ilmouse

Un'armainpi,ilmouse:unarisorsadimemoriaaportatadimano. Ottimoperilcut&pasteditesto,anchefraapplicazionidiverse.

Ilfile
In Unix il termine file si riferisce non solo ad un insieme di caratterialfanumericileggibili,maancheaduninsiemedicaratteriin codicemacchina(programmieseguibilicompilati),oaporteversogli apparatihardware(file/dev). Ognifile caratterizzatodaunnome,edaunutenteproprietario: cometale,hadeipermessidefinitidiletturar,scritturaw,esecuzione x riferiti allutente proprietario u , agli utenti del gruppo di appartenenzag,alrestodegliutentio. Ilcomandopergestireipermessichmod La directory (analogo della cartella Windows) un file che contienealtrifile:ilpermessox(esecuzione)siriferisceallapossibilit diaccedervi. Il filesystem il sistema di organizzazione dei file: possiede lusualestrutturaadalbero,conpartenzadalladirectoryroot

Organizzazionedeifile
Un file Unix univocamente determinato dal percorso a partire dalla directory root: graficamente, lelenco di directory si indica con lespressione /directory_1/directory_2/directory_3// directory_n/<nome_file> Ladirectoryrootsiindicacon/ Lutente ha una directory predefinita, la HOME directory in cui si trovaautomaticamentealmomentodelcollegamento. Directoryparticolarisono(inbash): .>ladirectorycorrente(PWD) ..>ladirectoryprecedentenelfilesystem ~>laHOMEdirectory >ladirectorydacuisiproviene(OLDPWD)

Ilfilesystem
Il filesystem uno spazio disco organizzato, con dimensioni fissate,indipendentidalladimensionedeldiscorigido. Dal punto di vista dell'accesso, il filesystem si presenta con l'usuale strutturaadalbero.Unfilesystempuessereinnestato(montato)suun ramodiunaltro,ampliandolastrutturaadalbero. Iltuttorisultatrasparenteallutilizzatore. Ilfilesystempurisiederefisicamentesuundiscolocaleosuun disco remoto, e pu essere replicato in diverse posizioni. Un filesystemremotovienedettoditipo NFS (NetworkFileSystem),dal nome del protocollo di condivisione. Ogni modifica fatta su un filesystemremotoimmediatamentevisibiledaognunadellelocazioni in cui il filesystem montato (non esistono repliche, il filesystem unico).

Ilfilesystem

importante capire che il filesystem delocalizzato, e che l'eventuale blocco di un computer pu impedire l'accesso a parte delfilesystem. Nel sistema unix del MOX, ci sono centinaia di gigabyte a disposizione degli utenti, anche se non tutto lo spazio disco equivalente.

Spazidisco

home:/u/<login>lospaziodiscobackuppatoeconquota. bulk:/u/<pianeta>lospaziodiscodideposito,non backuppato. scratch:/u/<server>lospaziodiscodideposito,temporaneo, nonbackuppato.Suiserverdicalcolo,ildiscolocaleveloce. tmp:spazioadisposizionedelleapplicazionidegliutenti,e nessunutentedeveutilizzarlodirettamente!

Gestionedellospaziodisco

df. Indicacapaciteoccupazionedelfilesystemsucuicisitrova du elencal'occupazionedelledirectoryapartiredallacorrente quota indicalapropriasituazionediquotadisco

Utilizzodelleperiferiche
FDD: con filesystem DOS (ossia gli usuali dischetti), usare la suitedicomandimtools mdira: mcopynome_filea: mcopya:nome_file. mdela:nome_file CDROM:simontaildevice mount/mnt/cdrom esiaccedecomeunnormaledisco(r.o.) CHIAVE USB: (quando funziona) si usano gli mtools riferendosialdevicec:

INTERFACCEGRAFICHE

Unpo'diclassificazione:

DesktopManager(DM):gestiscelecaratteristicheavanzate (desktopmultipli,barrecomandi,icone).Gnome,Kde, WindowMaker,... WindowManager:gestiscelefinestreeimen(mwm,twm, sawfish,enlightment,....) Servervideo:gestiscel'interfacciagrafica(X) Drivervideo:gestiscel'hardware(all'utentenonimporta)

Ilprocesso

Documentazione: manps

Un processo un insieme di comandi in codice macchina (programma)inesecuzione. In un momento qualsiasi, un computer acceso ha decine (se non centinaia) di processi in corso. Ognuno di essi ha un numero identificatoreunico(PID). Iprocessisivisualizzanoconl'istruzionepsef Iprocessiincorsosipossonotrovareindiversistati,fracui: R S T Z running(soloalpiunprocessoperprocessore) sleeping stopped zombie

Ilprocesso
possibilemandaresegnaliaiprocessi,tramiteilcomando kill,fra cui: SIGTERM SIGKILL kill<PID> kill9<PID>

Entrambiterminanoilprocesso,conladifferenzacheSIGTERMd il tempo al processo di chiudere i file e liberare le risorse che occupa,mentreilSIGKILL'ammazza'ilsegnalebrutalmente. Un processo in stato zombie non pu ricevere segnali: solitamente nonoccupamolterisorse,mapucomunquebloccareunarisorsa (adesempioundevice,ounfilesystem).

Ilprocesso

Unprocessorisultasemprefigliodiunaltroprocesso(dettopadre, parent, PPID), che rester in vita fino alla terminazione del processofiglio. Se il padre termina in maniera anomala, i figli possono diventare zombies, o entrare in loop e occupare una quantit anomala di memoriaecpu,rallentandolenormalioperazionidelcomputer. Volendointerrompereunprocesso,utilizzareprimailSIGTERMe soloinunsecondotempoilSIGKILL.

Terminareleapplicazioni
molto importante terminare le applicazioni in modo corretto, ad evitare che rimangano processi zombie, che consumano e/o occupanorisorse. Tutte le applicazionivanno chiuse con l'apposito comandoquit preso da men. L'abitudine (presa da Microsoft) di chiudere le applicazionicliccandosulla x dellacornice forieradidisgrazie informatiche, in quanto la cornice un processo diverso dall'applicazione, e leapplicazioninonsonoingradodigestire l'improvvisamancanzadicomunicazioneconlacornice. Esempio classico: processi netscape/mozilla che occupano il 99% della CPU e impediscono il corretto riavvio di nuove istanzedelprogramma.

Terminareleapplicazioni

Altro esempio classico: una non corretta uscita dall'ambiente grafico impedisce che il desktop riesca a chiudere correttamente i suoi file di configurazione (con conseguenti problemi al riavvio), e non liberi i device (floppy disc, cdrom, device grafici) dalla propriet dell'utente, con la ben nota conseguenza che l'utente successivononriusciradutilizzarli.

5regoleperilcalcolointensivo
Quandosilanciaunjobdicalcolo,chepuavereuntempodiesecuzione di diverse ore (o giorni), fondamentale considerare i seguenti concetti:

RESTART fsSCRATCH NOHUP STDIN/STDOUT NICE

RESTART

Il programma deve scrivere ogni tanto (poche ore) un file con i risultati raggiunti fino a quel momento, in modo che possa ripartire da quel momento del calcolo in caso di interruzione prematuraforzata.

Il dump dei dati per il restart un ottimo esempio di utilizzo dei dischiscratchdeiserverdicalcolo.

fsSCRATCH

Se il codice ha un grosso input da leggere, e parecchio output da scrivere(adesempioifiledirestart),fondamentaleutilizzaredei dischilocalisulserverchesiutilizzaperilcalcolo. TUTTIiSERVERdiCALCOLOhannounfsSCRATCH! Nota: se il codicepermetteunafacilerilocazionedeifilediI/O,il tuttoresoestremamentesemplice

NOHUP
Sempre,sempre, , ,SEMPRE lanciareiljobinbatch,tramiteilcomando nohup<stringadicomando>& In questo modo ci si potr scollegare dal server senza compromettereiljob. Si potr comunque tenere sott'occhio l'output a schermo con il comando tailfnohup.out

STDIN/STDOUT

Unbuonprogrammadicalcolopermettedifareamenodiricorrere allo standard input (STDIN) e allo standard output (STDOUT). Comunque sempre bene imparare a gestirli, in particolare a redirigerli.

LoSTDINlatastiera.Puesserealimentatodafiletramiteil comandodiredirezione< LoSTDOUTloschermo.Puessereredirettosufiletramiteil comando>

(nohupfaautomaticamentequestaoperazione,emetteloSTDOUT nelfilenohup.out)

STDIN/STDOUT/STDERR

UnoSTDINmultiplosiredirigeconunfilecontenentepirighe UnoSTDOUTredirettosufilesileggeindirettaconilcomando tailfnome_file(maattenzionecheloSTDOUTbufferato) Se si vuole aggirare il buffer, si pu utilizzare lo STDERR. Per redirigereloSTDERRnelloSTDOUT(equestosuunfile),siusa lasequenza:comando>file.out2>&1

STDIN/STDOUT/STDERR

Ognilinguaggiodiprogrammazionehailsuomodoperidentificare STDIN/STDOUT/STDERR

fortranunit=5(o*),6(o*),0rispettivamente C??? Matlab???

Unbuoncodicepermettedimodificarealvololeunitdiingressoe diuscita.

NICE

nicevuoldiresimpatico! Il nice influisce sulla priorit con cui un processo gira su un'architetturamultitasking. Default0 nice positiviinduconounadiminuzionedellapriorit:sesilanciano pijobsuunastessamacchina(anchemultiprocessore), nice utilizzareunnicecrescenteperijobsuccessivialprimo(10,11, 12,...) Ilnicenonhainfluenzasuljobselamacchinahalerisorselibere!

NICE

Ilnicediunprocessosivisualizzacolcomandotop Se si vuole cambiare il nice di un processo in esecuzione esiste il comandorenice

AT

Un comando molto importante per gestire bene job di lunga durata at che permette di lanciare un job in una data futura prefissata a piacere. bene riconrdare che due job che utilizzano molte risorse possonorallentarsiavicendasegiranoassiemesullastessacpu: pu quindi convenire un'appropriata programmazione del loro lancio,inmododaevitaresovrapposizioni.

MAKE
make un programma che esegue dei comandi sulla base di relazionitemporali: laformulazionepisemplice sequestofilepirecentediquello,alloraeseguouncomando chetradottonellasintassidimakediventa questo:quello (TAB)comando questosichiamatarget

MAKE La dipendenza pu anche non esserci (ossia l'azione viene compiutaogniqualvoltavieneinvocatoiltarget). Es.makeclean clean: rm*.o possibile utilizzare variabili per formare oggetti composti. Es. OBJ=pippo.opluto.opaperino.o clean: rm$(OBJ) ETC...

Documentazione
Purtroppo(!)ladocumentazioneinfinita... www.tldp.org(EN,IT) www.linux.it(IT) www.pluto.it(IT) www.kernel.org www.fsf.org www.unix.org www.catb.org/~esr/writings/cathedralbazaar