# Gestione dei log con systemd-journald

## 1. Introduzione

`systemd-journald` è il servizio responsabile della raccolta e gestione dei log di sistema nei sistemi Linux basati su `systemd`.

Con il tempo, i log possono occupare molto spazio su disco, specialmente su server o VPS che rimangono attivi a lungo. Questa guida mostra come:

- verificare lo spazio occupato dai log;
- ruotare i log correnti;
- eliminare i log vecchi;
- configurare limiti permanenti.

---

## 2. Verificare lo spazio occupato dai log

Per vedere quanto spazio stanno occupando i log di `journald`:

```bash
journalctl --disk-usage
```

### Esempio di output

```text
Archived and active journals take up 1.8G in the file system.
```

---

## 3. Ruotare i log

Prima di eliminare i log vecchi è consigliato forzare la rotazione dei file correnti.

```bash
sudo journalctl --rotate
```

Questo comando crea nuovi file journal e archivia quelli attualmente in uso.

---

## 4. Pulire i log

### 4.1 Eliminare i log in base alla dimensione

Mantieni ad esempio solo 200 MB di log:

```bash
sudo journalctl --vacuum-size=200M
```

Puoi usare anche:

- `50M`
- `1G`
- `2G`

---

### 4.2 Eliminare i log più vecchi di un certo periodo

Mantieni solo gli ultimi 7 giorni:

```bash
sudo journalctl --vacuum-time=7d
```

Altri esempi:

```bash
sudo journalctl --vacuum-time=12h
sudo journalctl --vacuum-time=30d
sudo journalctl --vacuum-time=1month
```

---

### 4.3 Limitare il numero di file journal

Mantieni solo 5 file journal archiviati:

```bash
sudo journalctl --vacuum-files=5
```

---

## 5. Pulizia rapida con un comando

Ruota i log e mantieni solo 100 MB:

```bash
sudo journalctl --rotate && sudo journalctl --vacuum-size=100M
```

Oppure conserva solo gli ultimi 3 giorni:

```bash
sudo journalctl --rotate && sudo journalctl --vacuum-time=3d
```

---

## 6. Configurazione permanente

Per impostare limiti automatici modifica il file:

```bash
sudo nano /etc/systemd/journald.conf
```

Esempio di configurazione:

```ini
[Journal]
SystemMaxUse=500M
SystemKeepFree=100M
SystemMaxFileSize=50M
SystemMaxFiles=10
MaxRetentionSec=2week
```

### Significato dei parametri

| Parametro | Descrizione |
|---|---|
| `SystemMaxUse` | Spazio massimo totale usato dai log |
| `SystemKeepFree` | Spazio libero minimo da lasciare sul disco |
| `SystemMaxFileSize` | Dimensione massima di ogni file journal |
| `SystemMaxFiles` | Numero massimo di file journal |
| `MaxRetentionSec` | Tempo massimo di conservazione |

Dopo la modifica riavvia il servizio:

```bash
sudo systemctl restart systemd-journald
```

---

## 7. Note importanti

- I comandi di pulizia eliminano definitivamente i log vecchi.
- È consigliato mantenere almeno alcuni giorni di log per troubleshooting e audit.
- La rotazione (`--rotate`) non elimina nulla: prepara solo i file correnti all'archiviazione.
- Alcune distribuzioni usano storage volatile (`/run/log/journal`) invece di storage persistente (`/var/log/journal`).

Per verificare dove vengono salvati i log:

```bash
ls -ld /var/log/journal
ls -ld /run/log/journal
```

---

**Suggerimento:** su server piccoli o VPS con poco spazio disco, una combinazione comune è:

```ini
SystemMaxUse=200M
MaxRetentionSec=7day
```