Archivio della categoria: Manuali & Appunti

Linux: come eseguire un programma in altre lingue

Avete la necessità di avviare, sotto Linux, un programma in una lingua diversa, senza uscire dall’ambiente desktop in uso? Avete un sito in inglese, e dovete fare degli screenshot ad un software, per preparare un articolo?

Aprite un terminale e digitate:

$ export LANG=lingua
$ programma

per avviare programma nella lingua scelta (en per l’inglese e it per l’italiano).

Mettere il turbo al comando make nei PC con CPU dual/quad-core

Da non molto ho preso un nuovo portatile e, a differenza dal precedente, è un dual core duo. Ho notato che quando andavo a compilare i programmi, utilizzavo solo il 50% della CPU(S), pertanto mi ci voleva un meccanismo per incrementare le prestazioni, ma non sapevo quale.

Ecco come ottimizzare la fase di compilazione di un programma che dispone di un Makefile.

Basta aggiungere solamente una riga al file ~/.bashrc:
alias make=’nice make -j2′

Il -j2 sta ad indicare che si hanno a disposizione 2 processori. Se avete un quadcore, mettete -j4. Successivamente, ricaricate il file di configurazione

con:
$ source ~/.bashrc

Forse avrò scoperto l’acqua calda, ma fino ad oggi onestamente lo ignoravo.

Cambiare il MAC address di una scheda ethernet sotto Linux

Per cambiare il nostro MAC address non bisogna fare altro che eseguire 3 semplici passaggi.

Per prima cosa bisogna ricordarsi che i numeri e le lettere ammessi sono: 1 2 3 4 5 6 7 8 9 0 a b c d e f

Dopodiche ci si costruisce a piacere un MAC address tipo questo 1a:2b:3c:4d:5e:6f

Quindi da root

ifconfig eth0 down
ifconfig eth0 hw ether 1a:2b:3c:4d:5e:6f
ifconfig etho up

Per controllare il nuovo MAC address

ifconfig

Swappiness Tuning, facciamo chiarezza!

Immagino che solo pochi di voi sappiano che cos’è lo swappiness. Rappresenta un cosiddetto “collo di bottiglia” ed è presente in qualunque sistema UNIX-LIKE (MacOSX compreso). Ma che cos’è lo swappiness? E’ un’area di memoria, presa dal disco rigido, che esegue la stessa funzione della ram. E’ facile capire come, la partizione di swap, è indubbiamente più lenta della RAM.

Molti, per velocizzare Linux, consigliano di “ritoccare” questo valore, ma bisogna stare attenti.

Di solito, in giro sul web, si legge:
Nel terminale digitate:
sudo gedit /etc/sysctl.conf
ed aggiungete alla fine del file
vm.swappiness=0
Questo numero può essere compreso tra 0 e 100.

Attenti però

Lo swappiness tuning non è esente da problemi, prima di tutto è consigliato modificare il valore SOLO e soltanto se si ha qualcosa come più di 512 MB di ram, soprattutto se lo si sposta a zero poiché è diverso dal comportamento descritto da molti pseudo-sistemisti. Uno swappiness alto (100) significa che il gestore della memoria sposta molto rapidamente i dati delle applicazioni, dalla ram per intenderci, allo swap; un valore basso (quindi 0) invece fà in modo di mantenere il più a lungo possibile i dati in ram e spostarli solo quando non si ha più ram disponibile. Un valore 0 PUO’ causare malfunzionamenti ai PC, soprattutto quelli con poca ram o processori non troppo recenti/potenti, ed è sconsigliato nei laptop. Un valore di sicurezza per lo swappiness è dai 10 ai 30, a seconda del PC, ma non garantisce nessun aumento velocità in quanto è strettamente dipendente dal kernel installato e dalla configurazione della macchina, alcune volte migliora, altre volte peggiora.

Convertire un file di testo DOS/Windows in UNIX e viceversa

I sistemi DOS/Windows utilizzano due caratteri per definire al fine di
una riga: il Line Feed (LF) ed il Carriage Return (CR), ed infatti il
fine riga si indica con LF/CR. Invece, Unix utilizza solo il LF per
definire il termine della riga. Questa disparita` genera spesso dei
problemi, come la presenza dei famosi “^M” dei file editati da
Windows e poi aperti su un sistema Linux, oppure l’ammassarsi di tutte
le linee su una sola quando un file creato sotto Unix viene aperto da
un editor poco evoluto sotto Windows

Per verificare che un file contenga effettivamente questi caratteri si
puo` utilizzare sia vi che cat:

# cat -vte $file_name

(che stampa a video anche la rappresentazione dei caratteri
non-printable) oppure

# vi -b $file_name

che edita il file in formato binario, che consente di vedere anche i
caratteri normalmente non visibili.

Per eliminare quei “^M” e` possibile usare il comando `tr’ che
elimina o traduce dei caratteri da una stringa o da un file; l’opzione
`-d’ consente di eliminare un carattere, ed il codice del Carriage
Return e` 015: dunque, per eliminare il CR dai file si deve eseguire

# tr -d ‘\015′ < file_dos.txt > file_unix.txt

oppure

# tr -d ‘\r’ < file_dos.txt > file_unix.txt (<<– meno sicuro)

Esistono inoltre i programmi `dos2unix’ e `tofromdos’, che eseguono lo
stesso compito; inoltre anche sed consente di eliminare i “^M”:

# sed ‘s/^M//’ $file_to_convert > $output_file

in realta` sarebbe piu` corretto utilizzare questa forma:

# sed ‘s/^M$//’ $file_to_convert > $output_file

in quanto identifica solo i “^M” a fine riga. Per ottenere il “^M”
a riga di comando si deve usare la sequenza di escape Ctrl+V Ctrl+M.

Anche vi/vim consentono di rimuovere il ritorno a capo di windows:

- editare il file con vi/vim
- in modalita` comando, inserire:
:%s/^M/ /g
dove il carattere ^M si ottiene con Ctrl+V + Ctrl+M

Per fare il passaggio inverso, si puo` aprire il file con `Word’ o con
`wordpad’, editor piu` evoluti di `notepad’, in grado di capire la
diversa codifica e di apportarvi “rimedio”.

Differenza tra dominio e gruppo di lavoro

In un gruppo di lavoro:

* Tutti i computer sono peer. Nessuno di essi ha il controllo su un altro.
* In ogni computer è configurato un insieme di account utente. Per utilizzare un computer in un gruppo di lavoro è necessario disporre di un account su tale computer.
* In genere sono presenti al massimo dieci-venti computer.
* Tutti i computer devono trovarsi nella stessa rete locale o subnet.

In un dominio:

* Uno o più computer sono server. Gli amministratori di rete utilizzano i server per controllare la protezione e le autorizzazioni per tutti i computer del dominio. Questo semplifica l’esecuzione di modifiche in quanto le modifiche vengono eseguite automaticamente in tutti i computer.
* Se si dispone di un account utente sul dominio, è possibile accedere a qualsiasi computer nel dominio senza un account specifico per tale computer.
* Possono essere presenti centinaia o migliaia di computer.
* I computer possono trovarsi in reti locali diverse.

Lo Stat (Unix)

stat() è una chiamata di sistema Unix che restituisce dati utili su un file di inode. La semantica della chiamata stat() varia fra i diversi sistemi operativi. Con il comando Unix ls, si può raccogliere informazioni sugli i node i particolare

* mtime: orario di ultima modifica ls -l
* ctime: orario di ultimo cambiamento di stato ls -lc e
* atime: orario dell’ultimo accesso ls -lu

Notate che ctime non è il momento della creazione del file. Infatti la scrittura di un file cambia mtime ctime e atime. Un cambiamento di permessi dei file o dei file cambia ctime e atime. La lettura di un file cambia atime. Un file system montato con l’opzione noatime non aggiorna atime se vengono effettuate chiamate di lettura. Un file system montato con l’opzione relatime prevede aggiornamenti solo se il il valore precedente di atime è piu vecchio rispetto a quello di mtime o ctime. A differenza di atime e mtime ctime non può essere impostato con la funzione utime() l’unico modo per impostare su un valore arbitrario è quindi cambiare l’orologio di sistema.

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]