Quando gestiamo un server in hosting può risultare comodo conoscere i principali comandi di shell per muoversi a proprio agio a linea di comando. Questo articolo introduce e riassume alcuni dei comandi più utili e ricorrenti, che non sempre sono noti a tutti. Daremo per scontato che il lettore sappia almeno cos'è una shell e conosca i comandi più essenziali: cd (per cambiare directory), cp (per copiare files), mv (per spostare files), ls (per visualizzare il contenuto di una directory) e pwd (per visualizzare il path corrente).

Display remoto

Una delle operazioni più ricorrenti è quella di esportare la variabile display per visualizzare localmente l'ambiente grafico remoto. In questo modo possiamo, ad esempio, aprire un browser in remoto ed “usarlo” in locale. L'operazione si svolge in tre semplici passi

  1. export DISPLAY=<IP della macchina locale>:0
  2. Lanciare un'utility locale per catturare il display (esempio Exceed o un terminale X11)
  3. Lanciare il programma che ci interessa, seguito dal simbolo &

Commentiamo brevemente i comandi appena visti: il comando export termina con 0 per precisare che che ci interessa il “primo” schermo. In alcuni casi occorre precisare sia l'host che lo schermo, quindi dovremo scrivere 0.0 dopo i due punti. Sull'utility da lanciare in locale non possiamo dire nulla, perché dipende dalla macchina locale. Ad esempio, se usiamo PuTTY, probabilmente ci basterà spuntare la casellina “Enable X11 forwarding” e tutto sarà già a posto.

Infine, al momento di eseguire l'applicazione sulla macchina remota, terminiamo il comando con il simbolo & per dire alla shell di non restare “appesa”. In questo modo il processo verrà eseguito in background. Per vedere tutti i processi di questo tipo ci basterà digitare jobs, per ripristinare uno dei processi occorre eseguire il comando %n , dove n è il numero del processo in background (per numero intendiamo la cifra ritornata dal comando jobs, e non il PID del processo).

Disk Usage

Per verificare lo spazio utilizzato dalla directory corrente digitiamo

du .

con l'opzione -h se vogliamo le dimensioni in KB o MB (human readble). Per vedere quali sono gli elementi che occupano più spazio possiamo ordinare il risultato

du . | sort -g

Confrontare files e directories

Il comando diff permette di confrontare il contenuto di due files, ma può essere usato anche per confrontare il contenuto di due directories in modo ricorsivo, ad esempio

diff --recursive --brief /tmp/dir1 /tmp/dir2

Controllo processi

Per sapere se è un processo (o un programma) è in esecuzione possiamo usare

ps aux | grep <nome processo>

siccome il comando “grep” filtra il risultato senza richiedere il match sull'intera parola, se vogliamo risparmiare tempo possiamo abbreviare il comando. Ad esempio, per vedere se apache-tomcat è in esecuzione, probabilmente basterà uno dei seguenti comandi

ps aux | grep apa

ps aux | grep tom

per eliminare un processo usiamo kill, seguito dal PID del processo (il numero che compare all'inizio di ogni linea quando eseguiamo i comandi qui sopra).

Personalizzazione

Se non ci piacciono i colori con cui la shell visualizza files e directory digitiamo il comando

dircolors -p > .dircolors

dopodiché modifichiamo il file così prodotto (cioè .dircolors) e lo copiamo nella nostra home.

Crontab quick-start

Il meccanismo di cron permette di schedulare l'esecuzione periodica o programmata di processi. I processi schedulati in questo modo sono elencati all'interno della crontab dell'utente. I comandi essenziali da conoscere sono

crontab -l                per visualizzare la crontab del nostro utente

crontab myfile        aggiunge il contenuto di myfile alla crontab

crontab -r                svuota la nostra crontab

ovviamente ci servirà ricordare l'ordine dei parametri per definire il timing dei processi schedulati

minuto, ora, giorno del mese, mese, giorno settimanale, comando

e l'uso dei caratteri speciali: * come jolly, */n per eseguire il comando in modo periodico. Ad esempio

*/5 * * * * helloWorld.exe

eseguirà il comando helloWorld.exe ogni 5 minuti. Ricordiamoci che i comandi schedulati nella crontab verranno eseguiti dalla nostra home … quindi occhio al path!

Informazioni varie

Altre informazioni che possono tornare utili “al volo” sul comportamento del sistema

file <nome file>   per conoscere il formato del file

time <comando>       per misurare il tempo d'esecuzione

Questa è solo una rapida panoramica degli strumenti (speriamo) più utili. Per approfondimento rimandiamo alle generosa documentazione disponibile sul web, e all'intramontabile comando man!