Laser Office s.a.s di Magnaterra Alessandro & C.

Posts Tagged ‘FreeBSD’

FreeBSD [fast|force|one]

Posted by xer su 28 dicembre 2009


In FreeBSD, in ogni script di startup, si possono notare dei parametri di start che spesso non sono molto utilizzati, ad esempio:

[labs]:/root# /usr/local/etc/rc.d/apache22
Usage: /usr/local/etc/rc.d/apache22 [fast|force|one](start|stop|restart|rcvar|reload|graceful|gracefulstop|configtest|status|poll)

Notate che ho avviato lo script di apache22 senza alcun comando aggiuntivo, ovviamente il sistema mi ha avvisato che a tale comando devo associare la modalità, es. start, stop, status etc. etc.
Però, a che servono i comandi [fast|force|one] ?

Proviamo a disabilitare apache22 da /etc/rc.conf :

[labs]:/root# nano /etc/rc.conf

# — sysinstall generated deltas — # Tue Apr 28 11:40:10 2009
# Created: Tue Apr 28 11:40:10 2009
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
apache22_enable=”YES”

commentiamo la riga relativa ad apache22 e salviamo rc.conf

#apache22_enable=”YES”

Proviamo adesso ad eseguire un comando qualsiasi nello start di apache22, proviamo con “status” :

[labs]:/root# /usr/local/etc/rc.d/apache22 status
Cannot ‘status’ apache22. Set apache22_enable to YES in /etc/rc.conf or use ‘onestatus‘ instead of ‘status’.

Ecco, FreeBSD ci avvisa che il demone di apache22 non è abilitato in /etc/rc.conf e non può eseguirlo, (ricordo che i demoni se abilitati in rc.conf, verranno eseguiti ad ogni boot della macchina), se però avessimo la necessità di avviare comunque apache22, il sistema ci indica che possiamo farlo associando al comando “status” il comando “one” in questo modo “onestatus

Proviamo:

[labs]:/root# /usr/local/etc/rc.d/apache22 onestatus
apache22 is not running.

Bene, proviamo allora a farlo partire:

[labs]:/root# /usr/local/etc/rc.d/apache22 onestart
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.

Benissimo, il demone di apache22 si è avviato, ecco spiegato a cosa servono i comandi aggiuntivi [fast|force|one] veramente utili, (per fast e force non credo siano necessarie spiegazioni), attenzione però, avviare i demoni in questa modalità, senza averli abilitati in /etc/rc.conf significa che al riavvio della macchina tali servizi non verranno eseguiti.

Posted in Appunti liberi *nix | Contrassegnato da tag: , | Leave a Comment »

il comando “find”

Posted by xer su 10 maggio 2009


Il comando find è uno dei più in utilizzati in ambito *unix* per ‘cercare’ nelle directory del sistema.
La sintassi è molto semplice: find dove_cercare espressione

Le espressioni da poter utilizzare sono tante

-name il valore deve essere racchiuso da ” se si utilizzano wildcards *
-type esempio f=file d=directory l=link
-user name o UID
-group name o GID
-perm specifica i permessi
-size per tagli di 512 byte block oppure utilizza c per specificare i bytes
-atime ultima data di lettura
-ctime ultima data di variazione o cambio di permessi
-mtime ultima data di modifica
-newer trova files più recenti
-delete rimuove i files trovati
-ls fornisce un output identico al “ls -dgils"
-print visualizza il risultato del comando find
-exec command {} \; opzione per eseguire un comando; notare la sintassi
-ok usato con exec viene richiesto il consenso prima di eseguire il comando
-depth inizia al più basso livello della directory, piuttosto che di una data directory
-prune utilizzato per escludere alcune directory

Facciamo alcuni semplici esempi:

find . -print – find (il comando) . (il punto indica di ricercare nella dir in cui ci si trova) -print (visualizza) il risultato

in questo modo, vi elencherà i files e le subdirectory presenti nella vostra directory, se omettete il parametro -print in FreeBSD, otterrette lo stesso risultato, perchè si presume che si abbia dimenticato di immetere il parametro, comunque è sempre bene utilizzare il parametro -print perchè non sempre si lavora su un so FreeBSD.

Digitando il comando cd la shell ci riporta nella nostra home directory, a questo punto facciamo alcuni test, creiamo un file vuoto con il comando touch

$ cd
$ pwd
$/home/xer
$ touch myfile

adesso proviamo a fare una ricerca più accurata con il nostro comando find

$ find . -name myfile -print
$./myfile
$

come vedete, la ricerca è andata a buon fine e mi viene visualizzato il file da me ricercato, facciamo un ricerca più ampia, se ad esempio stiamo cercando alcuni files pdf presenti nella nostra home dir, per agevolarci, possiamo utilizzare la wildcard (*) e restringere la sintassi con l’estensione, facciamo una prova, ricordatevi che con il punto . indichiamo di effettuare la ricerca solo nella dir e nelle sub dir in essa presenti ed in cui ci troviamo

$find . -name “*.pdf” -print
$./pdfs/50130201a.pdf
$./pdfs/50130201b.pdf
$./2000_ports.pdf

come vedete ha trovato dei pdf nella sub dir /pdfs ed un file fuori da detta sub dir, notate bene però la sintassi di ricerca, la wildcard * associata all’estensione *.pdf va racchiusa o per meglio dire quotata tra apici “*.pdf” per far si che il comando funzioni, ad ogni modo la corretta sintassi può essere scritta anche così:

$find . -name “*.pdf” -print
$find . -name ‘*.pdf’ -print
$find . -name \*.pdf -print

ok, adesso facciamo qualcosa di più complicato, commentiamolo passo per passo

$find . -name “*.pdf” -print
$./pdfs/50130201a.pdf
$./pdfs/50130201b.pdf
$./2000_ports.pdf

abbiamo ripetuto il comando precedente, ebbene scopriamo che un file pdf non è nella nostra sub directory preferita (/pdfs) proviamo ad eseguire un comando aggiuntivo, grep

$find . -name “*.pdf” -print | grep -v “^\./pdfs/”
$./2000_ports.pdf

abbiamo aggiunto il pipe (|) per permettere l’uso del grep, lo switch -v indica un filtro in reverse, ciò significa che dovrà produrre l’inverso dell’output desiderato indicato da “^\./pdfs/”
abbiamo prima di tutto quotato con gli apici ” il valore espresso, il caret ^ ci aiuta per ricercare utilizzando solo l’inzio del testo da noi espresso, il backslash \ ci aiuta a non interpretare il punto . come un comando particolare, ed infine abbiamo descritto la directory /pdfs/, gli abbiamo detto insomma, di ricercare tutti i nostri pdf, ma di non produrre e di non visualizzare nel risultato della nostra ricerca i pdf trovati dentro la sub dir /pdfs/ (ricordate lo switch -v del grep?), ma di visualizzare solo i pdf rimasti all’esterno della subdir /pdfs/ ed eccolo:

$./2000_ports.pdf

l’unico files sfuggito al nostro catalogo /pdfs, ok adesso dovremo spostarlo nella directory di competenza, /pdfs, proviamo a fare tutto con una singola espressione:

$find . -name “*.pdf” -print | grep -v “^\./pdfs/” | xargs -J X mv X ./pdfs/

abbiamo aggiunto un altro pipe (|) ed abbiamo aggiunto un altro comando oltre al grep il comando xarg, lo switch -J dice al comando xarg di prendere in carico l’output generato dal find usato con il grep e di spostarne il risultato con il comando mv nella sua directory di competenza /pdfs/, per far si che il comando mv funzioni è stato racchiuso da un carattere di mia scelta X.

Rieseguendo il comando find potremmo verificare se l’spressione complessa ha funzionato:

$find . -name “*.pdf” -print
$./pdfs/50130201a.pdf
$./pdfs/50130201b.pdf
$./pdfs/2000_ports.pdf

come vedete il file è stato spostato, certo per un solo file questo comando è un pò complesso, ma se si hanno migliaia di files, questo tipo di espressione potrà esservi molto utile.

Il comando find e relative wildcards possono essere utilizzate per ricercare anche files senza estensioni o parti del nome di file, per esempio vorremmo cercare tutti i files che contengono nel loro nome “bsd”, proviamo subito, questa volta posizioniamoci dal livello più basso dell’albero (/)

$ cd ..
$ pwd
$/
$ find . -name “*bsd*” -print
./usr/bin/bsdiff
./usr/bin/bsdtar
./usr/include/netinet/sctp_os_bsd.h
./usr/include/security/mac_bsdextended
./usr/include/security/mac_bsdextended/mac_bsdextended.h

proviamo a ricercare files che non sono stati letti per più di 20 giorni

$ find . -atime +20 -print

ricerchiamo i files che sono stati modificati nelle ultime 24 ore (1 giorno), per dimostrare che il comando funziona, creiamo subito un file vuoto chiamato tipo

$ cd
$ touch tipo
$ find . -mtime -1 -print
.
./tipo

un altro comando può essere utilizzando alcuni switch in più il confronto con altri files, per esempio, vorrei vedere quali files che iniziano con . sono stati modificati dopo avere modificato il mio file .cshrc pertanto files + nuovi di .cshrc, utilizzeremo lo switch -newer

$ pwd
/home/xer
$ find . -type f -name “.*” -newer .cshrc -print
./.rtorrent.rc

come vedete, il risultato visualizza il file trovato in .rtorrent (si uso rtorrent ;-0 ), infatti è più nuovo come data di .cshrc

cerchiamo un file al quale abbiamo avuto accesso più di 3 giorni fa ed è di dimensioni superiori a 10 mb

$ pwd
/home/xer
$ find . -atime +3 -size +20480 -print
$ ./7.2-RELEASE-i386-disc1/7.2-RELEASE-i386-disc1.iso

e si, meno di tre giorni fa ho scaricato una iso di FreeBSD tramite rtorrent.. 😉

aggiungiamo lo switch -o (or) significa, cercami tutti i files ai quali ho avuto acceso negli ultimi 3 giorni oppure che siano più grandi di 10 mb, proviamo

$ pwd
/home/xer
$ find . -atime +3 -o -size +20480 -print
./7.2-RELEASE-i386-all/7.2-RELEASE-i386-bootonly.iso
./7.2-RELEASE-i386-all/7.2-RELEASE-i386-disc1.iso
./7.2-RELEASE-i386-all/7.2-RELEASE-i386-disc2.iso
./7.2-RELEASE-i386-all/7.2-RELEASE-i386-disc3.iso
./7.2-RELEASE-i386-all/7.2-RELEASE-i386-docs.iso
./7.2-RELEASE-i386-all/7.2-RELEASE-i386-dvd1.iso
./7.2-RELEASE-i386-all/7.2-RELEASE-i386-livefs.iso
./7.2-RELEASE-i386-disc1/7.2-RELEASE-i386-disc1.iso
./7.2-RELEASE-i386-disc2/7.2-RELEASE-i386-disc2.iso
./7.2-RELEASE-i386-disc3/7.2-RELEASE-i386-disc3.iso
$

whoa! come vedete mi ha visualizzato anche i files ai quali ho avuto accesso più di tre giorni fa, ma soddisfano il parametro -o (or) oppure che superino i 10 mb.

Concludendo, giocando con gli switches si possono ottenere una molteplice serie di risultati, in questo modo si raggiunge una buona capacità di utilizzo della vostra shell.

fonte: O’Reilly

Posted in Appunti liberi *nix | Contrassegnato da tag: , , | Leave a Comment »

Riepilogo delle ultime uscite GNU/Linux

Posted by Alessandro su 30 aprile 2009


In questi giorni sono state rilasciate al pubblico alcune importanti nuove distro GNU/Linux. La + famosa di queste è sicuramente Ubuntu 9.04 Desktop e Server editions e Ubuntu Netbook Remix. A ruota poi le distro ke prendono spunto da Ubuntu come Kubuntu, Xubuntu, Edubuntu, UbuntuStudio e Mythbuntu. Quindi è arrivata Sabayon Linux 4.1 “KDE” ke come sapete è opera di un ragazzo italiano, Fabio Erculiani, ke è presente anke su FaceBook insieme alla pagina Official Sabayon Linux. Infine è appena uscita Mandriva Linux 2009 Spring e NetBSD 5.0. Inoltre sono annunciate di prossima uscita Fedora 11 e OpenBSD 4.5. Direi una bella scorpacciata di novità x un mondo, quello del FOSS (Free & Open Source Software) ke al momento nn sembra risentire affatto della crisi economica ke attanaglia il mondo.

P.S.: E nn è finita, in poki giorni aggiunte anke DragonFly BSD 2.2.1, OpenBSD 4.5 e FreeBSD 7.2

Posted in Annunci BSD, Annunci Gnu/Linux | Contrassegnato da tag: , , , , , , , , | Leave a Comment »

resolv.conf – alcuni appunti

Posted by xer su 21 aprile 2009


resolv.conf

A volte, per chi installa una distribuzione linux, sopratutto per chi è alle prime armi o è veramente la ‘prima volta’ con Linux, si trova
nettamente spiazzato quando da una semplice shell non si riesce a ‘pingare’ uno degli hosts più famosi come ad esempio http://www.google.com

Nessun panico, se Linux è installato correttamente occorre solo verificare se sono stati configurati opportunamente i DNS che si occupano di risolvere gli “host name”, di questa risoluzione se ne occupa il file ‘resolv.conf‘ allocato sotto /etc

Diamo un occhiata al file:

/etc/resolv.conf

# resolv.conf di xernet.net
# revisione del 15.05.2008
domain xernet.net

# utilizziamo i DNS di Tin
nameserver 195.31.190.31
nameserver 194.243.154.62

Spieghiamo rapidamente l’utilizzo della voce ‘domain‘ come potete vedere, ho aggiunto il mio dominio ‘xernet.net‘, se dalla macchina con il sucitato resolv.conf si prova ad effettuare un ping all’host chiamato per esempio ‘pippo’ potrebbe darsi che non essendo un host di tipo pubblico non è risolvibile dai DNS di Tin, dopo avere tentato di ricercare il nome host ‘pippo’ con i DNS di Tin, la macchina tenterà di risolvere l’hostname ‘pippo’ aggiungendo il dominio, in questo caso xernet.net, pertanto il ping diventerà ‘pippo.xernet.net‘ ricercando così un FQDN (full qualified domain name).

A questo punto parliamo di un host appartenente al dominio xernet che per essere risolvibile e di conseguenza pingabile, perlomeno dovrebbe essere presente nei files hosts o domain.txt allocati sotto /etc

# /etc/hosts
# /etc/domain.txt

esempio di host o domain.txt:

pippo 192.168.20.60

Una nota a riguardo dei files hosts o domain.txt, la soluzione di inserire manualmente i nomi hosts in detti files è applicabile solo quando si hanno da gestire una realtà di poche di macchine, ma quando si parla di una LAN di una certa entità è auspicabile installare e configurare un DNS (Bind) anche non autoritativo, per gestire in modo dinamico la popolazione dei pc presenti nella vostra LAN.

Per quanto riguarda i DNS da utilizzare come nameservers, per accedere ad internet occorre utilizzare i DNS del proprio ISP di collegamento ad internet, non tutti i DNS sono accessibili, mi piace però considerare anche soluzioni alternative, come ad esempio opendns, i quali sono nameservers free, rimando al sito per maggiori info:

http://www.opendns.org/

Posted in Appunti liberi *nix | Contrassegnato da tag: , , | Commenti disabilitati su resolv.conf – alcuni appunti

il kill di un processo, a volte non va buon fine

Posted by xer su 21 aprile 2009


A volte è necessario ‘uccidere’ un processo, di fatto il comando da eseguire è il kill

# kill ‘numero_PID’

A volte è impossibile riuscire a killare un processo, a volte il comando molto più invasivo # kill -9 ‘numero_PID’ dovrebbe risolvere, ma prima di killare un processo, sarebbe interessante scoprire perchè non si riesce a fermarli. In questi casi, solo i processi che possono essere in coda di esecuzione (run queue) possono ricevere i segnali di kill, pertanto, se non è possibile killare il processo, le cause possono essere:

  1. Il processo è bloccato in uno stato di attesa del disco (disk wait), ciò è possibile verificarlo eseguendo un comando ‘ps‘ e lo stato di disk wait è raffigurato dal flag D nella colonna STAT.
    Questo può indicare un problema hardware con l’hard disk oppure con il controller dell’hard disk, se si parla di un NFS montato, potrebbero essere problemi di congestione di rete.
  2. Il processo è sospeso (SIGSTOP). In questo caso è possibile verificarlo sempre con il nostro amico ‘ps‘ e lo stato di SIGSTOP è raffigurato dal flag T sempre nella colonna STAT.
  3. Un altro caso di impossibiltà di kill del processo potrebbe essere lo status di ZOMBIE. A volte il processo è concluso (terminated) ma il processo che lo ha generato (processo padre) invece è ancora attivo, questo può essere causato da errori di programmazione del processo che lo ha richiamato. Tale stato può essere visualizzato, sempre tramite ‘ps‘ e nella colonna STAT il processo in questione è contrassegnato  da una Z.

Le cause di processi bloccati ed unkillable possono essere anche altre, ma queste tre sono le più comuni.
Basta utilizzare il comando ‘ps’ e controllare la colonna STAT, in quella colonna sarà segnalato il perchè un processo è bloccato. Un altro comando utile per queste necessità è ‘top‘.

Alcuni esempi di ‘ps‘:

# ps -ef (linux)
# ps -auxww (prettamente per FreeBSD)

# man ps
oppure
# man top

# man kill

per avere maggiori ragguagli sui comandi.

Posted in Appunti liberi *nix | Contrassegnato da tag: , , | Commenti disabilitati su il kill di un processo, a volte non va buon fine

Rilasciato PC-BSD 7.1 Galileo Edition

Posted by Alaktorn su 12 aprile 2009


PC-BSD

PC-BSD

Kris Moore ha annunciato il rilascio di PC-BSD 7.1 Galileo Edition, un sistema operativo desktop basato su FreeBSD 7.1 ke include le versioni aggiornate di KDE (4.2.2) e X.Org (7.4). L’ultima versione di KDE include nuovi effetti alle windows, screen savers e migliorie all’accelerazione 3D. PC-BSD 7.1 ha anke molti importanti miglioramenti e bug fixes ke rendono molto + facile il suo utilizzo: il nuovo KDE 4 permette agli utenti di aggiungere facilmente e gestire stampanti e processi di stampa; lo strumento Aggiungi/Rimuovi Programmi e l’Update Manager sono stati consolidati in Software & Aggiornamenti; l’Updater Tray è stato modificato in una piccola utility; inoltre ora è possibile effettuare ports e packages di FreeBSD usando il comando runports e tante altre novità ke possono essere lette in dettaglio nell’annuncio stampa, nelle note tecnike e nel changelog. Download (MD5): PCBSD7.1-x86-DVD.iso (1,858MB, MD5, torrent), PCBSD7.1-x64-DVD.iso (1,891MB, MD5, torrent).

Posted in Annunci BSD | Contrassegnato da tag: , | Leave a Comment »

Come recuperare la password di root di un server MySql

Posted by xer su 30 marzo 2009


Recuperare la password di ‘root’ di un database MySql è abbastanza semplice, per questa procedura, occorre avere necessariamente un accesso diretto al vostro sistema, console oppure la shell in ssh.

Prima di tutto, fermiamo l’esecuzione del server MySql:

Stop MySql server in FreeBSD
con i poteri di ‘root’ eseguite questo comando:
# /usr/local/etc/rc.d/mysql-server stop

Stop MySql server in Linux
diventate ‘root’ digitando sudo su e relativa password e poi eseguite questo comando:
$ service mysqld stop

Una volta fermata l’esecuzione del server MySql, il ‘trucco’ sta nel riavviarlo in una diversa modalità, con l’opzione ‘–skip-grant-table’, procedura per il riavvio in background:

Avvio in background in FreeBSD
# /usr/local/libexec/mysqld –skip-grant-tables –user=root &
(nota bene il carattere ‘&’ alla fine del comando, demonizza l’esecuzione rendendola in ‘background’ appunto, non è una consuetudine per il FreeBSD, ma necessaria in questo frangente per operare al cambio password dell’utente ‘root’)

Avvio in background in Linux
$ /usr/bin/mysqld_safe –skip-grant-tables &

Ok, una volta fatto ripartire il server MySql sul nostro sistema, si accede in modalità ‘client’, la modalità è identica sia per il FreeBSD che per Linux, non verrà chiesta la password di ‘root’.

# mysql -u root
mysql> UPDATE user SET Password=PASSWORD(’nuova_password’) WHERE User=’root’;

In questo modo la tabella users sarà aggiornata con la nuova password per l’utente ‘root’, adesso non vi resta che, eseguire uno stop del server MySql ed eseguirlo in modalità ‘standard’, in questo modo potrete rientrare ad amministrare il vostro server MySql come ‘root’ e con la vostra nuova password.

Posted in Appunti liberi *nix | Contrassegnato da tag: , , | Leave a Comment »

 
%d blogger hanno fatto clic su Mi Piace per questo: