Archivi autore: Valerio Guaglianone

Crontab e l’esecuzione automatica e programmata dei comandi

Crontab si utilizza sotto Linux (Unix in generale) e consente lo scheduling di comandi, ovvero permette di salvarli in un file apposito (che poi vedremo) e fare in modo che il sistema li esegua in automatico ad intervalli regolari. Ora vi spiego più o meno come funziona.Crontab usa un demone chiamato crond, che è costantemente in esecuzione, e ogni minuto recupera le informazioni contenute nel file di crontab. Il file di crontab segue una certa sintassi per l’esecuzione dei processi:

* * * * * comando/da/eseguire
- – - – -
| | | | |
| | | | +—– giorno della settimana (0 – 6) (domenica=0)
| | | +——- mese (1 – 12)
| | +——— giorno del mese (1 – 31)
| +———– ora (0 – 23)
+————- minuti (0 – 59)

30 * * * * comando # viene eseguito al 30 minuto (di ogni ora, di ogni giorno)
30 1,2,3 * * * comando # viene eseguito ogni 30 minuti però solo all’una, alle due e alle tre(di ogni giorno, …)
* 1-5 * * * comando #viene eseguito ogni ora dall’una alle cinque (di ogni giorno, ….)
0,15,30,45 * 1 1 * comando #viene eseguito ogni 15 minuti di ogni ora solo il 1° gennaio
* * * * 0,5 comando > /tmp/comando.log (viene eseguito ogni domenica e venerdi e salva l’output del comando nel file).

Il Bandwidth Stealing ed Apache

Il cosiddetto “Bandwidth Stealing” ovvero “furto di banda” si verifica quando un sito linka ai contenuti di un altro, ad esempio con un link tipo:

<img src=”http://www.altrosito.com/immagine.jpg”>

A tutti gli effetti, così facendo, si sottrae banda e risorse all’altro server che quindi ne riceve un danno sia in termini di prestazioni che di costi se per caso sfora un tetto massimo di Gb trasferiti.

Con Apache + mod_rewrite si può risolvere il problema aggiungendo le seguenti righe nel file di configurazione del virtual host:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?miosito.com(/)?.*$ [NC]
RewriteRule .*\.(gif|GIF|jpg|JPG)$ – [F]

In questo primo caso qualunque richiesta di un file che termina con “gif” o “GIF” o “jpg” o “JPG” non proveniente dal mio stesso sito verrà bloccata.

Una simpatica alternativa a fronte di un tentativo di Bandwidth Stealing, potrebbe essere quella di fornire sempre una stessa immagine, magari con il nostro logo:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?miosito.com(/)?.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|bmp)$ http://miosito.com/miologo.jpg [R,NC]

Cambiare l’hostname su MacOSX

Utilizzando un MacBook Pro con Mac OS X 10.8.x mi sono accorto che la gestione dell’hostname è un po’ bizzarra, almeno diversa dalle macchine Linux e UNIX a cui sono abituato; in sintesi, a parte la solita questione del sudo per l’utente “base”, va usato il comando “scutil”.

mac

Ecco la sintassi: sudo scutil –set HostName nuovohostname.nomedominio.com

a questo punto nel prompt di un terminale scompare quel fastidioso MacBook Pro-di-nome-cognome (dell’utente “base”) e si può avere un hostname un po’ più sensato (e sicuramente anche più breve).

Attivare/Disattivare startup servizi in Ubuntu/Debian

Eseguite:

# sysv-rc-conf

Questa piccola utility ci permette di gestire facilmente i demoni, in questo modo eliminando i demoni che non sono utili possiamo alleggerire il nostro sistema.

installazione
aprire il terminale Applicazione->Accessori->Terminale

sudo apt-get install sysv-rc-conf

Avvio del programma come utente generico di sistema (sempre da terminale)

sudo sysv-rc-conf

Eliminare i processi zombie su Linux

L’unica cosa da fare in questi casi è quella di killare il genitore che ha generato il processo.
Per verificare se esistono processi zombie è sufficiente digitare in una shell il comando:

ps aux |grep defu
rao 3599 0.2 3.5 38616 18380 ? S 22:19 0:14 gnome-panel –sm-client-id default1
rao 3605 0.4 4.6 89340 24076 ? S 22:19 0:24 nautilus –no-default-window –sm-client-id default2

Ora siamo a conoscenza dei PID degli zombie (3599 e 3605), a questo punto cerchiamo il processo genitore:

ps -def | grep 3605
rao 3605 3577 0 Jun14 ? 01:00:24 nautilus –no-default-window –sm-client-id default2

Prima di andare a killare il genitore (3577) è necessario verificare chi sia, perchè questo processo potrebbe essere proprio il programma che state usando.

ps aux |grep 3577
rao 3577 0.0 1.7 33636 8968 ? Sl Jun14 01:00 gnome-session.bin

Una volta verificato chi sia il genitore (la sesione di gnome in questo caso), e appurato che non sia un processo che ci serve, è possibile killarlo tramite un semplice kill:

kill -9 3577

Cambiare il charset ai nomi dei file in Linux

Il problema del charset (ovvero del set di caratteri utilizzato da un sistema operativo, o da un programma) è molto diffuso.

Convmv è un programma da linea di comando (che quindi dovrete eseguire dal terminale) che è in grado di cambiare il charset del nome dei file e delle directory (solo del nome! non il contenuto). Il suo utilizzo è molto semplice. Di seguito vedremo come utilizzarlo.

Convmv ha una logica di funzionamento molto semplice: occorre indicare il charset attuale del nome del file, il charset che volete acquisisca il file e, ovviamente, il nome del file o della directory. Ecco quindi la sintassi del comando:

$: convmv -f charsetorigine -t charsetuscita nomefile

Dove “charsetorigine” è il charset originale del nome del file, mentre “charsetuscita” indica il charset che deve acquisire il nome del file. I file che provengono da Windows di solito hanno charset “latin1&#8243;, quindi nell’esempio useremo questo. Se usate ubuntu e non avete fatto particolari operazioni, il charset usato dal vostro sistema dovrebbe essere utf8.

Se volete scoprire quale è il charset in uso nel vostro sistema, date sul terminale il seguente comando:

$: echo $LANG

Detto ciò, vediamo in pratica come potrebbe essere l’utilizzo di convmv:

$: convmv -f latin1 -t utf8 nomefile.txt

Se eseguite il comando così come scritto, il programma si limiterà a farvi vedere come cambierebbe il nome del file, senza modificarlo. Se volete effettivamente modificare il nome del file (attenzione che poi non si può tornare indietro!) allora dovete aggiungere il parametro “–notest”. Ecco quindi il comando completo per modificare il charset (inserisco anche dei charset di esempio):

$: convmv -f latin1 -t utf8 –notest nomefile.txt

Altri parametri utili

–list Restituisce tutti i charset disponibili nel sistema.

$: convmv –list
-r Applica le modifiche indicate in modo ricorsivo attraverso una directory. Se quindi vogliamo cambiare il charset a tutti i file presenti in una directory, in modo ricorsivo, dovremo dare il comando:

$: convmv -r –notest -f latin1 -t utf8 nomedirectory
–upper , –lower Trasforma in uppercase (tutte maiuscole) o lowercase (tutte minuscole) le lettere del nome de(i) file cui viene applicato il comando.Ecco un esempio:

$: convmv –notest –lower -f latin1 -t utf8 NomeFile.txt
-i Modalità interattiva: verrà chiesto per ogni file se volete applicare la modifica.

Amministrare GNU/Linux – Terza edizione, la bibbia Linux

Amministrare GNU/Linux è un testo introduttivo alla amministrazione di sistema in ambiente GNU/Linux. Scopo del testo è trattare gli argomenti di base ed avanzati dell’amministrazione di sistema ed i principi di base dell’amministrazione di rete. Si è adottato un percorso espositivo che parte dall’esame della struttura del sistema per arrivare ad affrontare gli argomenti più sofisticati e complessi della gestione sistemistica, senza dare per presupposta nessuna conoscenza di questo sistema operativo. Il testo copre anche gli argomenti previsti negli esami di certificazione LPI 101 e 102, ed una buona parte degli argomenti dei successivi esami 201 e 202. Può pertanto essere utilizzato come testo (non ufficiale) di studio per la preparazione di detti esami, e per questo è stato scelto come libro di testo da Linux Certification Institute (www.lici.it) e da molti altri centri di formazione. Restando fedele alla filosofia di sviluppo di GNU/Linux il testo è pubblicato con licenza libera.

Vi consiglio di acquistarlo.