Category Archives: quick tip

Come copiare testo da terminale agli appunti di X

A volte è necessario o comodo copiare del testo dal terminale agli appunti (clipboard) di X – ad esempio per incollare il testo su una chat o forum con un semplice CTRL+V. Si può fare facilmente con il programma xclip. Per installarlo su Debian, Ubuntu e derivate, bisogna eseguire:

sudo aptitude install xclip

Il suo utilizzo e molto semplice: basta mandare in pipe a xclip il testo che si desidera. Ad esempio per copiare le informazioni relative a dhclient presenti nei log, si può eseguire:

grep dhclient /var/log/syslog | xclip -selection c

In questo modo tutte le linee in /var/log/syslog contenenti dhclient vengono copiate negli appunti e possono essere incollate con CTRL+V.

Accelerare Firefox 3 ripulendo il suo database

Firefox icon by everaldo.comCon Firefox 3.0 è stata introdotta la “Awesome Bar”: la barra degli indirizzi intelligente che può essere utilizzata come navigatore della cronologia.

Questa funzionalità fa un uso piuttosto intenso dei database intensi di Firefox, e con il tempo può diventare piuttosto lenta. È possibile però “ripulire” il database per ritornare ad avere buone performance. Per farlo:

  1. Dal menu Tools (Strumenti) selezionate Error Console (Console degli errori)
  2. Nella casella Code (Codice) inserite la seguente istruzione su un unico rigo:
    Components.classes["@mozilla.org/browser/nav-history-service;1"].getService(Components.interfaces.nsPIPlacesDatabase).DBConnection.executeSimpleSQL("VACUUM");
  3. Cliccate su Evaluate (Valuta): l’interfaccia grafica si bloccherà per alcuni secondi mentre i database di Firefox vengono riorganizzati.

Al termine dell’operazione la awesome bar di Firefox dovrebbe tornare ad avere buone prestazioni.

Usare SSH come server proxy

Web icon by everaldo.comPuò capitare che si disponga di un server a cui si dispone di accesso via SSH e si desideri utilizzarlo come server proxy per la navigazione sul web.

Il client SSH rende semplice questa operazione: permette di mettere in ascolto sulla macchina locale un server proxy SOCKS che rigirerà al server remoto tutte le richieste di connessione all’interno del “tunnel” SSH.

Supponendo di voler mettere in ascolto sulla porta locale 8080 il server proxy, che la macchina remota abbia IP 10.0.0.1 e che il nome utente remoto sia mrossi il comando da lanciare è:

ssh -D 8080 -Nf mrossi@10.0.0.1

(se il nome utente attuale è uguale a quello sulla macchina remota si può tralasciare la stringa mrossi@).

Una breve spiegazione degli switch utilizzati con SSH:

  • -D 8080: indica la volontà di creare un proxy SOCKS in ascolto sulla porta 8080 sull’indirizzo di loopback (127.0.0.1). Opzionalmente si può specificare qualunque indirizzo locale su cui mettersi in ascolto;
  • -N: indica a SSH che non si desidera eseguire alcun comando;
  • -f: fa sì che subito dopo l’autenticazione SSH vada in background.

Una volta eseguito il comando si può configurare il proprio browser per utilizzare il proxy SOCKS in ascolto su 127.0.0.1:8080. Se il vostro browser è Firefox potete utilizzare FoxyProxy per gestire facilmente i proxy.

Chi sta accedendo al disco? Monitorare l’uso dell’I/O.

HardDisk icon by everaldo.com Una feature molto comoda del task manager di Windows è quella che permette di visualizzare quali processi stanno scrivendo su disco e in quale misura. È possibile ottenere queste informazioni anche su Linux. Un metodo rapido per ottenere un’informazione del genere è eseguire da root:

echo 1 > /proc/sys/vm/block_dump

Eseguendo dmesg sarà possibile avere un colpo d’occhio di quali processi stiano effettuando burst di scritture, con un output simile a questo:

[  409.805443] firefox-bin(4288): WRITE block 25335048 on sda7
[  409.805468] firefox-bin(4288): WRITE block 25335112 on sda7
[  409.805493] firefox-bin(4288): WRITE block 25335136 on sda7
[  409.805520] firefox-bin(4288): WRITE block 25335176 on sda7
[  409.805589] kjournald2(729): WRITE block 17053608 on sda7
[  409.805608] kjournald2(729): WRITE block 17053616 on sda7
[  409.805620] kjournald2(729): WRITE block 17053624 on sda7
[  409.805631] kjournald2(729): WRITE block 17053632 on sda7
[  409.805642] kjournald2(729): WRITE block 17053640 on sda7
[  409.810454] kjournald2(729): WRITE block 17053648 on sda7
[  409.963898] firefox-bin(4288): dirtied inode 3198 (places.sqlite-journal) on sda7
[  410.004105] pdflush(23): WRITE block 16922864 on sda7
[  410.004257] pdflush(23): dirtied inode 10220 (plasma_theme_default.data) on sda7
[  410.004291] pdflush(23): WRITE block 36789872 on sda7
[  410.004310] pdflush(23): WRITE block 36789880 on sda7

Piccola nota: pdflush è il demone che si occupa di scrivere su disco le scritture rinviate dal kernel per motivi di performance, kjournald(2) si occupa di mantenere aggiornato il journal del filesystem ed è normale che siano spesso presenti. Questo output tuttavia non è di comoda lettura. Una alternativa è data dal software iotop, installabile con Synaptic, aptitude o il packet manager della distribuzione che preferite. Avviandolo con:

iotop -o

Si otterrà un output di questo tipo:
che mostra i quattro processi che hanno effettuato operazioni di I/O nel periodo di campionamento. In questo caso sono il già citato pdflush e wget che hanno effettuato delle scritture, mentre svn ha effettuato una lettura.

Le colonne di iotop mostrano nell’ordine:

  • il PID del processo;
  • la velocità di lettura nel periodo di campionamento (di default 1 secondo);
  • la velocità di scrittura nel periodo di campionamento;
  • il tempo impiegato per lo swapping;
  • il tempo atteso per l’accesso all’I/O;
  • il nome del processo e i suoi argomenti.

Il manuale di iotop indica gli switch utili per un uso più mirato di questo ottimo strumento.

Quick tip: sbloccare il database di apt dopo un crash

package icon by everaldo.comÈ possibile che un’interfaccia grafica per apt come Synaptic o Adept crashi durante l’installazione di pacchetti. Questo lascia il database di apt in uno stato inconsistente. Il messaggio di errore rivelatore del problema è questo:

E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

Che nella versione in italiano è tradotto come:

E: Impossibile ottenere il lock /var/lib/apt/lists/lock - open (11 Risorsa temporaneamente non disponibile) E: Impossibile creare un lock sulla directory di list

Per risolvere questo problema in genere è sufficiente eseguire in un terminale:

sudo fuser -vki /var/lib/dpkg/lock;sudo dpkg --configure -a

Quick tip: forzare l’esecuzione di fsck al riavvio.

HardDisk icon by everaldo.com Di default (K)Ubuntu esegue un controllo del filesystem con fsck ogni 27 volte che viene montato, oppure ogni 3 mesi, qualunque sia il limite raggiunto prima. Ogni tanto però si può voler forzare un controllo del filesystem al riavvio. Per farlo su (K)Ubuntu eseguite questo comando:

sudo touch /forcefsck

Sì, tutto qui. Al riavvio verrà eseguito fsck. Su alcuni sistemi (ma non ad esempio su Ubuntu dalla versione 6.10 Edgy Eft in poi) si può invece usare questo comando:

sudo shutdown -rF now

Che riavvierà il computer e forzerà l’esecuzione di fsck. (Il motivo tecnico per cui non è applicabile alle release recenti di Ubuntu è che dalla 6.10 il sistema di init è passato da sysvinit a upstart, che attualmente non supporta l’utilizzo di shutdown -rF)