Systemd: cos’è, come funziona e a cosa serve su Linux

Cos’è systemd, come funziona e perché è diventato il sistema di inizializzazione adottato dalla maggior parte delle distribuzioni Linux moderne.
Come ridurre il consumo di risorse su Linux: monitoraggio, servizi e priorità dei processi

Guida pratica per ottimizzare il consumo di risorse su Linux:
monitoraggio, servizi di sistema e priorità dei processi con comandi
semplici e sicuri.
Networking di base su Linux: i comandi essenziali per diagnosticare la rete

Networking di base su Linux:i comandi essenziali per diagnosticare la rete Home Quando si lavora con Linux, capire rapidamente lo stato della rete è una competenza fondamentale. Prima di pensare a configurazioni complesse o a problemi del router, conviene verificare interfacce, indirizzi IP, gateway e stato della connessione. Su distribuzioni come Debian e Ubuntu, gli strumenti della famiglia `ip` sono ormai il punto di partenza più affidabile perché mostrano informazioni aggiornate in modo chiaro e coerente. Primi controlli di rete Il primo controllo utile è quello delle interfacce di rete. Il comando `ip addr` mostra quali schede sono presenti, quali indirizzi IPv4 e IPv6 sono assegnati e se l’interfaccia è attiva. Se vuoi una vista ancora più sintetica puoi usare `ip a`, mentre `ip link` è utile per verificare se una scheda è in stato `UP` o `DOWN`. Per esempio: ip addrip link Se un’interfaccia non riceve un indirizzo oppure non compare proprio nell’elenco, il problema può trovarsi a livello hardware, driver oNetworkManager. In questi casi è utile affiancare `nmcli` per vedere lo stato delle connessioni gestite dal servizio di rete. Su molteinstallazioni desktop, `nmcli general status` e `nmcli device status` aiutano a capire se la macchina è connessa, disconnessa o in attesa diconfigurazione. nmcli general statusnmcli device status Approfondiamo il routing Il passo successivo è controllare il routing. Anche se la scheda è attiva, il traffico non uscirà correttamente senza un gateway valido ouna tabella di routing coerente. Il comando `ip route` mostra la rotta di default e le eventuali reti locali raggiungibili. Se non vedi unariga con `default via`, la macchina potrebbe non sapere dove inviare il traffico verso Internet. Un esempio di verifica è il seguente: ip route Quando la rete sembra attiva ma non riesci a navigare, il problema può essere legato al DNS. In molti casi la connettività IP funziona, ma inomi dei siti non vengono risolti. Su sistemi con `systemd-resolved`, `resolvectl status` permette di controllare i server DNS usati perogni interfaccia. È un controllo importante perché distingue un guasto di risoluzione dei nomi da un vero problema di connettività. Se vuoitestare rapidamente la rete verso l’esterno, usa `ping` su un IP noto; se invece il ping verso un nome fallisce, il sospetto ricade spessosul DNS. resolvectl statusping -c 4 1.1.1.1ping -c 4 google.com Per completare la diagnosi del networking di base su Linux, conviene verificare anche le porte in ascolto e le connessioni attive. Ilcomando `ss -tulpen` mostra i socket TCP e UDP, i processi associati e le porte aperte, risultando molto utile quando un servizio nonrisponde come dovrebbe. Se stai configurando un server o un’applicazione locale, questo passaggio ti aiuta a capire se il servizio è avviato e se sta davvero ascoltando sulla porta corretta. ss -tulpen Conclusione Il networking di base su Linux si gestisce meglio con una sequenza di controlli semplice ma rigorosa: interfacce, routing, DNS, connettivitàe porte in ascolto. Con pochi comandi puoi isolare rapidamente il punto in cui nasce il problema e risparmiare tempo nella diagnostica.Per chi usa Debian o Ubuntu, imparare `ip`, `nmcli`, `resolvectl`, `ping` e `ss` significa avere una base solida per affrontare quasi ogni guasto di rete in modo ordinato e professionale. LICENZA E CONDIZIONI D’USO Questo How-to è rilasciato sotto licenza Creative Commons Attribution-NonCommercial 3.0 Italy. CONTATTI DELL’AUTORE Marco Ciammella marco@orvietolinux.it Orvieto Linux User Group info@orvietolinux.it
Introduzione alle reti con Linux

Introduzione alle reti con Linux Home Internet e le reti più in generale sono fondamentali per l’utilizzo e la gestione di un sistema operativo, soprattutto nel caso di un sistema operativo Linux. Uno dei nodi cardine è quindi conoscere diversi tool per la configurazione della connessione ad una rete nel nostro sistema operativo. Con questo primo articolo, trattiamo una panoramica introduttiva circa le architetture e i protocolli in modo da poter avere una idea generale. Internet e le reti: overview Per rete informatica s’intende un insieme di elaboratori ed altri dispositivi collegati tra loro. La principale e la più vasta rete conosciuta ed utilizzata è Internet. È una rete ad accesso pubblico che connette vari dispositivi e terminali in tutto il mondo. L’interconnessione di terminali e dispositivi si basa su delle specifiche architetture (logiche) di rete; le tre principali architetture di rete sono: Client – Server: il dispositivo client effettua una richiesta al server ed il server invia la relativa risposta al client. Peer – to – Peer: i dispositivi in connessione svolgono sia il ruolo di client che il ruolo di server. Torrent è un tipico esempio di peer to peer. Ibrida: è tipo di architettura che utilizza sia il paradigma client-server e sia il paradigma peer-to-peer. Un esempio di applicativo che fa utilizzo di questa architettura è Spotify.
Cambiare il messaggio di benvenuto del terminale di Ubuntu

Come cambiare il messaggio di benvenuto nel terminale di Ubuntu Introduzione Stanco di vedere sempre il solito avviso o messaggio quando apri il terminale di Ubuntu? Abbiamo la soluzione 🙂 In alcuni casi potresti infatti vedere un messaggio di benvenuto con informazioni sul sistema, consigli o testo personalizzato. In molti casi questo messaggio non arriva dal terminale in sé, ma dal MOTD (Message of the Day) oppure dallo script di avvio della shell. La buona notizia è che puoi modificarlo in modo semplice, scegliendo se mostrare un saluto personalizzato, un messaggio più pulito oppure nessun messaggio extra. Capire da dove arriva il messaggio Prima di cambiare qualcosa, è utile capire da dove proviene il testo che vedi. Su Ubuntu, il messaggio può arrivare da /etc/motd, dagli script in /etc/update-motd.d/ oppure da file come ~/.bashrc nel tuo account utente. Se vuoi fare una verifica rapida, puoi usare questi comandi: cat /etc/motdls /etc/update-motd.d/ Il primo mostra un eventuale messaggio statico, mentre il secondo elenca gli script che generano il messaggio dinamico. Se invece il testo compare solo quando apri una nuova sessione del terminale, è probabile che il saluto sia stato inserito nella configurazione della shell. Creare un messaggio personalizzato nel MOTD Se vuoi cambiare il messaggio mostrato all’accesso, puoi creare uno script personalizzato nella cartella update-motd.d. In questo modo Ubuntu mostrerà il tuo testo insieme, o al posto, degli altri messaggi del sistema. Per esempio: sudo nano /etc/update-motd.d/99-custom Dentro il file puoi inserire: #!/bin/shecho “Benvenuto su Ubuntu, $USER!”echo “Oggi è un buon giorno per evitare sistemi operativi con le finestre chiuse ;-)” Poi rendi lo script eseguibile: sudo chmod +x /etc/update-motd.d/99-custom Da questo momento, il messaggio verrà mostrato quando accedi al sistema o apri una nuova sessione compatibile con il MOTD. È una soluzione semplice e pulita, perfetta se vuoi un saluto visibile a tutti gli utenti del computer. Cambiare il saluto solo nel tuo terminale Se invece vuoi un messaggio personale, visibile solo nel tuo account, puoi modificare ~/.bashrc. È una scelta comoda quando vuoi personalizzare il terminale senza toccare la configurazione di sistema. Apri il file con: nano ~/.bashrc e aggiungi in fondo una riga come questa: case $- in*i*) echo “Benvenuto, $USER! Pronto a lavorare su Ubuntu?”;;esac Questo comando fa comparire il saluto solo nelle shell interattive, evitando messaggi inutili negli script o nelle sessioni non interattive. Dopo aver salvato, chiudi e riapri il terminale per vedere il risultato. Ridurre o rimuovere i messaggi predefiniti A volte il terminale mostra troppe informazioni e può essere utile renderlo più essenziale. In quel caso, puoi disattivare alcuni script del MOTD togliendo il permesso di esecuzione, ad esempio: sudo chmod -x /etc/update-motd.d/10-help-textsudo chmod -x /etc/update-motd.d/50-motd-news Fai attenzione: questa operazione influisce sul sistema, quindi conviene procedere con prudenza e modificare solo ciò che conosci. Se cambi idea, puoi riattivare uno script con: sudo chmod +x /etc/update-motd.d/nome-script Conclusione Cambiare il messaggio di benvenuto nel terminale di Ubuntu è più facile di quanto sembri. Puoi intervenire sul MOTD di sistema, creare un saluto personalizzato oppure modificare solo il tuo ambiente utente. In pochi minuti puoi rendere il terminale più ordinato, più utile o semplicemente più accogliente. LICENZA E CONDIZIONI D’USO Questo How-to è rilasciato sotto licenza Creative Commons Attribution-NonCommercial 3.0 Italy. CONTATTI DELL’AUTORE Marco Ciammella marco@orvietolinux.it OrvietoLUG info@orvietolinux.it
Introduzione a Docker su Linux

Comprendere i container e Docker per una installazione e gestione pulita su Linux e le distro più diffuse.
TOP/HTOP: Il monitoraggio dei processi

TOP/HTOP: Il monitoraggio dei processi Le distribuzioni GNU/Linux in generale sono dotate di un comando per quanto riguarda il monitoraggio dei processi in atto nel sistema operativo e porta il nome di top, acronimo che sta per “Table Of Processes”, “tabella dei processi”. Quest’ultimo indica, dunque, tutti i programmi in esecuzione indipendentemente dal fatto che siano visibili o “invisibili” (ossia, sotto forma, di processi “in background” o, per meglio dire, di “demoni” (in inglese “daemons”) e sono visualizzabili da riga di comando attraverso un elenco auto-aggiornante suddiviso per alcune colonne. Figura 1: Panoramica di top Nell’esempio si nota, anzitutto, la colonna “Tasks” dove sono riportati di seguito i processi avviati (running), quelli “dormienti” (sleeping) ed altri denominati zombie (applicazioni, cioè, pur se defunte che comunque rimangono ancora nella tabella di processi e il cui “valore di uscita” (o exit status) è letto dal processo padre fino a che il procedimento stesso non è di fatto terminato). Altre colonne riguardano, invece, il consumo di CPU in cui quest’ultimo si trova un certo stato che, a sua volta, può essere: us: esecuzione in modo utente; sy: esecuzione da parte del sistema; id: CPU in modalità inattiva; e l’utilizzo della memoria RAM che si distingue in 3 categorie: total: memoria a disposizione; used: memoria utilizzata; free: memoria disponibile. Infine, ciascun processo riportato nella tabella sottostante le succitate colonne è individuabile per mezzo di un proprio PID (“Process Identifier”), un identificatore univoco assegnato dal kernel al momento della creazione del processo da parte dello stesso. Un’alternativa più accattivante dal punto di vista grafico ed eseguibile sempre da riga di comando a “top” è rappresentata da htop, applicazione già presente preinstallata in alcune distribuzioni GNU/Linux, ma comunque facilmente installabile da Terminale con la seguente riga di comando: sudo apt install htop (Debian/Ubuntu e derivate). Figura 2: panoramica di htop A differenza di “top”, questo programma ha nell’interattività il suo punto di forza, dal momento che non soltanto esso permette di poter visualizzare in tempo reale i vari processi in esecuzione con una rappresentazione a colori per quanto semplice dei processori in uso (in base al numero dei core, distinguibili a partire dal numero 0) e della memoria usata e disponibile, bensì consente di poter attuare tutte quelle operazioni, per esempio, il termine delle applicazioni (in genere operabile attraverso il comando “kill” da Terminale con sintassi del tipo: “kill -9 [+PID processo]”) semplicemente usando i comandi da F1 a F1O! LICENZA E CONDIZIONI D’USO Questo How-to è rilasciato sotto licenza Creative Commons Attribution-NonCommercial 3.0 Italy. CONTATTI DELL’AUTORE Jonathan Gaddi Giomini OrvietoLinux info@orvietolinux.it
Virtualizzare una distribuzione Linux con QEMU

Virtualizzare una distribuzione Linux con QEMU Come ci suggerisce Wikipedia, la virtualizzazione è una serie di processi che ci consentono di “astrarre” le componenti hardware di un computer (processore, memoria, spazio disco, dispositivi di rete e molto altro), in modo tale che il software riesca a gestirle in maniera virtuale. Di conseguenza quando creiamo una macchina virtuale non avremo un vero e proprio computer / server fisico ma tutto sarà replicato a livello di programma. Perchè virtualizzare? I benefici dell’utilizzo di macchine virtuali sono molteplici: gestione snella dei sistemi operativi tramite un unico hypervisor abbattimento dei costi hardware scalabilità delle risorse semplificata tramite gestore delle macchine virtuali operazioni di duplicazione dei sistemi velocizzata In generale, possiamo utilizzare le macchine virtuali anche per “testare” le distribuzioni Linux, senza necessariamente installarle sul disco fisico, in un ambiente ideale che può essere creato, replicato ma anche cancellato in pochissimo tempo.
Scripting Bash – Shebang e comandi

Scripting Bash – Shabang e comandi Continuando ad affrontare rudimenti e concetti di base per approcciare allo scripting bash, è necessario soffermarsi su due concetti fondamentali: lo shabang e il comando con la sua appropriata sintassi. Shabang Lo shabang è una sequenza di caratteri iniziante con #! collocato esattamente all’inizio dello script per indicare al sistema quale interprete utilizzare per l’esecuzione. Precisamente, consiste in un magic number (una stringa di testo utilizzata per delle finalità specifiche) seguito dal pathname assoluto dell’interprete da utilizzare. L’assenza dello shabang in uno script può portare spesso ad una esecuzione non corretta da parte del sistema. Questa casistica è ancora più frequente se nel file rappresentante lo script viene omessa l’estensione.
Scripting Bash – Creazione ed esecuzione di script

Scripting Bash – Creazione ed esecuzione di script Dopo il primo articolo di introduzione generale, presentiamo una serie di articoli contenenti i rudimenti per un approccio con lo scripting bash. Per avere una visione di base generale, è necessario conoscere innanzitutto la differenza fra le varie tipologie di script, come creare ed eseguire uno script. Script sh e script bash Quando si parla di script, si parla di un particolare programma scritto in una classe di linguaggi di programmazione chiamati linguaggi di scripting. Dato questo insieme di script, ne analizzeremo un suo sottoinsieme: gli script di shell. Lo script di shell identifica uno script per una determinata shell di un sistema operativo, perciò non interpretabile (ed eseguibile) da altre shell di sistema simili. La shell bash, esegue ed interpreta gli script bash: nome_file.bash. Riferendoci a ciò che è stato detto in precedenza, altri tipi di shell non possono quindi interpretare questo specifico script. Esiste inoltre un altro tipo di script degno di nota, chiamato script sh: nome_file.sh. Lo script sh può essere eseguito su qualsiasi tipo di shell, sia shell bash sia shell non bash. (È importante a questo punto ricordarsi la distinzione presente nel precedente articolo fra “Bourne Again Shell” e “Bourne Shell”). Creare ed eseguire uno script Come primo passo, è essenziale capire come creare ed eseguire uno script in un determinato ambiente. Per creare uno script si può eseguire, da prompt, il comando: Per eseguire uno script, in una shell bash, abbiamo quattro differenti modalità: 1. ./nome_file.estensione. Con l’esecuzione di questo comando viene invocata una sotto-shell che esegue uno dopo l’altro presente nello script in questione. Per utilizzare questa sintassi è necessario che il file script abbia i permessi di esecuzione (la maschera di creazione dei file di default non assegna i permessi di esecuzione). Per eseguire lo script tramite questa modalità, usualmente si eseguono i seguenti comandi: 2. bash nome_file.estensione. Anche in questo caso, viene invocata una sotto-shell che esegue sequenzialmente i comandi presenti nello script: 3. source nome_file.estensione. Con questo comando, al contrario, non viene creata una sotto-shell ma l’esecuzione avviene nella shell corrente: 4. nome_file.estensione. Anche in questo caso, come nel precedente, non viene creata una sotto-shell ma lo script viene eseguito nella shell corrente: La puntualizzazione fra le modalità che eseguono lo script nella shell corrente o in una sotto-shell è fondamentale per l’utilizzo delle proprietà locali, come ad esempio variabili locali o funzioni, di una determinata shell nello script, ma approfondiremo tutto nei prossimi articoli. In questo secondo articolo, abbiamo prolungato la parte introduttiva con una piccola digressione sullo scripting, sulla creazione e sulle varie esecuzioni di uno script. Nel prossimo articolo introdurremo il concetto di shabang spiegando la sua importanza e il concetto di comando con la sua sintassi. CONTATTI DELL’AUTORE Leonardo Picchiami leonardo@orvietolinux.it OrvietoLinux info@orvietolinux.it Clicca sul seguente pulsante per leggere il prossimo articolo avanzato. Shabang e comandi Vuoi invece approfondire lo scripting in BASH in maniera completa?Clicca sul seguente banner per ricevere informazioni sugli incontri informativi della nostra associazione!