# Système — AlmaLinux 9

Commandes générales applicables sur storage-01 et gpu-01.

---

## Services systemd

```bash
# Statut d'un service
sudo systemctl status <service>

# Démarrer / arrêter / redémarrer
sudo systemctl start <service>
sudo systemctl stop <service>
sudo systemctl restart <service>
sudo systemctl reload <service>   # rechargement config sans coupure

# Activer / désactiver au démarrage
sudo systemctl enable <service>
sudo systemctl disable <service>

# Lister tous les services actifs
sudo systemctl list-units --type=service --state=running
```

### Services clés par machine

| Machine | Service | Rôle |
|---|---|---|
| storage-01 | `nftables` | Firewall + NAT masquerade cluster → WAN |
| storage-01 | `dnsmasq` | DNS local lab.local |
| storage-01 | `chronyd` | NTP |
| storage-01 | `sshd` | SSH |
| storage-01 | `hermes-agent` | Agent IA (gateway + cron) |
| gpu-01 | `chronyd` | NTP |
| gpu-01 | `sshd` | SSH |
| gpu-01 | `llama-server` | Inférence GPU — Qwen3-8B via ROCm 7.x (port 1234) |
| gpu-01 | `llama-embed` | Embeddings nomic-embed-text CPU (port 1238, dim 768) |
| gpu-01 | `llama-embed-heartbeat` | Sonde de vivacité du slot embed :1238 |

---

## Logs

```bash
# Logs d'un service en temps réel
sudo journalctl -u <service> -f

# Logs depuis X minutes
sudo journalctl -u <service> --since '30 minutes ago'

# Logs kernel (erreurs matériel, OOM killer...)
sudo journalctl -k

# Logs du démarrage
sudo journalctl -b
```

---

## Ressources système

```bash
# CPU / RAM / swap
free -h
top
htop   # plus lisible (installé via EPEL)

# Disques
df -h
lsblk

# Processus gourmands
ps aux --sort=-%mem | head -10
ps aux --sort=-%cpu | head -10
```

---

## Réseau (NetworkManager)

```bash
# Lister les connexions
nmcli con show

# Détails d'une interface (IP, DNS, gateway)
nmcli dev show enp4s0

# Modifier le DNS d'une interface
sudo nmcli con mod enp4s0 ipv4.dns '192.168.10.1'
sudo nmcli con up enp4s0

# Voir le resolv.conf généré
cat /etc/resolv.conf
```

---

## Mises à jour

```bash
# Voir les mises à jour disponibles
sudo dnf check-update

# Appliquer les mises à jour via Ansible (recommandé — reboot automatique si nouveau kernel)
cd /mnt/nvme0n1/nvme0n1p3/Projets/lab/ansible
../.venv/bin/ansible-playbook -i inventory.yml playbooks/site.yml --tags update

# Manuellement sur une machine
sudo dnf update -y
```

> **Attention post-reboot RAID5** : vérifier que dnsmasq est démarré
> (`systemctl status dnsmasq`). Si `failed`, voir [infra/dnsmasq.md](../infra/dnsmasq.md).
> Les `.pyc` Python peuvent être corrompus sur reboot non-propre —
> symptôme : `bad marshal data` dans les logs d'une app Python.

---

## Infos système rapides

```bash
# Version OS
cat /etc/os-release

# Hostname
hostname

# Uptime
uptime

# Infos CPU
lscpu | grep -E "Model name|Socket|Core|Thread"

# RAM totale
free -h | head -2
```
