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
export DISPLAY=<
IP della macchina locale>:0
- Lanciare un'utility locale per catturare il display (esempio Exceed o un terminale
X11
) - 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
!