daemon-reload non è reload
Il 2 novembre 2026 systemctl(1) di systemd 262 dice che reload ricarica la configurazione del servizio, non la unit. Nell’esempio è httpd.conf, non apache.service. daemon-reload riesegue i generatori e ricostruisce le dipendenze.
In questa guida (5)
Il 2 novembre 2026 systemctl reload e systemctl daemon-reload non ricaricano la stessa cosa. Il manuale di systemd 262 lo scrive due volte, una per comando, e nell’esempio usa Apache: httpd.conf da una parte, il file apache.service dall’altra. Non ho lanciato i comandi.
In breve: ho letto systemctl(1), pagina «latest», intestazione «systemd 262». Il fermare un container è un altro gesto, nel pezzo su docker stop. Questa pagina è nel cluster Operatività.
reload non apre la unit
La voce reload PATTERN… chiede alle unit in riga di comando di ricaricare la propria configurazione. La nota dice che si ricarica la configurazione specifica del servizio, non il file di unit di systemd. Se si vuole che systemd ricarichi il file della unit, il comando indicato è daemon-reload. L’esempio è Apache: reload ricarica httpd.conf nel server web, non apache.service. La frase successiva è secca: questo comando non va confuso con daemon-reload.
daemon-reload non è un SIGHUP al servizio
Sotto «Manager State Commands», daemon-reload ricarica la configurazione del manager. Riesegue tutti i generatori, ricarica tutti i file di unit e ricostruisce l’intero albero delle dipendenze. Durante il reload, i socket su cui systemd è in ascolto per conto della configurazione utente restano raggiungibili. Anche qui la pagina dice di non confonderlo con reload.
daemon-reexec è un’altra riga. Serializza lo stato del manager, riesegue il processo e deserializza. La pagina lo giudica di poca utilità, salvo debug e aggiornamenti di pacchetto, e a volte lo descrive come un daemon-reload pesante. I socket, anche durante la riesecuzione, restano raggiungibili. Non è il reload di Apache.
restart non svuota tutto
restart PATTERN… ferma e poi avvia le unit indicate. Se non sono in esecuzione, vengono avviate. La nota avverte che il restart non libera per forza tutte le risorse prima del nuovo avvio. L’esempio è il deposito di file descriptor per servizio, FileDescriptorStoreMax= in systemd.service(5): resta intatto finché la unit ha un job in coda, e si pulisce solo quando la unit è del tutto ferma e non restano job. Per svuotarlo, la pagina chiede uno systemctl stop esplicito seguito da systemctl start, non il solo restart.
try-restart fa lo stesso solo se le unit sono in esecuzione. Se non lo sono, non fa nulla. reload-or-restart ricarica se la unit lo supporta, altrimenti ferma e riavvia. Se la unit non è ancora in esecuzione, la avvia. try-reload-or-restart ha la stessa scelta fra reload e restart, ma non fa nulla se la unit è ferma. Quella voce risulta aggiunta nella versione 229.
enqueue-marked risulta aggiunta nella versione 260. Mette in coda start, stop, restart o reload per le unit che hanno i marcatori «needs-*». Se una unit è marcata per il reload e non lo supporta, in coda va un restart. «needs-restart» e «needs-reload» usano la semantica di try-restart e try-reload: le unit inattive non partono. La pagina dice che questo è diverso da reload-or-restart senza --marked, che invece avvia le unit non ancora in esecuzione. Senza --no-block, systemctl aspetta la fine dei job.
| Comando, manuale systemd 262 | Cosa fa, sulla pagina |
|---|---|
| reload | Configurazione del servizio. Esempio: httpd.conf, non apache.service |
| daemon-reload | Generatori, tutti i file di unit, albero delle dipendenze. I socket restano aperti |
| daemon-reexec | Riesecuzione del manager. Descritto come daemon-reload pesante |
| restart | Stop e start. Se è ferma, la avvia. Non svuota per forza il file descriptor store |
| try-restart | Come restart, ma se la unit è ferma non fa nulla |
| reload-or-restart | Reload se c’è, altrimenti restart. Se è ferma, la avvia |
| try-reload-or-restart | Come sopra, ma se è ferma non fa nulla. Aggiunto nella 229 |
Errori da evitare
Dare
daemon-reloade credere di aver rilettohttpd.conf. Quella rilettura, nell’esempio della pagina, èreload.Dare
reloaddopo aver modificato solo la unit. La pagina, per il file di unit, indicadaemon-reload.Usare
restartper azzerare il deposito dei file descriptor. La pagina chiede stop e poi start.Aspettarsi che
try-restartaccenda un servizio spento. La pagina dice che non fa nulla.Trattare
reload-or-restarteenqueue-markedcome la stessa coda. Senza--marked, una unit ferma viene avviata. Con i marcatori needs-reload, una unit inattiva no.Scambiare
daemon-reexeccon il reload di Apache. Il primo riesegue il manager. Il secondo no.
In sintesi
Il 2 novembre 2026 il manuale tiene tre livelli: il file del servizio, la unit di systemd, il processo del manager. reload, daemon-reload e daemon-reexec ne toccano uno ciascuno. restart non è la somma dei tre, e non promette di svuotare il deposito dei descriptor. Non ho misurato i secondi di un reload su una macchina.
Foto di copertina: Jon Parise, «Server Room Terminals», Wikimedia Commons, CC BY-SA 2.0. Sono terminali accatastati in un angolo durante dei lavori. Non sono una unit di systemd e non sono httpd.conf.


