Tips & Tricks

Sistemi operativi Linux e software open source
Avatar utente
dino
Messaggi: 16580
Iscritto il: mercoledì 30 novembre 2011, 18:21

Re: Tips & Tricks

Messaggio da dino »

Questa cosa mi sarà moltoooooo utile! Spesso accade che si hanno problemi con la rilevazione della corretta risoluzione dei monitor con Linux
_____________________________
Working harder: http://www.dinofratelli.it
Listen House Music: https://www.dinobrosdj.it
Safety online https://omniadpi.it/

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

dino ha scritto:Questa cosa mi sarà moltoooooo utile! Spesso accade che si hanno problemi con la rilevazione della corretta risoluzione dei monitor con Linux
mi fa piacere che abbia un riscontro positivo! ;)
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Il comando wget: come scaricare un intero sito web e "navigarlo" offline

Spesso capita che, per un motivo o per un altro, alcuni siti web siano offline. Immaginate che questo stesso sito contenga informazioni a noi molto preziose, e che quindi quando tentiamo di accedervi, ed è offline, ci causa non pochi problemi.
A me capita spesso con siti web un po' datati, cioè che oramai hanno perso un amministratore e che quindi sono destinati alla scomparsa, anche se sono siti web che contengono molto informazioni, per me importanti, anche se datate!

Ecco che allora mi viene incontro il comando wget!
Infatti basta dare:

Codice: Seleziona tutto

wget --mirror indirizzo_sito_web
che creerà una cartella con il nome del sito web, dove all'interno vi inserirà tutto il suo contenuto, preoccupandosi di gestire gli eventuali link ipertestuali che si possono trovare una normale pagina web!
Quindi spostatevi con "cd" dove volete creare il vostro sito offline, e magari controllate con:

Codice: Seleziona tutto

pwd
la posizioe.

Ovviamente il sito web potrebbe anche richiedere dati di autenticazione che noi passeremo a wget stesso!

Come sempre consiglio di vedere:

Codice: Seleziona tutto

man wget
per approfondimenti!
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
Lynnfield
Messaggi: 303
Iscritto il: martedì 31 gennaio 2012, 19:30

Re: Tips & Tricks

Messaggio da Lynnfield »

Programmare lo spegnimento o il riavvio

Aggiungo un trucchetto che usavo quando avevo l'appartamento all'università:

spesso capitava che con il mio coinquilino guardavamo le ultime puntate dei Simpson piuttosto che di Big Bang Theory, ecc. prima di metterci a dormire, il problema sorgeva quando dovevamo spegnere il computer che era sprovvisto di telecomando.

Ebbene, si puàò utilizzare il comando shutdownd. Va lanciato da root.

Esempio:

Codice: Seleziona tutto

shutdown -h hh:mm
il computer verrà spento alle ore hh:mm

Codice: Seleziona tutto

shutdown -h -t tempo
dove tempo è dato in secondi, quindi se si dovesse spegnere dopo 5 minuti è da inserire 300 (5X60)

Ricordo che l'opzione -h serve per "non fare nulla" dopo aver spento la macchina. Mentre se si utilizzasse l'opzione -r si ha il reboot, dopo aver spenta all'ora o dopo un tot di secondi/minuti prestabiliti.

Se avete sbagliato o volete semplicemente annullare lo spegnimento automatico bastare preme CTRL+C, se avete ancora quel terminale aperto (magari l'avete disancorato con "disown") e quindi il comando da dare, sempre da root, è:

Codice: Seleziona tutto

shutdown -c
dove c indica proprio cancel!

Grazie a Lynnfield
edit by conoscenza
Immagine

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Edit fatto!
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

La magia di Linux: "chroot" questo sconosciuto!

Una delle cose più "geniali" dei sistemi Linux è il comando "chroot": spesso non conosciuto o mal usato!
Questo, per me, meraviglioso comando permette di "costruirsi" un ambiente, diverso da quello che si sta utilizzando. Mi spiego: questo comando permette di crearsi un ambiente dentro l'altro, senza l'uso di macchine virtuali! Quindi è come avviare due (se si è masochisti anche più di due) sistemi su un unico hardware. Io lo trovo geniale! Voi no?
Vi dico che tramite l'uso corretto di "chroot" voi potete risolvere qualsiasi problema da una live, o da un'installazione in dual-boot, di un sistema in panne! Lo riparate come se foste dentro al sistema!

Molti utenti linux ignorano questo comando, altri lo usano male perchè si limitano a dare la sintassi di chroot tipo:

Codice: Seleziona tutto

chroot /mnt/SO_in_panne
sbagliando a dare preventivamente un corretto mount.


Veniamo al dunque. Per poter utilizzare in maniera corretta il comando chroot si deve.
Loggatevi come root:

Codice: Seleziona tutto

su -
(Ricordo che il carattere "-" (trattino) serve per portarsi dietro tutto l'ambiente e che è diverso dal semplice comando "su" che fa lo switch dell'utente...)
Creiamo una cartella in /mnt/ :

Codice: Seleziona tutto

mkdir /mnt/SO_in_panne
Montiamo la partizione in cui è presente "/" del sistema in panne:

Codice: Seleziona tutto

mount /dev/sdaX /mnt/SO_in_panne/
dove X è il numero di partizione a cui fare riferimento. (Se non la ricordate guardate con "fdisk -l" e/o con "blkid").
...e ora arriva il bello!Molti si fermano qui con l'operazione "mount" invece bisogna dare anche:

Codice: Seleziona tutto

mount -t proc none /mnt/SO_in_panne/proc

in modo tale che vengano passati all'ambiente del sistema in panne le informazioni fornite dal kernel, e:

Codice: Seleziona tutto

mount -o bind /dev/ /mnt/SO_in_panne/dev 
in modo da "legare" i vari /dev/ all'ambiente del sistema in panne.

Ora siamo pronti per accedere, badate bene, come utente root, nel nostro ambiente "in panne" dando:

Codice: Seleziona tutto

chroot /mnt/SO_in_panne
In questa shell ora abbiamo abbandonato il vecchio ambiente e siamo nel nuovo ambiente!

Ovviamente potete usarlo anche su sistemi non in panne!!!
(solitamente lo uso quando devo per forza di cose usare Fedora e da li, "costruendomi" l'ambiente Gentoo installato in dual-boot sul PC, emergo gli aggiornamenti!)

Ndr: una volta creata la cartella si può lanciare il comando per intero che sarebbe cosi formattato:

Codice: Seleziona tutto

mount /dev/sdaX /mnt/SO_in_panne/ && mount -t proc none /mnt/SO_in_panne/proc && mount -o bind /dev/ /mnt/SO_in_panne/dev && chroot /mnt/SO_in_panne
e vi ritroverete con un sol colpo di invio all'interno del vostro "nuovo" ambiente!

Per uscire dall'ambiente chrootato basta dare "exit" e torna all'ambiente originario.
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Il filesystem di Linux

Questo che vi sto per presentare è l'albero delle directory di un sistema Linux. In linea di massima ogni sistema Linux è cosi strutturato, ma ci sono alcune distro che si potrebbero differenziare.
Solitametne chi arriva da un sistema Windows è solito avere directory come "Documents and Settings", "Programmi" e cosi via.
Cercherò di riassumerle un po' tutte, cosi da poterle trovare qui ogni volta che vi chiederete "a cosa serve" e/o "cosa c'è qui dentro"?
Ovviamente la radice è: /, ma se state leggendo qui credo che questo vi sia chiaro! ;)

/bin: contiene i comandi durante l'avvio del sistema e i comandi usati dagli utenti normali dopo l'avvio.

/sbin: contiene comandi per gli utenti root. È però possibile far funzionare alcuni di questi comandi anche ad utenti normale se questi ne hanno il permesso.

/etc: file di configurazione specifici per la macchina in cui si trova la sotto-directory.
Vediamo alcune sue sotto-directory.

/etc/rc: è il file script responsabile per l'avvio o fermare i servizi ai vari runlevel, o quando è lo stesso runlevel a cambiare.

/etc/rc.d/ e /etc/rcX.d/: contengono script da eseguire all'avvio o quando si cambia runlevel.
NB: la X indica il numero del runlevel avviato.

/etc/passwd: è il database degli utenti, con vari campi tra quali il vero nome dell'utente, la home directory, la password criptata ed altre informazioni su ciascun utente. (vedere

Codice: Seleziona tutto

man passwd
per ulteriori informazioni)

/etc/shadow: contiene le password criptate, che vengono spostate da /etc/passwd a /etc/shadow. Questo file è accessibile solamente all'utente root.

/etc/fstab: è il file che elenca i filesystem montanti automaticamente all'avvio.

/etc/group: simile a /etc/passwd, ma descrive i gruppi invece degli utenti. (vedere

Codice: Seleziona tutto

man group
per ulteriori informazioni)

/etc/inittab: è il file script che gestisce l'avvio per l'avvio del runlevel di default. È il file di configurazione di init.

/etc/issue e /etc/issue.net: contiene una breve descrizione del sistema o un messaggio di benvenuto, la scelta è lasciata all'amministratore del sistema. Questo viene visualizzata prima del prompt di login.

/etc/motd: contiene il messaggio del giorno! Viene visualizzato subito dopo ogni login riuscito e serve per dare avvisi o altre informazioni utili all'utente da parte dell'amministratore del sistema.

/etc/mtab: contiene l'elenco dei filesystem montati al momento....

/etc/printcap: contiene le stampanti installate sul sistema, viene generato automaticamente da cups.

/etc/profile: è uno script lanciato al login o all'avvio dalle shell. NON è buona norma modificarlo.

/etc/securety: contiene l'elenco dei terminali sicuri, da cui l'utente root può accedere al sistema.

/root: è la home directory dell'utente root. Infatti il carattere ~, se loggati come root nel terminale, restituirà /root e non più /home/nomeutente.

/lib: contiene le librerie condivise necessarie ai programmi sul filesystem radice.

/lib/modules: contiene, nelle sotto-directory dei vari kernel, i moduli caricabili dal kernel stesso.

/dev: sono contenuti tutti i dispositivi (device) collegati al sistema.

/tmp: contiene i file temporanei. Ricordo però che durante l'utilizzo i file temporanei dovrebbero essere posti in /var/tmp e non in /tmp.

/boot: contiene i file usati dal bootstrap loader, che sia LILO o GRUB. Qui vi sono anche le immagini del kernel. È consigliato avere una partizione separata per questa directory.

/mnt: è il punto di mount, dove è possibile montare temporaneamente altri dischi, immagini di dischi e quel che si vuole. Solitamente si usa montare qui altre partizioni dati di altri SO e non automaticamente modificando il file /etc/fstab.

/media: è il punto di mount automatico del sistema, o almeno dovrebbe essere cosi, quando colleghiamo al sistema, già avviato, dischi esterni, penne usb o altri dispositivi di archiviazione, compresi CD-ROM, etc...

/proc: contiene filesystem virtuali. All'interno sono contenuti file, non presenti sul disco, ma vengono creati nella memoria dal kernel.
NB: i file contenuti qui dentro sono file che non occupano spazio -non esistono sul disco- fino a quando non vengono copiati da qualche parte.

/proc/<numero>: "numero" indica il PID di un processo. Ogni processo ha sotto /proc una directory con le proprie informazioni.

/proc/cpuinfo: contiene le informazioni sul processore (tipo, marca, modello, performance, set di istruzioni...)

/proc/devices: contiene l'elenco dei device driver configurati nel kernel in uso.

/proc/dma: contiene l'elenco dei canali DMA usati al momento.

/proc/filesystems: contiene l'elenco dei filesystem configurati nel kernel

/proc/interrupts: contiene l'elenco degli interrupt in uso e quanti ne sono stati chiamati di ciascuno, specificato per i vari cores.

/proc/ioports: contiene l'elenco delle porte di I/O in uso al momento.

/proc/kcore: contiene l'immagine della memoria fisica del sistema. Viene generato in tempo reale quando i programmi vi accedono!

/proc/kmsg: contiene i messaggi di output del kernel, mostrati in tempo reale. (NdR: con "dmesg" per notare differenze bisogna ridare il comando pù volte, qui vengono visualizzate invece immediatamente con il comando "cat").

/proc/meminfo: contiene informazioni sull'uso della memoria, sia fisica che di swap.

/proc/modules: contiene l'elenco di quali moduli kernel sono caricati al momento.

/proc/net: contiene delle sottodirectory che danno informazioni sullo stato dei protocolli di rete.
AD esempio il comando:

Codice: Seleziona tutto

cat /proc/net/wireless[/quote]
mostra lo stato della nostra connessione wireless

[b]/proc/uptime[/b]: contiene il tempo per il quale il sistema è nello stato "attivo". 

[b]/proc/version[/b]: contiene informazioni sulla versione di kernel, GCC, release, ... 

[b]/usr[/b]: contiene comandi, librerie, pagine man e altri file che non vengono modificato durante le normali operazioni. Questa cartella tende a diventare molto grande, quindi sfruttando il fatto che contiene file che non si modificano durante l'utilizzo, ne rende facile la condivisione in rete.

[b]/usr/bin[/b]: contiene i comandi utenti. Alcuni sono in /bin o in /usr/local/bin.

[b]/usr/sbin[/b]: contiene i comandi di amministrazione del sistema.

[b]/usr/include[/b]: contiene i file di header per il linguaggio di programmazione C.

[b]/usr/lib[/b]: contiene i file di dati che non vengono modificati per i programmi ed i sottosistemi, tra cui anche alcuni file di configurazione validi per tutto il sistema. In passato erano qui memorizzate le librerie delle subrountine di programmazione.

[b]/usr/local[/b]: contiene software installato in locale e per gli altri file.

[b]/var[/b]: contiene, al contrario di /usr, file che vengono modificato in runtime. Qui dentro troviamo lo spool di stampa, di posta, di news, i file di log e i file temporanei. Questa directory non viene condivisa con altri computer della rete.

[b]/var/lib[/b]: contiene i file che vengono modificati mentre il sistema viene normalmente usato.

[b]/var/local[/b]: contiene i dati variabili per i programmi che vengono installati in /usr/local.

[b]/var/lock[/b]: contiene i file di lock. I programmi creano file di lock in /var/lock per indicare che stanno usando un particolare dispositivo o file; altri programmi noteranno il file di lock e non accetteranno di usare il dispositivo o il file in questione. (Come quando si apre un file da una chiavetta usb rimovibile e poi si tenta la "rimozione" e questa viene impedita)

[b]/var/log[/b]: contiene i file di log di vari programmi, ad esempio di:
1)login: in [b]/var/log/wtmp[/b] vengono qui memorizzati i login e logout del sistema;
2)syslog: in [b]/var/log/messages[/b] vengono immagazzinati tutti i messaggi del kernel e dei programmi di sistema
NB: i file in /var/log possono crescere indefinitamente.

[b]/var/run[/b]: contiene i file che contengono informazioni sul sistema valide fino al successivo reboot. Ad esempio:
1)[b]/var/run/utmp[/b] contiene informazioni sugli utenti collegati in quel momento.

[b]/var/spool[/b]: contiene directory per mail, news, code di stampa e altre code. Ciascun spool ha la sua sottodirectory.

[b]/var/tmp[/b]: contiene i file temporanei che devono esistere per tempi più lunghi rispetto a quelli che in /tmp sono consentiti. 

[b]/home[/b]: contiene la home directory degli utenti (raggiungibile con il comando ~). Separare questa directory dal resto del filesystem, non solo rende i backup più semplici, ma consente di avere una /home grande senza che questa vada a rendere succube l'intero filesystem da essa. (La /home racchiude tutti i nostri dati, questa si modifica spesso nel tempo, un' eccessiva dimensione della stessa può compromettere tutto il sistema per insufficienza di spazio sul disco)
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
dino
Messaggi: 16580
Iscritto il: mercoledì 30 novembre 2011, 18:21

Come controllare l'occupazione di spazio su disco di file e

Messaggio da dino »

Come controllare l'occupazione di spazio su disco di file e cartelle

Con il comando df è possibile controllare l'occupazione dello spazio disco dei singoli filesystem montati. Utilizzate lo switch -h per ottenere una indicazione facilmente leggibile in GB o MB.

Se invece volete sapere qual'è lo spazio occupato da una singola directory o da un singolo file dovete usare il comando du. Ad esempio (lo switch -a visualizza anche i file):

du -h /home/Documenti

Questo comando vi mostra l'elenco di tutti i file e le sotto-directory con la relativa occupazione di spazio. Se volete conoscere l'occupazione complessiva della directory principale aggiungete lo switch -c, oppure -s se volete visualizzare solo quest'ultima senza il dettaglio:

du -hc /home/Documenti
du -hs /home/Documenti

E' altresì possibile ottenere un elenco ordinato per dimensione aggiungendo il comando sort:

du -h | sort -n
du -ah | sort -n
_____________________________
Working harder: http://www.dinofratelli.it
Listen House Music: https://www.dinobrosdj.it
Safety online https://omniadpi.it/

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Sostituzione comando

Molto utile negli script, ma anche da dare in pasto direttamente al terminale, è la sostituzione di comando.
Ne ho parlato nell'argomento "Script bash", ma mi sembra giusto linkarlo anche qui perchè è un buon metodo di utilizzare la shell.
Faccio un esempio di utilizzo.
Vogliamo entrare nella sotto-directory del kernel attualmente in uso: che facciamo?
Pimo metodo (lungo):
Conosciamo il kernel che stiamo utilizzando mediante: "uname -r"
Poi usiamo il comando "cd /usr/src/<kernel_attuale>".
Secondo metodo (corto):
Ci basta dare il comando:

Codice: Seleziona tutto

cd /usr/src/$(uname -r)
e il gioco è fatto!

L' esempio è "stupido" però serve a farvi capire l'utilizzo...
Più interessante sarebbe stato vedere:

Codice: Seleziona tutto

rm $(cat lista_di_file_da_cancellare)
oppure:

Codice: Seleziona tutto

elenco_file_di_testo=$(ls *.txt)
Vi linko il posto su citato per i dettali: clicca qui
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Avatar utente
conoscenza
Messaggi: 3821
Iscritto il: venerdì 2 dicembre 2011, 23:27
Località: Parma

Re: Tips & Tricks

Messaggio da conoscenza »

Cosa fare quando un programma/processo occupa erroneamente tutta la CPU

Quando il sistema diventa lento, dovuto ad un crash di un determinato programma/processo, o perchè un programma/comando sta impiegando troppo e per troppo tempo la nostra CPU, per non perdere altro lavoro in esecuzione in quel momento sulla nostra macchina non ci resta che ucciderlo, o come si dice in termini UNIX "killarlo"!

Ma come facciamo ad individurare il processo che occupa troppa % di CPU?
Diamo, da root, il comando:

Codice: Seleziona tutto

ps aux --sort=-pcpu
per ordinare tutti i processi, di tutti gli utenti, in maniera decrescente.
Talvolta i processi sono troppi e quindi ordinandoli in questo modo non ci consente di visualizzare qual è il processo che occupa più & di CPU, per questo allora preferiremo un ordinamento di tipo crescente.
Diamo, sempre da root, il comando:

Codice: Seleziona tutto

ps aux --sort=+pcpu
o anche

Codice: Seleziona tutto

ps aux --sort=pcpu
(senza segno)
e l'ultimo processo postato sarà quello che impiega più CPU.

notiamo l'output del comando "ps" che, nelle prime 4 colonne avrà:
USER: utente proprietario del processo
PID: numero PID (identifica il processo)
%CPU: percentuale di uso della CPU
%MEM: percentuale di uso della RAM

Quindi per "uccidere" il processo diamo il comando:

Codice: Seleziona tutto

kill -9 PID_del_processo_interessato
dove -9 indica il segnale da mandare al processo, quello di uccidersi! ;)

Ricordo di visualizzare:

Codice: Seleziona tutto

man ps

Codice: Seleziona tutto

man kill
e anche:

Codice: Seleziona tutto

kill -l
per visualizzare tutti i tipi di segnali che si possono mandare ad un processo!
Sono allergico a mele morsicate e a finestre con tende.

Segnalate qui le vostre offerte di smartphone e tablet!!!

Rispondi