Accedi
Accedi

Che cos’è un daemon in informatica?

Che cos’è un daemon in informatica?
Hostman Team
Technical writer
Sistema: Linux
23.10.2025
Reading time: 9 min

Il termine daemon deriva dalla mitologia greca antica, dove indicava un essere immateriale che influenzava il mondo umano.

In informatica, soprattutto nei sistemi operativi di tipo UNIX, un daemon è un processo in background che si esegue senza interazione diretta con l’utente. Non dipende da un terminale o da un’interfaccia grafica e in genere viene avviato all’avvio del sistema o in determinate condizioni.

Che cos’è un daemon

La funzione principale di un daemon è fornire servizi specifici ad altri processi o utenti. Ad esempio, un daemon può restare in ascolto su porte di rete in attesa di connessioni, monitorare eventi di sistema e rispondere quando vengono soddisfatte determinate condizioni, gestire attività pianificate (come cron), inviare e-mail (sendmail) e molto altro.

In Windows, l’equivalente più vicino a un daemon è un servizio (Service). La differenza principale risiede nel modo in cui vengono avviati, registrati, gestiti e configurati all’interno del sistema operativo. Tuttavia, lo scopo è lo stesso: garantire il funzionamento continuo in background di determinate funzioni o servizi.

Caratteristiche principali di un daemon

  • Esecuzione in background: gli utenti di solito non vedono un’interfaccia del daemon; non scrive sull’output standard (o lo reindirizza ai log) e non richiede input da tastiera.

  • Autonomo: un daemon viene avviato all’avvio del sistema, quando viene richiamato da un sistema di init (come systemd), oppure manualmente dall’utente (tramite script, cron, ecc.).

  • Lunga durata: idealmente un daemon viene eseguito indefinitamente, a meno che non si verifichi un errore critico o riceva un segnale di arresto esplicito.

  • Isolato: di solito viene eseguito sotto un account utente o gruppo separato per ridurre i privilegi, rendendo i servizi più sicuri e facili da gestire.

  • Logging: invece di utilizzare input/output standard, i daemon registrano le informazioni in file di log o nel logger di sistema (journald, syslog, ecc.), utile per il debug e la diagnostica.

Daemon in Linux

Storicamente, quasi tutte le attività di sistema in background in Linux sono implementate come daemon. Il sistema operativo ne include decine, ciascuno con una funzione specifica. Ecco alcuni esempi:

  • sshd (Secure Shell Daemon): resta in ascolto sulla porta 22 (per impostazione predefinita) e consente agli utenti remoti di connettersi tramite SSH crittografato. Senza sshd, l’accesso remoto al terminale sarebbe quasi impossibile.

  • cron: un daemon di pianificazione dei lavori. Controlla le voci del crontab ed esegue script o comandi secondo una pianificazione, come la pulizia dei log, l’invio di report o i controlli di sistema.

  • syslogd / rsyslog / journald: daemon di registrazione del sistema che raccolgono messaggi dal kernel, dalle utility, da altri daemon e applicazioni, e li salvano nei file di log o nel journal.

  • NetworkManager o Wicd: daemon che gestiscono le impostazioni di rete — automatizzano connessioni a reti cablate/wireless, switch, configurazioni VPN e altro.

Questi daemon vengono avviati all’avvio del sistema e registrati nel gestore dei servizi (ad esempio systemd). Restano in esecuzione fino allo spegnimento o riavvio del sistema. Gli utenti interagiscono con essi indirettamente — tramite file di configurazione, comandi da terminale (service, systemctl) o richieste di rete (se il daemon fornisce un’interfaccia HTTP/S, SSH o simile).

Come creare e gestire daemon

Per implementare un daemon, segui questi passaggi:

  1. Creazione del processo (fork): il processo padre chiama fork() e continua l’esecuzione del codice del daemon nel processo figlio.

  2. Scollegamento dal terminale di controllo (setsid): per evitare interferenze dell’utente (ad esempio la chiusura del terminale), il daemon chiama setsid() per avviare una nuova sessione e diventarne il leader.

  3. Chiusura dei descrittori di input/output standard: poiché il daemon non deve scrivere sullo schermo o attendere input, stdin, stdout e stderr vengono chiusi o reindirizzati ai file di log.

  4. Gestione dei segnali e logging: per supportare uno spegnimento pulito o il ricaricamento della configurazione, il daemon deve gestire i segnali (SIGTERM, SIGHUP, ecc.). La registrazione viene generalmente effettuata tramite syslog o file.

  5. Ciclo principale: dopo l’inizializzazione, il daemon entra nel ciclo principale: attende eventi, li gestisce e ripete finché non viene interrotto.

Vediamo come creare un daemon su Ubuntu 22.04 utilizzando un server cloud Hostman.

1. Scrivere il daemon in C

Crea un file chiamato mydaemon.c e inserisci il seguente codice:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <syslog.h>

int main() {
    // Aprire syslog
    openlog("mydaemon", LOG_PID, LOG_DAEMON);
    syslog(LOG_NOTICE, "Daemon started");

    // Ciclo infinito principale
    while (1) {
        // Attività in background: monitoraggio, gestione code, ecc.
        syslog(LOG_NOTICE, "Performing task...");
        sleep(60);
    }

    // Se il ciclo termina
    syslog(LOG_NOTICE, "Daemon stopped");
    closelog();

    return 0;
}

2. Compilare il programma

Aggiorna prima i pacchetti:

sudo apt update && sudo apt upgrade

Installa il compilatore GCC se non è già installato:

sudo apt install gcc

Compila il daemon:

gcc mydaemon.c -o mydaemon

3. Spostare l’eseguibile

Sposta il file binario in /usr/local/bin/, una posizione standard per le utility personalizzate:

mv mydaemon /usr/local/bin/mydaemon

4. Creare un servizio systemd

Crea un file di unità chiamato mydaemon.service:

sudo nano /etc/systemd/system/mydaemon.service

Inserisci il seguente contenuto:

[Unit]
Description=My Daemon
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/mydaemon
Restart=on-failure

[Install]
WantedBy=multi-user.target

Spiegazione dei campi:

  • Description: descrizione mostrata in systemctl status.
  • After=network.target: assicura che il daemon si avvii dopo che la rete è attiva.
  • Type=simple: il daemon non crea sottoprocessi, si esegue come un unico processo.
  • ExecStart: percorso all’eseguibile del daemon.
  • Restart=on-failure: riavvio automatico in caso di errore del daemon.
  • WantedBy=multi-user.target: fa partire il servizio nell’ambiente multiutente standard.

5. Avviare e monitorare il daemon

sudo systemctl daemon-reload          # Ricaricare la configurazione di systemd
sudo systemctl start mydaemon         # Avviare il daemon
sudo systemctl status mydaemon        # Verificare lo stato

Se tutto funziona, lo stato mostrerà active. Per visualizzare i log:

journalctl -u mydaemon.service -e

Esempi di utilizzo dei daemon

  • Server web

Il loro compito è restare in ascolto su una porta di rete (di solito 80 o 443), accettare richieste HTTP/HTTPS, generare una risposta (una pagina HTML, dati JSON, ecc.) e restituire il risultato al client. Nella maggior parte dei casi, un server web si avvia con il sistema e rimane in esecuzione fino allo spegnimento o a un comando di stop (es. systemctl stop nginx).

  • Daemon di database

MySQL/MariaDB, PostgreSQL, MongoDB — tutti questi sono daemon. Si avviano con il sistema e continuano a funzionare in background, accettando richieste da applicazioni client o servizi web. Questi daemon registrano l’attività, supportano la configurazione tramite file e sono gestiti con strumenti dedicati (o systemd).

  • Pianificatori di attività (cron, atd)

Il daemon cron controlla la tabella di pianificazione (crontab) ed esegue programmi negli orari o intervalli specificati dall’utente. Ciò consente di automatizzare backup, aggiornamenti di sistema, controlli di integrità e molte altre attività di routine.

atd è un daemon simile, ma esegue le attività solo una volta in un momento specifico (a differenza di cron, che le esegue periodicamente).

  • Servizi di accesso e controllo (sshd, xrdp)

sshd (Secure Shell Daemon) fornisce accesso remoto tramite il protocollo SSH. xrdp abilita connessioni desktop remote utilizzando il protocollo RDP. Agisce come daemon che ascolta le connessioni di rete su una porta specifica.

  • Daemon del sistema di init (systemd, init, Upstart)

Nei sistemi moderni, il ruolo del “daemon principale” è svolto da systemd (che sostituisce il vecchio sistema SysV init). systemd è il primo processo che parte dopo il kernel ed è responsabile dell’avvio e della gestione di tutti gli altri servizi e processi. Li avvia in parallelo e gestisce le loro dipendenze. In breve, systemd è esso stesso un daemon che “orchestra” tutti gli altri del sistema.

Vantaggi e svantaggi dei daemon

Vantaggi:

  • Automazione: i daemon permettono di automatizzare il comportamento del sistema — dalla risposta alle richieste di rete alla pianificazione di attività — senza intervento dell’utente.

  • Isolamento: l’esecuzione sotto account o gruppi separati e il distacco dal terminale aumentano la sicurezza, limitando i danni potenziali in caso di compromissione.

  • Funzionamento continuo: un daemon può continuare a fornire servizi (come un server web) senza interruzioni anche se l’utente si disconnette o chiude la console.

  • Gestibilità: Linux fornisce strumenti di sistema (es. systemd, script di init) per gestire centralmente tutti i daemon: avvio, arresto, riavvio e registrazione.

Svantaggi:

  • Complessità di debug: poiché i daemon funzionano in background e non mostrano output su console, il debug richiede log dettagliati e configurazioni più complesse (flag di debug, tracciamento, ecc.).

  • Rischi di sicurezza: se un daemon viene eseguito con privilegi elevati (ad esempio come root), una vulnerabilità può compromettere l’intero sistema. È consigliabile eseguirli con privilegi limitati.

  • Gestione delle dipendenze: alcuni daemon possono fallire se, ad esempio, necessitano dell’accesso alla rete prima che questa sia disponibile. I moderni sistemi di init risolvono questo problema, ma con i vecchi script SysV init era comune.

  • Maggior consumo di risorse: qualsiasi processo in esecuzione continua consuma risorse di sistema (memoria, CPU). Un numero eccessivo di daemon può ridurre le prestazioni, soprattutto su sistemi con risorse limitate.

Conclusione

I daemon sono una parte fondamentale dell’architettura dei sistemi operativi Linux, offrendo ampie capacità di automazione e servizi in background. Consentono agli amministratori di configurare in modo flessibile operazioni di rete, attività pianificate, logging, sistemi di sicurezza e molti altri componenti.

Scrivere un proprio daemon richiede la comprensione di processi, segnali, chiamate di sistema e particolare attenzione alla registrazione e alla sicurezza.

I moderni sistemi di init (in particolare systemd) hanno semplificato la gestione dei daemon e la logica dei servizi, rendendo la creazione di servizi personalizzati più strutturata e flessibile. Tuttavia, rimane un campo complesso che richiede progettazione accurata, debug e manutenzione costante.

Se cerchi una soluzione affidabile, performante ed economica per i tuoi flussi di lavoro, Hostman offre opzioni di Hosting VPS Linux, tra cui Debian VPS, Ubuntu VPS e VPS CentOS.

Sistema: Linux
23.10.2025
Reading time: 9 min

Simili

Sistema: Linux

Come aprire una porta su Linux

Aprire le porte in Linux è un’operazione fondamentale che consente a determinati servizi o applicazioni di scambiare dati sulla rete. Le porte agiscono come canali di comunicazione, permettendo l’accesso ai servizi autorizzati e bloccando quelli non autorizzati. La loro corretta gestione garantisce sicurezza, buone prestazioni e funzionamento stabile delle applicazioni. Comprendere le porte e la loro funzione Le porte sono gli endpoint logici della comunicazione di rete, attraverso i quali i dispositivi inviano e ricevono informazioni. Esempi comuni: HTTP → Porta 80 HTTPS → Porta 443 SSH → Porta 22 Una porta aperta indica che un servizio è in ascolto e accetta connessioni in ingresso. Una porta chiusa, invece, blocca la comunicazione. Per garantire sicurezza e disponibilità dei servizi, è fondamentale gestire correttamente le porte aperte su Linux. Verificare le porte aperte su Linux Prima di aprire una nuova porta, conviene controllare quali porte sono già attive. Puoi farlo con diversi comandi Linux. Con netstat Per mostrare le porte aperte, esegui: netstat -tuln L’opzione -tuln limita l’output alle porte TCP e UDP, senza risolvere i nomi host. netstat offre una panoramica in tempo reale delle connessioni attive. Nota: se netstat non è installato: sudo apt install net-tools Con ss Il comando ss è una versione più moderna e veloce di netstat: ss -tuln Mostra le porte attualmente in uso e le relative informazioni sui socket. Con nmap Per un’analisi più approfondita: nmap localhost nmap esegue una scansione dell’host specificato (in questo caso localhost) per individuare le porte aperte — utile per capire quali servizi sono esposti alla rete pubblica. Nota: installa nmap con: sudo apt install nmap Aprire porte su Linux Per consentire l’accesso attraverso una porta specifica, occorre modificare le regole del firewall. Linux offre vari strumenti: iptables, ufw e firewalld. Ecco come utilizzarli. Metodo 1: con iptables iptables è un potente strumento a basso livello che offre un controllo preciso sul traffico di rete. Aggiungere una regola per una porta specifica Esempio: aprire la porta 8080 per traffico HTTP: sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT Spiegazione: sudo: esegue il comando come amministratore -A INPUT: aggiunge la regola alla catena di input (traffico in ingresso) -p tcp: si applica al protocollo TCP --dport 8080: specifica la porta 8080 -j ACCEPT: accetta il traffico corrispondente alla regola Queste modifiche non sono permanenti: dopo il riavvio del sistema, le regole vengono cancellate. Salvare la configurazione Per rendere le regole permanenti: sudo apt install iptables iptables-persistent sudo netfilter-persistent save Le regole vengono così memorizzate e ricaricate automaticamente a ogni riavvio. Ricaricare le modifiche sudo netfilter-persistent reload Metodo 2: con ufw (Uncomplicated Firewall) ufw è un’interfaccia semplificata per iptables che permette di gestire facilmente le regole del firewall. Abilitare ufw sudo ufw enable Se non è installato: sudo apt install ufw Aprire una porta specifica Esempio: consentire connessioni SSH sulla porta 22: sudo ufw allow 22/tcp Questo comando autorizza il traffico TCP in ingresso sulla porta 22. Verificare lo stato del firewall sudo ufw status Mostra tutte le regole attive e le porte aperte. Metodo 3: con firewalld firewalld è un demone firewall dinamico che semplifica la gestione delle regole. Aggiungere una regola permanente Esempio: aprire la porta 443 (HTTPS): sudo firewall-cmd --permanent --add-port=443/tcp Installazione e avvio di firewalld: sudo apt install firewalld sudo systemctl enable firewalld sudo systemctl start firewalld Ricaricare le regole sudo firewall-cmd --reload Verificare che la porta sia aperta sudo firewall-cmd --list-all Visualizza tutte le zone e le regole attive, incluse le porte aperte. Testare la porta aperta Dopo aver aperto una porta, assicurati che sia effettivamente accessibile. Con telnet telnet localhost port_number Se la connessione va a buon fine, la porta è aperta e operativa. Con nmap nmap -p port_number localhost Scansiona il port specificato per verificarne la disponibilità. Con curl curl localhost:port_number Una risposta positiva indica che il servizio è attivo sulla porta aperta. Risoluzione dei problemi comuni Se l’apertura di una porta non funziona: Controlla le regole del firewall iptables -L ufw status Verifica lo stato del servizio systemctl status <nome_servizio> Aprire porte in base al protocollo A seconda del servizio, può essere richiesto TCP o UDP. Porta TCP Esempio: consentire il traffico MySQL sulla porta 3306: sudo ufw allow 3306/tcp Porta UDP Esempio: aprire la porta 161 per SNMP: sudo ufw allow 161/udp Gestire l’accessibilità delle porte Limitare l’accesso a un indirizzo IP specifico sudo ufw allow from 192.168.1.100 to any port 22 Permette l’accesso SSH solo da quell’indirizzo IP, migliorando la sicurezza. Chiudere una porta sudo ufw deny 80/tcpBlocca il traffico in ingresso sulla porta 80 (HTTP). Conclusione Verificare e aprire le porte in Linux è essenziale per garantire il corretto funzionamento della rete e la sicurezza dei servizi. Con strumenti come iptables, ufw e firewalld puoi controllare il traffico in modo preciso e sicuro. Effettua sempre test con nmap, curl o telnet per assicurarti che le configurazioni siano corrette. Una buona gestione delle porte è la base per server affidabili, connessioni sicure e prestazioni ottimali.
29 October 2025 · 5 min to read
Sistema: Linux

Scorciatoie da tastiera Linux: le migliori combinazioni per gli utenti

Le scorciatoie da tastiera in Linux sono strumenti estremamente utili che permettono di lavorare in modo più efficiente. Invece di usare il mouse e navigare nei menu, puoi spesso premere solo un paio di tasti per ottenere lo stesso risultato in meno tempo. I sistemi operativi Linux supportano un’ampia gamma di scorciatoie, o hotkey. È importante notare che ogni distribuzione può avere combinazioni specifiche che non funzionano altrove. Tuttavia, gli utenti possono aggiungere nuove combinazioni o modificare quelle esistenti nelle impostazioni di sistema. In questo articolo vedremo le combinazioni universali, valide per la maggior parte degli ambienti desktop. La maggior parte delle scorciatoie descritte riguarda l’uso del terminale. Scorciatoie di base di Linux Cominciamo con le scorciatoie generali, utili per svolgere attività ripetitive più rapidamente. Molte di esse utilizzano il tasto Super, che corrisponde al tasto Windows nei sistemi Windows o al tasto Cmd in macOS. Ad esempio, la scorciatoia Super + Spazio per cambiare layout di tastiera in Linux è simile a Windows + Spazio o Cmd + Spazio. Combinazioni principali: Alt + Tab o Super + Tab – Passa tra le finestre aperte (come su Windows). Super + Spazio – Cambia layout di tastiera. Super + A – Apre il menu delle applicazioni (solitamente in basso a sinistra). F2 – Rinomina un file selezionato. Clicca sul file, poi premi F2. Ctrl + Alt + T – Apre il terminale, una delle scorciatoie più importanti di Linux. Alt + F2 – Apre una finestra di comando al centro dello schermo per eseguire un programma. Super + D – Minimizza tutte le finestre e mostra il desktop. Ctrl + Alt + Canc – Apre un prompt con le opzioni “Annulla” e “Disconnetti”.Se non viene effettuata alcuna scelta, il sistema esegue automaticamente il logout dopo 60 secondi. Queste combinazioni aiutano a lavorare più velocemente e in modo più ordinato. Passiamo ora ai comandi rapidi del terminale, fondamentali per gli utenti Linux. Scorciatoie del terminale Linux Il terminale è lo strumento principale per interagire con la shell Linux. Le scorciatoie seguenti permettono di lavorare in modo più rapido ed efficiente. Gestione di finestre e schede del terminale Queste scorciatoie servono per aprire, passare o chiudere rapidamente schede e finestre del terminale: Ctrl + Shift + Q – Chiude completamente la finestra del terminale. Ctrl + Shift + T – Apre una nuova scheda. Ctrl + Shift + W – Chiude la scheda corrente (o la finestra, se è l’unica aperta). Ctrl + Shift + D – Stacca la scheda corrente e la apre in una nuova finestra. Ctrl + PgUp / PgDown – Passa tra le schede (precedente/successiva). Movimento del cursore in una riga Gli utenti Linux lavorano quasi sempre con la tastiera. Queste combinazioni evitano l’uso del mouse e permettono di spostarsi nel testo più velocemente: Ctrl + A (o Home) – Sposta il cursore all’inizio della riga. Ctrl + E (o End) – Sposta il cursore alla fine della riga. Ctrl + X, X – Passa rapidamente all’inizio della riga e poi torna alla posizione originale. Ctrl + → / ← o Alt + F / B – Muove il cursore di una parola avanti o indietro. Inserimento e modifica dei comandi Oltre a muovere il cursore, queste scorciatoie semplificano la scrittura e la modifica dei comandi: Tab – Una delle scorciatoie più utili: completa automaticamente comandi e percorsi.Premila una volta per completare, due volte per visualizzare i suggerimenti. Ctrl + T – Scambia le ultime due lettere prima del cursore. Alt + T – Scambia le ultime due parole prima del cursore. Alt + Backspace – Cancella la parola precedente. Alt + D – Cancella tutti i caratteri dopo il cursore fino al successivo spazio. Alt + U / Alt + L – Converte in maiuscolo o minuscolo il testo a destra del cursore. Operazioni con gli appunti Queste combinazioni permettono di tagliare, copiare e incollare testo nel terminale: Ctrl + W – Cancella la parola precedente. Ctrl + U – Cancella tutto dal cursore all’inizio della riga. Ctrl + K – Cancella tutto dal cursore alla fine della riga. Ctrl + Y – Incolla l’ultimo testo cancellato. Navigazione nella cronologia dei comandi I seguenti tasti aiutano a richiamare rapidamente comandi precedentemente usati. Per visualizzare l’elenco completo dei comandi eseguiti: history Altri comandi utili: Ctrl + R – Cerca un comando usato in precedenza.Premi Invio per eseguirlo o Esc per annullare. Ctrl + O – Esegue il comando trovato. Alt + < – Carica il primo comando della cronologia. Gestione dello schermo e dei processi Queste scorciatoie gestiscono la quantità di informazioni visualizzate e il controllo dei processi attivi: Ctrl + C – Interrompe immediatamente il processo attivo (segnale SIGINT). Ctrl + D – Chiude il terminale (equivalente al comando exit). Ctrl + Z – Sospende il processo corrente e lo invia in background.Usa fg per riportarlo in primo piano o jobs per elencare i processi in background. Ctrl + L – Pulisce la finestra del terminale (equivalente a clear). Ctrl + S / Ctrl + Q – Ctrl + S sospende l’output, Ctrl + Q lo riprende.Utile per fermare temporaneamente la visualizzazione e analizzare un testo. Aggiungere o modificare scorciatoie In alcune distribuzioni, certe combinazioni potrebbero non funzionare o mancare. Ogni ambiente Linux ha una lista predefinita di scorciatoie, ma è possibile personalizzarle facilmente. Procedura: Premi Super + A per aprire il menu delle applicazioni. Cerca e apri Impostazioni. Vai su Dispositivi → Tastiera. Sulla destra vedrai l’elenco delle scorciatoie predefinite. Clicca su un comando per modificarlo o assegnare una nuova combinazione. Per aggiungere una scorciatoia personalizzata, clicca sul pulsante “+” in basso. Inserisci il nome, il comando da eseguire e la combinazione di tasti desiderata. Conclusione Abbiamo esaminato le principali scorciatoie di Linux che semplificano e velocizzano il flusso di lavoro quotidiano. Naturalmente, questa non è una lista completa: ogni distribuzione offre combinazioni aggiuntive per diverse funzionalità. Conoscere e usare queste scorciatoie renderà l’esperienza Linux più fluida, produttiva e piacevole, soprattutto nel terminale.
28 October 2025 · 6 min to read
Sistema: Linux

Come scaricare file con cURL

Il download di contenuti da server remoti è un’attività comune sia per gli amministratori che per gli sviluppatori. Sebbene esistano numerosi strumenti per questo compito, cURL si distingue per la sua flessibilità e semplicità. È un’utilità da riga di comando che supporta protocolli come HTTP, HTTPS, FTP e SFTP, rendendola fondamentale per l’automazione, la creazione di script e il trasferimento efficiente dei file. Puoi eseguire cURL direttamente sul tuo computer per scaricare file. Puoi anche integrarlo negli script per semplificare la gestione dei dati, riducendo così il lavoro manuale e gli errori. Questa guida mostra diversi modi per scaricare file con cURL. Seguendo questi esempi, imparerai a gestire i reindirizzamenti, rinominare i file e monitorare l’avanzamento dei download. Alla fine, sarai in grado di utilizzare cURL con sicurezza per le attività su server o ambienti cloud. Comando di base cURL per scaricare file Il comando curl funziona con più protocolli, ma viene utilizzato principalmente con HTTP e HTTPS per connettersi ai server web. All’occorrenza può anche interagire con server FTP o SFTP. Per impostazione predefinita, cURL recupera una risorsa da un URL specificato e la visualizza nel terminale (output standard). Questo è utile per visualizzare il contenuto di un file senza salvarlo, soprattutto se si tratta di un piccolo file di testo. Esempio: per visualizzare il contenuto di un file di testo ospitato su https://example.com/file.txt, esegui: curl https://example.com/file.txt Per documenti di testo brevi questo approccio va bene. Tuttavia, file di grandi dimensioni o binari possono riempire lo schermo di dati illeggibili, quindi di solito è preferibile salvarli. Salvare file remoti Spesso, l’obiettivo principale è salvare il file scaricato sul computer locale anziché visualizzarlo nel terminale. cURL semplifica questo con l’opzione -O (O maiuscola), che conserva il nome originale del file remoto. curl -O https://example.com/file.txt Questo scarica file.txt e lo salva nella directory corrente con lo stesso nome. Questo metodo è rapido e mantiene il nome esistente, utile se il nome del file ha un significato specifico. Scegliere un nome di file diverso A volte è importante rinominare il file scaricato per evitare conflitti o creare una convenzione di nomi chiara. In questo caso, usa l’opzione -o (o minuscola): curl -o miofile.txt https://example.com/file.txt Qui, cURL scarica il file remoto file.txt ma lo salva localmente come miofile.txt. Questo aiuta a mantenere i file organizzati e a evitare sovrascritture accidentali. È particolarmente utile negli script che richiedono nomi di file descrittivi. Seguire i reindirizzamenti Quando si richiede un file, i server possono istruire il client a passare a un altro URL. Comprendere e gestire i reindirizzamenti è fondamentale per completare correttamente i download. Perché i reindirizzamenti sono importanti I reindirizzamenti sono comunemente utilizzati per siti web riorganizzati, file spostati o mirror. Senza il supporto per i reindirizzamenti, cURL si ferma dopo aver ricevuto una risposta “spostato” e non otterrai il file. Usare -L o --location Per indicare a cURL di seguire una catena di reindirizzamenti fino alla destinazione finale, utilizza -L (o --location): curl -L -O https://example.com/redirected-file.jpg Questo consente a cURL di recuperare il file corretto anche se l’URL originale punta altrove. Se ometti -L, cURL mostrerà semplicemente il messaggio di reindirizzamento e terminerà, il che può essere un problema su siti con più reindirizzamenti. Scaricare più file cURL può anche gestire più download contemporaneamente, evitando di dover eseguire ripetutamente il comando. Utilizzare parentesi graffe e modelli Se i nomi dei file condividono un modello, le parentesi graffe {} consentono di specificare ciascun nome in modo conciso: curl -O https://example.com/files/{file1.jpg,file2.jpg,file3.jpg} cURL scarica ogni file in sequenza, rendendolo utile per i flussi di lavoro automatizzati. Usare intervalli Per una serie di file numerati o etichettati alfabeticamente, specifica un intervallo tra parentesi quadre: curl -O https://example.com/files/file[1-5].jpg cURL itera automaticamente tra i file file1.jpg e file5.jpg. È ideale per sequenze di file con nomi coerenti. Collegare più download Se hai URL diversi per ciascun file, puoi concatenarli: curl -O https://example1.com/file1.jpg -O https://example2.com/file2.jpg Questo approccio scarica file1.jpg dal primo sito e file2.jpg dal secondo senza dover eseguire più comandi. Limitazione della velocità e timeout In alcune situazioni, potresti voler controllare la velocità di download o evitare che cURL attenda troppo a lungo un server non reattivo. Controllo della larghezza di banda Per evitare di sovraccaricare la rete o simulare condizioni lente, limita la velocità di download con --limit-rate: curl --limit-rate 2M -O https://example.com/bigfile.zip 2M indica 2 megabyte al secondo. Puoi anche usare K per kilobyte o G per gigabyte. Timeout Se un server è troppo lento, puoi chiedere a cURL di interrompere l’operazione dopo un determinato periodo. L’opzione --max-time serve proprio a questo: curl --max-time 60 -O https://example.com/file.iso Qui, cURL si interrompe dopo 60 secondi, utile negli script che necessitano di un fallimento rapido. Modalità silenziosa e dettagliata cURL può adattare la sua uscita per mostrare informazioni minime o dettagli estesi. Download silenziosi Per attività automatiche o cron job in cui non hai bisogno della barra di avanzamento, includi -s (o --silent): curl -s -O https://example.com/file.jpg Questo nasconde il progresso e gli errori, utile per log più puliti. Tuttavia, è più difficile eseguire il debug se si verifica un errore silenzioso. Modalità dettagliata Al contrario, -v (o --verbose) mostra informazioni dettagliate sulle richieste e risposte: curl -v https://example.com L’output dettagliato è prezioso per risolvere problemi come certificati SSL non validi o reindirizzamenti errati. Autenticazione e sicurezza Alcuni download richiedono credenziali o una connessione sicura. Autenticazione HTTP/FTP Quando un server richiede un nome utente e una password, usa -u: curl -u username:password -O https://example.com/protected/file.jpg Inserire direttamente le credenziali può essere rischioso, poiché potrebbero apparire nei log o nei processi. Prendi in considerazione l’uso di variabili d’ambiente o file .netrc per una gestione più sicura. HTTPS e certificati Per impostazione predefinita, cURL verifica i certificati SSL. Se il certificato non è valido, cURL blocca il trasferimento. Puoi ignorare questo controllo con -k o --insecure, anche se ciò comporta rischi per la sicurezza. Quando possibile, utilizza un’autorità di certificazione affidabile per mantenere connessioni autenticate. Uso di un proxy In alcuni ambienti, il traffico deve passare attraverso un server proxy prima di raggiungere la destinazione. Scaricare tramite proxy Usa l’opzione -x o --proxy per specificare il proxy: curl -x http://proxy_host:proxy_port -O https://example.com/file.jpg Sostituisci proxy_host e proxy_port con i dati appropriati. cURL inoltra la richiesta al proxy, che poi recupera il file per tuo conto. Autenticazione proxy Se il proxy richiede credenziali, includile nell’URL: curl -x https://proxy.example.com:8080 -U mioutente:miapassword -O https://example.com/file.jpg Anche in questo caso, archiviare dati sensibili in testo normale è pericoloso. È meglio usare variabili d’ambiente o file di configurazione. Monitorare l’avanzamento del download Monitorare l’avanzamento del download è importante per file di grandi dimensioni o connessioni lente. Indicatore di avanzamento predefinito Per impostazione predefinita, cURL mostra un indicatore di avanzamento che include dimensione totale, velocità di trasferimento e tempo stimato di completamento. Ad esempio: % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed100  1256  100  1256    0     0   2243      0 --:--:-- --:--:-- --:--:--  2246 Questa visualizzazione ti aiuta a stimare quanto manca e se la velocità di trasferimento è adeguata. Barra di avanzamento compatta Se vuoi meno dettagli, aggiungi -#: curl -# -O https://example.com/largefile.iso Una barra più semplice mostra l’avanzamento complessivo in percentuale. È più leggibile ma non include statistiche dettagliate come la velocità attuale. Registrare l’avanzamento negli script Quando utilizzi cURL all’interno di script, potresti voler registrare i dati sull’avanzamento. Normalmente, cURL invia queste informazioni a stderr, quindi puoi reindirizzarle: curl -# -O https://example.com/largefile.iso 2>progress.log Qui, progress.log contiene gli aggiornamenti di stato che puoi analizzare o salvare per revisioni future. Conclusione cURL si distingue come uno strumento da riga di comando flessibile per scaricare file tramite diversi protocolli e ambienti. Che tu debba gestire reindirizzamenti complessi, rinominare file al volo o limitare la larghezza di banda, cURL offre tutte le opzioni necessarie. Padroneggiando i suoi principali parametri e modalità, potrai integrare cURL senza problemi nel tuo flusso di lavoro quotidiano per scripting, automazione e trasferimenti di file più efficienti.
20 October 2025 · 8 min to read

Hai domande,
commenti o dubbi?

I nostri professionisti sono disponibili per assisterti in ogni momento,
che tu abbia bisogno di aiuto o non sappia da dove iniziare.
Inviaci un'email
Hostman's Support