View my profile on LinkedIn

Posts tagged ‘bash’

Vedere i comandi di shell che si usano piu’ spesso

Tempo addietro sulla lista del Lug alle cui riunioni purtroppo non partecipo da mesi, per la cronica mancanza di tempo, è passata una cosa carina: questo comando

history | awk ‘{a[$2]++ } END{for(i in a){print a[i] ” ” i}}’ | sort -rn | head

mette in ordine di frequenza i comandi di shell che sono stati usati più spesso.

la mia lista sul mo portatile di lavoro è questa:

110 cd
63 su
37 ls
36 ping
32 ssh
21 rdesktop
19 exit
17 cat
10 mkdir
7 vi

e la vostra ?

Foreground e Background nella shell

Spesso mi ritrovo a lanciare comandi da shell piuttosto corposi, copie di svariti giga o tar gzip sempre di svariti giga, che mi impegnano la console del pc (di solito remoto) su cui lavoro perche’ mi dimentico sistematicamente di mettere la & al comando per avviarlo in background.

Per continuare a fare altre cose sulla macchina posso aprire un’altra sessione remota ma linux mette a disposizione un metodo per mettere in background i processi che impegnano la console.

Poniamo di avere un super tar di una decina di giga in corso

pastiglia:/CTH_WEB# tar cvzf.tgz cth *

che sta’ lavorando.

Io posso dare un Ctrl-Z (control Z) e lui mi rispondera’

[1]+ Stopped tar cvzf cth.tgz *
pastiglia:/CTH_WEB#

il processo e’ stato stoppato e lui mi ha reso il prompt della shell

Adesso con il comando jobs vedo che:

pastiglia:/CTH_WEB# jobs
[1]+ Stopped tar cvzf cth.tgz *
pastiglia:/CTH_WEB#

il mio tar e’ fermo ma ancora vivo, quindi non sta’ facendo nulla e non consuma cpu, e’ congelato.

A questo punto posso fare tre cose:

1) lasciarlo in quello stato di stasi perche’ mi servono tutte le risorse del sistema, lo rilascero’ in seguito
2) sono arrivato ad “in seguito” e lo faccio ripartire con:

fg 1

che tradotto vuol dire “rimetti in foreground il processo fermo numero 1″, il numero lo vedo dal comando jobs, e’ il numerello fra parentesi quadre, e non ha nulla a che vedere con l’id del processo che si vede con “ps”

3) lo faccio ripartire in background:

bg 1

cioe’ il processo riparte, ma viaggia senza impegnarmi la shell, come se lo avessi lanciato con la & alla fine del comando.

hitstatus