Some right reserved
Scegli come ricevere gli ultimi articoli:
Il Portalinux è anche su facebook
Sondaggio in corso
Ti piacerebbe avere una rubrica dedicata alle domande dei lettori?
- Si (93%, 25 Votes)
- No (7%, 2 Votes)
Total Voters: 27
Loading ...Basta MSN, usa Jabber!
Categorie
-
Meta
Wordpress Archive
-
Lo staff
Posted on settembre 19, 2008 | Nessun commentoDi seguito trovate le persone che collaborano col Portalinux:
Alex "M0rF3uS" Anghelone: Admin del Portalinux nonchè Packager/manutentore del repository per Ubuntu
Antonio "adoldo" Doldo: Packager per il repository del progetto Virtualbox-ose.
Davide "Davide T." Tinghino: Redattore del Portalinux
Danilo "Guevara" Emo: Graphic Designer
Paolo "polslinux" stivanin: Packager del Portalinux
Alessio "Bl@st3r" Biancalana: Packager per il repository di ArchLinux
-
morfeus+Adoldo= Virtualbox OSE [repository]
Posted on settembre 3, 2008 | 7 commentiE' mio immenso piacere rendere noto che da oggi io e Antonio Doldo, abbiamo stretto una collaborazione per la pubblicazione dei suoi pacchetti di virtualbox OSE ed SVN, sul repository del portale

-
Logubuntu si evolve, nasce il portalinux
Posted on agosto 10, 2008 | Nessun commentoGià da un paio di giorni chi sarà passato da queste parti avrà notato che un pò tutto è cambiato, probabilmente qualcuno avrà pensato di aver sbagliato sito

Già da un pò di tempo avevo in mente di cambiare piattaforma perchè avevo adocchiato Drupal. Però vuoi la pigrizia, vuoi la mancanza di tempo non ho mai portato avanti la cosa...
-
RAID, impariamo cos’è ed utilizziamolo su Ubuntu (4° Parte – L’installazione)
Posted on luglio 24, 2008 | 26 commentiEd eccoci con l'ultima delle guide inerenti il raid, la più interessante a quanto pare :D vediamo come mettere in pratica tutto quello detto sin'ora ed installare debian/ubuntu con il raid-1 software...Premessa: come già detto da bergs nella sua mini guida, con ubuntu per poter installarla con questo sistema avremo bisogno della versione alternate non standard, questo perchè (purtroppo non ho mai capito il perchè) con l'installazione grafica abbiamo la possibilità di effettuare un installazione standard sui dischi.
Su debian invece nessun problema, basta seguire queste indicazioni...
Iniziate e proseguite i primi passi dell'installazione, sino a giungere al partizionamento dei dischi e scegliamo il metodo manuale...
Cancellate eventuali partizioni residue su tutti e due i dischi sino a trovarvi in questa situazione...
Selezionate il primo disco e create una partizione...
Le scelte sono sempre le solite, selezionate una partizione primaria all'inizio dello spazio libero disponibile, dopo dovrete fare una scelta:
Se scegliete di non utilizzare lvm partizionate il disco esattamente come fareste normalmente, scegliendo come utilizzo della partizione "Volume Fisico per il RAID", quindi farete una partizione di root, una per la home, una per lo swap e via cosi fino a creare tutte le partizioni che volete, e dopo ripetete la procedura anche sul secondo disco in maniera identica.
Se invece volete utilizzare lvm create un unica partizione per tutto il disco, e scegliete di utilizzare tale partizione come volume fisico per il RAID...
ovviamente ripetete la stessa operazione sul secondo disco, finito tutto nel riepilogo dovreste avere una situazione simile...
Ok adesso selezionate come in figura la voce "configura raid software", e rispondete alle domande seguenti, fino a creare un Device Multidisk
e selezionate di voler creare un raid di livello 1
poi dovete selezionare il numero di dischi che devono partecipare al raid, in questo caso due, e il numero di device di "spare" (scorta), che nel nostro caso sono zero, infine vi chiede di scegliere i device che devono partecipare, saranno già selezionati tutti e due quindi probabilmente dovreste solo cliccare ok...
finita questa procedura abbiamo a questo punto completato la configurazione del raid 1, ed al riepilogo dovremmo avere questa situazione...
A questo punto se volete utilizzare solo il raid 1 abbiamo finito, se invece vogliamo utilizzare lvm, selezioniamo la partizione del dispositivo raid software e scegliamo di utilizzarlo come volume fisico per lvm
completiamo gli step ed alla fine dovremmo avere nel riepilogo una situazione del genere
A questo punto dobbiamo scegliere di configurare LVM e rispondere SI alla domanda che ci viene posta dopo
!!!IMPORTANTE!!! Sicuramente risconterete questo errore continuando con la procedura..
E' un errore di alcuna rilevanza possiamo cliccare tranquillamente su ignora, la configurazione di lvm non subirà alcun danno (in ogni server che install praticamente lo riscontro ma non è un problema)
Ok adesso dobbiamo creare prima un gruppo di volumi logici, e poi creare questi volumi logici che non sono altro le partizioni che poi vorremo utilizzare sui dischi
possiamo dare un nome qualsiasi al gruppo di volume anche "cippalippa", e poi selezioniamo l'unico device multidisk presente, che dovra partecipare al gruppo di volumi logici
adesso dobbiamo creare dentro il gruppo, i vari volumi logici del multidisk, questo lo faremo esattamente come per le partizioni normali in un solo disco, in questo esempio sono state create solo una partizione di root e una di swap, quindi nel riepilogo troveremo una situazione simile
a questo punto selezionate i singoli volumi logici e alla richieste di come utilizzare lo spazio voi scegliere filesystem ext3, e definite i vari mout point, stessa cosa per la partizione di swap: scegliete "utilizza come partizione di swap". Ecco la situazione finale:
scegliamo di terminare il partizionamento dei dischi e rispondiamo si alla domanda successiva:
adesso una nota dolente per i fan di grub, il raid1 con lvm non è compatibile con grub quindi l'unica alternativa sul boot manager sarà lilo...scegliamo di installarlo sul device multidisk
Finito! :D concludiamo l'installazione ed al primo avvio avremo un disco md0 che conterrà la partizione di root e cosi via, stessa solfa di sda1, sda2 eccetera ;)
Ringraziamenti ((per i malfidati...)):
Wikipedia per la storia e la teoria sul RAID 1
-
RAID, impariamo cos’è ed utilizziamolo su Ubuntu (1° Parte – Raid 0 e Raid 1)
Posted on luglio 21, 2008 | 11 commentiCon oggi parte un maxi how-to diviso in più articoli, che ha come intento quello di spiegare bene cosa è il raid (software/hardware), e come utilizzarlo su Ubuntu...Inizio col dire che prendo spunto da un articolo di bergs molto semplificato (tra l'altro stamani noto che ha cancellato il mio commento lasciato ieri sera, non capisco perchè :shock: bah va beh...), il quale lamenta il fatto che tra guide italiane ed inglesi non ce ne sia una definitiva per ubuntu, cosi ho deciso di crearla io :D
In questi articoli parleremo di RAID sia software che hardware, di volumi gestiti con LVM o no (solo nel caso di RAID software), mentre, e poi capirete perchè, l'how-to spiegherà solo come installare il RAID software.
Come chi segue da tempo le mie maxi guide oramai saprà, iniziamo con un pò di teoria, prof. mode ON :mrgreen:
Parte 1: Cos'è il raid
Iniziamo dicendo che un raid è un array di dischi, dall'acronimo stesso Redundant Array of Independent Disks ("insieme ridondante di dischi indipendenti" ndr.), ed è un sistema che usa tali dischi per garantire la ridondanza dei dati, oppure la divisione del dato per un aumento delle prestazioni. E' un sistema, ad oggi, utilizzato praticamente ovunque in ambientazione server, ma anche in ambiente home oramai chiunque ha un computer con almeno due dischi (i portatili un pò meno ma ci sono), e quindi potrebbe essere utile sfruttare il raid a seconda dello scopo che vogliamo raggiungere. Nel suo utilizzo più semplice il raid permette di combinare più dischi, facendo vedere al sistema un solo disco "virtuale", e generalmente vengono utilizzati dischi con le stesse capacità/caratteristiche. Il sistema raid si compone di diversi livelli divisi per categoria: Livelli raid standard:- Raid 0
- Raid 1
- Raid 2
- Raid 3
- Raid 4
- Raid 5
- Raid 6
- Raid 0+1
- Raid 1+0
- Raid a doppia parità
- Raid 7
Come viene utilizzato:
Una delle prima implementazioni del raid è stato il cosiddetto Data Striping, ossia quel metodo che ha lo scopo di aumentare le prestazioni, dividendo il dato in tante parti quante sono i dischi dell'array, riducendo i tempi di latenza per la lettura/scrittura, per ogni disco, più nel dettaglio: La grandezza della partizione viene chiamata unità di striping, e queste vengono distribuite sui dischi con un algoritmo di round robin (un disco alla volta), quando la dimensione di un dato è più grande dell'unità di striping, questo viene scritto su più dischi, non ci avete capito niente vero? Vediamolo meglio... Poniamo di avere un unità di striping di 1 Bit, ed un arrai di 8 dischi. Se dobbiamo scrivere un dato di un bit questo verrà scritto solo sul primo disco, un dato di due bit verrà scritto per metà sul primo e per metà sul secondo, uno di 3 bit verrà diviso in 3 parti e scritto su tre dischi, e cosi via fino al dato di 8 bit che verrà scritto su tutti i dischi. Qualora il dato è più grande di 8 bit il giro ricomincia...Hardware/Software
Il raid può essere implementato sia con hardware dedicato (raid hardware), che con software adatto su hardware comune (raid software). Tramite il raid software è il sistema operativo (nei sistemi linux è il kernel a dire la verità), a gestire l'array di dischi attraverso un normale controlle IDE/SATA/SCSI montato sulla macchina. Generalmente questo tipo è leggermente più lento di un raid hardware (ovviamente), ma è molto meno costoso in quanto non costringe all'acquisto di componenti dedicati. Il raid hardware invece, fa uso di un controller dedicato che può essere una scheda di espansione PCI, oppure un controller integrato nella scheda madre. Questo gestisce i dischi per conto del sistema operativo, ed effettua controlli di parità, necessari per alcuni livelli di raid. Questa implementazione, oltre ad essere meno onerosa e più facile da gestire lato sistema operativo, permette anche (generalmente), l'hot swapping, ossia la sostituzione "a caldo" dei dischi, cioè mentre il sistema operativo....è operativo :mrgreen: Tutti e due i sistemi invece permettono l'utilizzo di un meccanismo chiamato hot spare, vale a dire l'utilizzo di dischi "di scorta", che vengono attivati immediatamente nel caso uno o più dischi vadano in failure.Raid 0 (Striping)
Il sistema RAID0, chiamato anche striping, divide il dato equamente tra due o più dischi, senza nessun controllo di parità. Questo sistema, evidentemente, fornisce un alto rapporto in termini di prestazioni, ma basso in termini di affidabilità, questa infatti è uguale all'affidabilità media dei dischi diviso per il numero di dischi presenti.
Ne consegue che a conti fatti, l'affidabilità media di un sistema a due dischi, è uguale alla metà dell'affidabilità di un disco solo, questo perchè il filesystem è diviso per entrambi i dischi, e quindi quando un disco va in failure il filesystem non può più gestire i dati, è anche vero che spesso questi possono essere recuperati con appositi tool, ma questi quasi sicuramente risulteranno essere corrotti.
Questo sistema è molto utile quando la ridondanza dei dati non è un fattore rilevante, oppure quando il numero di dischi è limitato dal sistema operativo (Windows ad esempio limita le lettere dei dischi a 24...indovinate un pò perchè), ed è quindi necessario condividere i dati con un numero maggiore.
Raid 1 (Mirroring)
Il sistema Raid 1 prevede la scrittura dei dati in maniera speculare su tutti i dischi dell'array (mirroring).
Sistema molto utilizzato in quanto al giorno d'oggi la garanzia della ridondanza dei dati la fa da padrone.
Di contro bisogna fare attenzione a che dischi vengono utilizzati, in quanto se i dischi non sono uguali in termini di capacità, non verrà utilizzata la capienza massima di tutti e due, ma al massimo quella del più piccolo; se avremo quindi un disco da 100 ed uno da 80 gigabyte, i 20 GB di differenza dal più grosso andranno persi.
Contrariamente al Raid 0, l'affidabilità media del sistema aumenta di un fattore x, rispetto ad un sistema classico ad un disco, dove x sta per il numero di dischi; avremo quindi che un sistema a due dischi avrà affidabilità doppia, con 3 dischi tripla e cosi via...questo proprio grazie alla ridondanza dei dati.
Punto a favore di questa implementazione è anche la versatilità, in quanto è possibile aumentare le prestazioni in fase di lettura, dato che il raid può leggere dal secondo disco se il primo è occupato (ma non ci può scrivere).
Per oggi direi che è abbastanza, con la prssima guida vedremo altre implementazioni del raid più complesse, ma che in definitiva si basano tutte su una specie di combinazione di queste due implementazioni.
-
Post scandalo: come mettere in piedi un semplice tracker bittorrent
Posted on luglio 19, 2008 | 2 commentiQuesta sera voglio rischiare l'ergastolo :D vedremo come mettere in piedi un semplice tracker bittorrent per la condivisione file con questo protocollo...Prima i dovuti preamboli :mrgreen:
M0rF3uS, me medesimo, nonchè amministratore di questo blog ci tengo a precisare che non mi riterrò responsabile dell'uso che gli utenti faranno di questa guida.
In quanto tale (la guida), è stata concepita a puro scopo illustrativo e didattico, ed anzi M0rF3uS' Ubuntu Blog ricorda ai lettori che utilizzare questi sistemi per la condivisione illegale di file coperti da copyright, è perseguibile legalmente.
Ma quindi perchè ti vuoi fare del male spiegando a tutti come mettere in piedi un server bittorrent? Vi starete chiedendo. Perchè, checchè se ne dica, il concetto di file sharing in se non è sbagliato, anzi è addirittura nobile; è l'uso che tutti ne fanno che ne rende l'argomento quotidiano di punta. Basta dare un occhio a punto informatico, per leggere quasi una volta al giorno una notizia legata ad arresti per file sharing illegale. Mentre pensiamo ad una grande azienda produttrice di software ad esempio: Avere un server interno munito di tracker torrent potrebbe essere una marcia in più per gli sviluppatori per condividere i vari progetti al loro interno in maniera facile e veloce, con un notevole incremento sulla produttività. Vediamo quindi cosa ci serve per installarlo:Un web server come Apache PHP, il tracker è stato testato con la versione 5 ma dovrebbe funzionare anche con php4 MySQL, il database per tenere traccia di tutto
Il software in questione invece si chiama Rivettracker. Non dobbiamo fare nulla di disarmante, basta scaricare il pacchetto compresso, e scopattarlo della directory www del nostro webserver, e poi puntare il nostro browser su http://indirizzo_webserver/rivettracker/install.php e seguire la procedura guidata; una volta finita avremo creato le tabelle necessarie all'interno del db e settata l'utenza di amministratore. L'ultima pagina della procedura è quella più importante che riguarda i settaggi del tracker, leggete attentamente tutte le descrizioni per capire cosa state facendo, in casi veramente estremi sappiate che le configurazioni di default potrebbero essere una buona base di partenza. In rivettracker ci sono due tipologie di utenti, gli aministratori, che per definizione possono far tutto; e gli uploaders, che con un pò di fantasia si può intuire che sono gli utenti autorizzati ad uploadare file nel database del tracker. Finita l'installazione avremo creato correttamente il file config.php ma prima di iniziare dobbiamo essere sicuri di eliminare il file install.php (wordpress style), dopodichè puntare a http://indirizzo_webserver/rivettracker, per averlo bello e funzionante. Una funzionalità molto comoda è la modalità di upload in batch dei file, possiamo infatti mettere più file dentro un file zippato, uploadarlo, ed effettuare un unico upload per più file, dobbiamo solo assicurarci che lo zip al suo interno non abbia sottocartella ma solo i files. -
Alla stregua di C.Colombo..anche io scopro un nuovo mondo (per me)
Posted on giugno 28, 2008 | 3 commentiDevo dire che nella nuova azienda dove lavoro sono astuti, scelgono sempre i momenti migliori per mettertela nel c**** (scherzosamente parlando)

ebbene si....questa settimana lavorativa si è conclusa (me lo hanno detto venerdi infatti) con una notiziona, ma partiamo dal principio.
L'infrastruttura attualmente si compone di alcune macchine che fungono da firewall/bilanciatori basate su OpenBSD; bene io non ho la più pallida idea di come funzioni questo sistema operativo, e il mio responsabile fortunatamente ha un idea, sempre pallida, ma molto più chiara della mia.
Queste macchine erano state messe in piedi da una persona che, se non ho capito male, non lavora più con noi...o quantomeno non nella gestione sistemistica con noi.
Quando una cosa la si conosce poco si sa..come ci si mette le mani sopra inizia a dare problemi, è cosi è stato, al che vedendo che la macchina è anche abbastanza datata è scattata la proposta:
Io: Fede ma dato che queste macchine tanto bene non stanno e noi di bsd ne sappiamo poco, che ne dici se proponiamo un progetto per inserire almeno un cisco pix a monte per fare routing/firewall? Si riescono a trovare anche a prezzi non eccessivi.
Mio resp: Si non sarebbe male però vedi...è già stato deciso che quando l'infrastruttura verrà aggiornata e ridondata, quella sezione di rete sarà gestita da macchine che continueranno a fare anche da bilanciatori, ed è già stato deciso che quelle macchine saranno OpenBSD quindi si deve saperla.
Al che io penso "ma guarda te che culo", e quindi a quanto pare mi toccherà impararla perchè quando sarà il momento io ovviamente sarò dentro al progetto e non posso farmi trovare impreparato.
Scatta quindi l'operazione Macchina virtuale, ho installato virtualbox sul mio portatile ed installato openbsd 4.3, dopo averci smadonnato su solo per installarla (!) ho deciso di installare il server X, contrariamente a quanto si farebbe con un server, giusto per avere un approccio più soft e non troppo sconvolgente.
Peccato che i driver video per virtualbox di openbsd ancora non ci sono, e io non lo sapevo ovviamente, l'ho scoperto dopo una serata di bestemmie....cominciamo bene vero? Rimbocchiamoci le mani c'è tanto da imparare ora
n00b mode ON :mrgreen:
-
Intrepid Ibex: primo aggiornamento
Posted on giugno 15, 2008 | 3 commentiNon faccio in tempo a pubblicare l'articolo precedente che già le novità da postare saltano fuori... mentre scrivevo update-manager ha finito di prelevare i pacchetti, ed era già partita da un pezzo la configurazione degli stessi. Mentre clicco su "pubblica" dalla dashboard di wordpress ecco comparire il baloon pop-up che mi segnala un evento di crash..."minchia talmente instabile che non si installa nemmeno" ho pensato, e ho dato un occhio a cosa stesse pasturando il gestore dei pacchetti......"ma non tutto è perduto" penso, perchè mi basta cliccare su chiudi...
quindi debconf pare non essere un pacchetto necessario per ora, anche se potrebbe sembrare strano...ma va beh lo dice lui...se non fosse che, puntualmente, quasi a fine installazione compare questo bel pop-up
lo sapevo che quel pacchetto non era cosi scarsamente importante...adesso il processo si è interrotto ed è stato lanciato un dpkg-reconfigure -a, anche se non ho visto nessuna riconfigurazione ma solo uan chiusura fulminea del gestore di pacchetti...bah...cmq ora riavvio vedremo come procede...
Update: Prima di riavviare ho rilanciato l'update manager che mi segnalava debconf come aggiornamento disponibile, ho aggiornato (probabilmente ha solo riconfigurato) e tutto è andato liscio come l'olio, adesso ho appena riavviato...
Per ora non c'è nessuna novità visibile, diciamo che è più una hardy heron col nome cambiato :D vedremo in futuro
-
Wine 1.0RC1 [repository]
Posted on maggio 17, 2008 | 1 commentoHo appena finito di uploadare i primi pacchetti per hardy 32 bit nel repository, adesso troverete adunanza e la prima rc di wine 1.0. Per installare adunanza date: sudo apt-get install amule-svn-adunanza Per wine basta un semplice sudo apt-get install wine I lavori procedono un pò a rilento a causa di uno script .js di wordpress che mi sta dando parecchie noie con l'inserimento dei post, senza contate che spesso e volentieri il vps si incricca e devo resettare il tutto (ecco perchè alcuni di voi avranno trovato il blog lento o assente), ma anche qui sto rimediando, ho appena ordinato un intero server dedicato a breve vi farò sapere il mostriciattolo che ho scelto ;) -
Oltre a linux un pò di sport: Euro 2008
Posted on maggio 13, 2008 | Nessun commentoSe oltre alla vostra distro preferita, siete anche appassionati di sport, sicuramente non vorrete perdervi i prossimi campionati europei di calcio Euro2008...
A tal proposito vi propongo la visione di un sito particolare, ZicZac, un blog/portale multitematico (si anche informatica e linux), basato sulla celeberrima piattaforma di content management Wordpress.
Tale blog ha aperto da poco una sezione dedicata proprio ai prossimi campionati Euro2008 di Austria-Svizzera, inoltre la particolarità di questo blog è quella che permette a tutti gli utenti di proporre notizie, gossip e quant'altro, liberamente commentabili da tutti.
Quindi se volete mantenervi aggiornati sui prossimi europei di calcio vi consiglio di farci un giro ;)
[Fonte Simply Enginereeng]
-
Trasferimento Completato (finalmente)
Posted on maggio 10, 2008 | Nessun commentoDopo non pochi problemi sono riuscito a completare iml trasferimento del blog sul mio server...dopo giorni di combattimento estremo contro il database, wordpress, articoli che si perdono per la strada e quant'altro, finalmente (come d'altro canto avrete notato dal nuovo tema) sono riuscito a spostare il blog e ad applicare alcune modifiche.
Tutto questo perchè netsons ha dovuto disabilitare una funzione php che mi permetteva di mantenere il repository, per motivi di sicurezza. Cosi mi sono deciso di spostarlo sul server cosi non avrò più problemi inerenti l'hosting.
Aspettatevi quindi a breve un articolo che ufficializzerà la riapertura del repository :mrgreen:
C'è ancora qualche piccolo particolare da sistemare soprattutto sul nuovo tema, che ho scelto come sempre a grandezza "fluida" di modo da adattarsi a tutte le risoluzioni ;)
Come sempre, si accettano complimenti (soprattutto), critiche, suggerimenti...
-
La nostra amica più fidata: conosciamo la shell [parte 2°]
Posted on maggio 2, 2008 | 6 commentiNel precedente articolo abbiamo iniziato a conoscere la shell, ed a vedere alcune delle sue funzionalità...ci eravamo fermati agli alias, abbiamo visto quanti sia comodo poter riassumere un comando e le relative funzioni che ci servono, a sua volta in un unico comando che li possa richiamare.
Abbiamo anche visto come ogni comando preveda in dato in input ed uno in output, generalmente "passiamo" l'input tramite la tastiera (stdin ricordate?) e riceviamo l'output sullo schermo (stdout); ma i vari dati di I/O (Input Output, d'ora in poi per indicare questi termini insieme userò I/O), possono essere rediretti tramite un carattere jolly, per far si che la shell possa prendere l'input del comando da un file oppure redirigervi l'output.....vi ho beccato lo sapevo che non ve lo sareste ricordato :D e lo standard error? Non lo consideriamo? eheh infatti abbiamo detto che la shell gestisce anche l'ouput degli errori, ed anche questo può essere rediretto verso un file (ovviamente solo in output in quanto, naturalmente, non si può dare in input un file degli errori che utilità avrebbe? :mrgreen: )
Redirezione Input/Output
Per effettuare tali redirezioni ci serviremo degli operatori di segno maggiore (>) o minore (<):
$ miocomando < file_di_input $ miocomando > file_di_outputqueste due operazioni servono rispettivamente per leggere un file o scrivere/creare su di un file; ma potrebbe essere necessario non dover creare un file nuovo per l'output del comando, perchè infatti con il singolo operatore > il comando creerà un file chiamato file_di_output oppure, se presente, lo sovrascriverà; quindi potremmo avere l'esigenza di dover accodare al file esistente ulteriori righe di output, questo lo possiamo fare ponendo due segni > prima del nome file:$ miocomando >> file_di_output $ miocomando 2> file_degli_errorimentre come è possibile intuire, con l'operatore 2> redirezioniamo l'output degli eventuali errori nel file file_degli_errori. E qui possiamo dare spazio alla fantasia per combinare le verie redirezioni:
Notare un altro operatore jolly "&1" che indica di utilizzare lo stesso file dichiarato in precedenza ;)$miocomando > outputfile 2> errorfile File separati $miocomando > outputfile 2>&1 File singolo Redirezione dell'output verso un altro comando: Le pipe
In precedenza abbiamo anche dato una infarinatura riguardo il significato del simbolo di pipe (|). In Linux la pipe è forse l'operatore più utilizzato nella creazione di script ed anche nell'uso quotidiano della shell; con essa infatti possiamo redirigere l'output di un comando, in modo che funga da input ad un secondo comando seguente:$ who | sortin questo esempio vediamo come redirezionare l'output del comando who verso l'input del comando sort, di modo da avere una lista di utenti connessi (who) ordinata alfabeticamente (sort).Combinazione e concatenazione dei comandi
I comandi possono anche essere invocati in un unica riga secondo ordini precisi, possiamo ad esempio ordinare alla shell di invocare più comandi in sequenza uno dietro l'altro:$ comando1 ; comando2 ; comando3basta infatti separarli da un punto e virgola, oppure inserire due e commerciali (&) per dire alla shell di fare la stessa cosa, ma di interrompere il tutto se uno dei comandi termina con un errore:$ comando1 && comando2 && comando3potremmo anche avere la necessità di interrompere il tutto anche se uno solo dei comandi va a buon fine, ad esempio potremmo passare alla shell 3 comandi che svolgono lo stesso lavoro, ma con metodi diversi, e non sappiamo quale dei tre ci darà risultato, inseriamo quindi due pipe (||) tra un comando e l'altro:$ comando1 || comando2 || comando3Un altro operatore molto utilizzato: le virgolette
Vediamo ora altri tre caratteri molto utilizzati nello scripting bash, le virgolette (o apici) singoli e doppi e le virgolette rovesciate. Normalmente la bash, considera gli spazi come separatori di parole, ne consegue che nomefile è diverso da nome file, in quanto la shell interpreterà la seconda alternativa come due nomi di file distinti. Per indicare alla bash, come nell'esempio, un nome file contenente degli spazi si fa uso degli apici singoli o doppi. La differenza tra i due tipi è che gli apici singoli causano l'interpretazione letterale del loro contenuto, con gli apici doppi invece possiamo inserire un comando che verrà interpretato in fase di esecuzione, vediamo un esempio pratico:$ echo 'La variabile HOME ha valore $HOME' La variabile HOME ha valore $HOME $ echo "La variabile HOME ha valore $HOME" La variabile HOME ha valore /home/morfeusMentre con gli apici rovesciati (si ottengono premendo alt gr+' ed otterremo `), permettono sempre di considerare il loro contenuto come fosse un comando, ma quest'ultimo viene sotituito dallo standard output del comando stesso:$ whoami morfeus $ echo Il mio nome è `whoami` Il mio nome è morfeusL'escaping del carattere
Abbiamo visto fino ad ora alcuni tipi di caratteri speciali, i più usati, e abbiamo visto che non sono pochi; potrebbe infatti, per alcuni, risultare un pò scomodo dover "sacrificare" quasi un terzo della tastiera solo per questi caratteri che sono si speciali, ma se mi servono non li posso utilizzare. Questo non è del tutto vero, la shell infatti prevede anche l'escaping del carattere ossia la sua interpretazione letterale e non funzionale, basta anteporr al carattere in questione infatti il simbolo di backslash "\", se ad esempio abbiamo bisogno di utilizzare l'asterisco come asterisco e non operatore jolly:morfeus@hardy:~/fusion$ echo a*anaglyph atlantis2morfeus@hardy:~/fusion$ echo a\*a*(si stavo compilando compiz fusion :mrgreen: ) Mentre per i cosiddetti caratteri di controllo (tabulazioni, a capo, ^D, ecc...) possiamo utilizzare la sequenza ^V, questa operazione è particolarmente utile per le tabulazioni, in quanto normalmente il tasto tab serve per completare i nomi di file/directory e quindi non verrebbe mail letto come una tabulazione vera e propria:$ echo "C'è un tab tra qui^V^Ie qui"C'è un tab tra qui (immaginate una tabulazione wordpress non me la formatta purtroppo) e quiModifica delle combinazioni di tasti della shell
Con la bash possiamo utilizzare due tipi di combinazioni di tasti, quelle secondo la sintassi dell'editor emacs, o quelle secondo vi (parleremo in seguito meglio di questi due editor). Per abilitare la modifica della linea di comando secondo emacs digitiamo:$ set -o emacsanalogamente per vi:$ set -o vie ricordiamoci di inserirlo nel nostro file ~/.bash_profile per rendere la modifica permanente.Comando emacs Comando vi Significato ^P o freccia su k Richiama il comando precedente. ^N o freccia in giù j Richiama il comando successivo. ^F o freccia destra l (elle) Avanza di un carattere ^B o freccia a sinistra h Va indietro di un carattere ^A 0 (zero) Va all'inizio riga ^E $ Va a fine riga ^D x Elimina il carattere successivo ^U ^U Elimina l'intera riga Lo storico dei comandi
Ogni cosa che facciamo su di un sistema Linux è loggato, anche i comandi che diamo (come faremmo altriementi a richiamare il comando semplicemente premendo freccia su), questi sono infatti inseriti all'interno di uno storico:Comando Significato history visualizza lo storico history N Visualizza gli ultimi N comandi dello storico history -c Cancella lo storico !! Richiama il comando precedente !N Richiama il comando numero N !-N Richiama il comando digitato N comandi fa !$ Richiama l'ultimo parametro del comando precedente[1] !* Richiama tutti i parametri del comando precedente. Completamento automatico dei nomi dei file
Poco fa ho accennato al tasto di tabulazione che normalmente completa il nome file, nella bash infatti non è necessario scrivere per intero il nome di una directory o di un file, basta digitare anche solo la prima lettera e premere il tasto tab, e la shell farà il lavoro sporco al posto nostro. Se però ad esempio, digitiamo la lettera a, ma nella directory ci sono più files che iniziano con la lettera a, premendo una volta tab avremo un bip da parte del computer ed il nome non viene completato, questo ci indica appunto che sono disponibili più file che iniziano con la a, a questo punto basta battere una seconda volta il tasto tab e ci verranno proposte tutte le alternative dei files che iniziano con la lettera a, inoltre, se ad esempio andiamo in una cartella molto affollata, poniamo /usr/bin, e facciamo il solito test di a + tab, vedremo la shell che ci avverte che le alternative sono tante (indicandoci anche il numero) e che quindi l'output sarebbe molto verboso, e ci chiede se continuare o no:morfeus@hardy:~/fusion$ cd /usr/bin/ morfeus@hardy:/usr/bin$ morfeus@hardy:/usr/bin$ a (2 volte tab) Display all 134 possibilities? (y or n)
Controllo dei job
Avete mai sentito parlare di multitasking? C'è chi dice che in windows il vero multitasking significa avere una postazione con 5 workstation windows xp più una sedia girevole mobile :mrgreen: Diciamo in generale che il multitasking è la capacità di una macchina di eseguire due processi contemporaneamente, ci sarebbe molto altro da dire sul multitasking, ma siccome il tutto esula dallo scopo di questa guida vi rimando a wikipedia. Anche linux è ovviamente un sistema multitasking (non do pareri per evitare di scatenare flame eheh), e le varie operazioni si chiamano job, i job lavorano a livello più alto dei processi di sistema, ed essendo dei costrutti della shell, linux non sa nulla di loro nemmeno l'esistenza. Con la bash quando eseguiamo un programma, possiamo scegliere se eseguirlo in background o in foreground, quindi se vogliamo che questo continui a funzionare ed a fare il suo lavoro senza nessun output a schermo e restituendoci il prompt per continuare a lavorare, oppure in foreground, prendendo possesso della shell e mostrandoci tutto quello che succede. I job si possono anche sospendere e riprendere, adesso vediamo come fare ad eseguire tutti questi controlli sui nostri jobs: ------------------- Jobs Col comando jobs avremo un elenco di tutti i jobs attualmente attivi sulla shell, con relativo stato:
------------------- & Col carattere di e commerciale inserito alla fine della linea di comando, diremo alla shell di eseguire tale comando in background e di restituirci quindi il prompt per continuare ad utilizzare la shell...$ jobs [1]- Running emacs miofile & [2]+ Stopped su $ emacs miofile &[2] 28090quello che vediamo in basso come risposta da parte della shell è il numero del job [2], e il suo id, 28090, se digitassimo "kill 28090" termineremmo questo comando. ------------------- ^Z Con questa combinazione di tasti, eseguita durante l'esecuzione di un programma in foreground, "freeziamo" il programma stesso, cioè lo fermiamo ma il suo stato verrà ricordato; a questo punto potremmo utilizzare bg per far riprendere l'esecuzione del programma ma in background, oppure fg per riprenderlo in foreground. ------------------- ^Z Con il comando suspend interrompiamo, se possibile, la shell corrente. Un esempio pratico$ whoami morfeus su -l Password: ******** # whoami root # suspend [1]+ Stopped su $ whoami morfeus
come è possibile vedere, è equivalente all'uso della combinazione ^Z, solo che è un comando precostituito della shell. ------------------- bg [%numero_di_job] Anche questo è un comando precostituito della shell bash, già ho accennato questo comando poco fa, con bg possiamo mandare in background l'esecuzione di un programma precedentemente sospeso. Senza argomenti di default opera sull'ultimo comando sospeso, se invece vogliamo mandare in bg un altro comando già sospeso precedentemente (visualizzabile col comando jobs), basta far seguire a bg il numero del job preceduto dal carattere %.$ bg %2Da notare che alcuni tipi di job interattivi, come ad esempio quelli che sono in attesa di un comando in input, non pososno essere mandati in background. Se proviamo a farlo la shell lo sospenderà. Per questo tipo di job dovremo utilizzare il seguente comando... ------------------- fg [%numero_di_job] Con questo comando precostituito la shell porta in foreground l'ultimo job sospeso o mandato in background, altrimenti il numero di job che indichiamo in maniera analoga per bg.Terminare l'esecuzione dei programmi:
Talvolta ci può capitare di lanciare un comando in foreground che è molto lungo, ad esempio potremmo per sbaglio lanciare il cat di un file di log senza connetterlo con una pipe a grep per scremare l'output. In questo caso possiamo interrompere tale esecuzione con la combinazione ^C che viene interpretata dalla shell come "interrompi immediatamente il comando corrente in foreground". Ed avremo quindi nuovamente il prompt pronto ad accettare altre istruzioni. Se invece abbiamo un comando in background che vogliamo interrompere, dobbiamo prima portarlo in foreground e poi interromperlo con ^C, oppure in alternativa possiamo utilizzare un comando che vedremo meglio più avanti: kill. Premetto che questo metodo non è proprio quello "canonico", anzi è piuttosto brutale in quanto interrompe il comando immediatamente senza lasciarci alternativa. Diciamo che in generale se un comando prevede una sua sequenza di uscita/interruzione conviene utilizzarla sempre, anche perchè con ^C possiamo rischiare di ritrovarci la shell in uno stato indefinito o bloccato, ad esempio non permettendo la visualizzazione di ciò che digitiamo; a me ad esempio capita spesso di interrompere un comando con ^C senza volerlo, mentre sto consultando dei file di log, e mentre utilizzo putty (eh si all'ufficio ho windows -.-' )e mi ritrovo quindi il prompt dopo una marea di stringhe costituite da "PuTTyPuTTyPuTTyPuTTyPuTTyPuTTyPuTTyPuTTyPuTTyPuTTy" e la shell con caratteri strani; come fare se ci capita questa evenienza?- Premere ^J per ottenere un nuvo prompt, questo comando ha lo stesso effetto del tasto enter, con la differenza che funziona anche quando enter non produce alcun effetto.
- Digitare reset anche se non viene visualizzato alcun carattere e premere di nuovo la combinazione ^J, con questo otterremo un reset della shell, che dovrebbe restiturci un nuovo prompt questa volta utilizzabile.
Personalizzare la shell:
La shell è pienamente personalizzabile, esistono infatti due file che vengono caricati al login, che contengono tutti i parametri di configurazione della nostra shell, variabili, alias, programmi da lanciare all'avvio, possiamo addirittura far visualizzare il nostro oroscopo al login :mrgreen: I file in questione sono .bash_profile e .bashrc; vi faccio notare che hanno il punto ad inizio nome quindi non sono visibili con un normale ls, dobbiamo passare l'opzione -a al comando per visualizzarli. Infine questi rappresentano un esempio di shell scripting, ossia file della shell che contengono altri comandi shell da eseguire, ma anche questo argomento lo tratteremo più in la. Con il prossimo articolo tratteremo l'installazione del software tramite shell, per ora abbiamo finito ;)







































