Vale ist eine schnelle, sichere Systemprogrammiersprache von Evan Ovadia. Ihre Besonderheit ist eine neuartige Speichersicherheits-Technik namens Generational References: Jede Referenz merkt sich die „Generation“ des Objekts, auf das sie zeigt. Dadurch wird Speichersicherheit ohne Garbage Collector, ohne Reference Counting und ohne Rust-artigen Borrow Checker erreicht — kombiniert mit Single Ownership lässt sich damit schneller, sicherer Code schreiben. Vale wird Ahead-of-Time über LLVM kompiliert.
Erste Schritte
// vale --output=hello
import stdlib;
exported func main() {
println("Hello, Vale!");
}
Wichtige Konzepte und Befehle
- func deklariert Funktionen; exported macht sie von außen sichtbar.
- Generational References sorgen dafür, dass verwaiste Referenzen erkannt werden, bevor sie benutzt werden.
- Single Ownership erlaubt Speicherfreigabe ohne Garbage Collection; Regions bündeln Objekte für noch effizientere Freigabe.
- Immutable und Fearless FFI erlauben sichere Aufrufe von C-Bibliotheken.
- Der Compiler heißt
vale;vale buildkompiliert,vale testführt Tests aus.
Einordnung
Vale gehört zu den Sprachen, die die Speichersicherheits-Diskussion nach Rust weiterführen: Während Rust mit dem Borrow Checker Sicherheit zur Compile-Zeit erzwingt, verfolgt Vale mit Generational References und Regions einen anderen Weg, der als einfacher zu lernen gilt. Damit ist Vale vor allem für sicherheitskritische, performance-sensitive Anwendungen interessant.
Verwandte Grundlagen: Rust-Befehle, C und C++, Carbon-Befehle, C3-Befehle, Zig-Befehle.
ntpq ist das Standard-Abfragewerkzeug für den klassischen NTP-Daemon ntpd und andere NTP-Server nach RFC 5905. Mit ihm prüft man, mit welchen Servern der Rechner synchronisiert, wie groß die Abweichung (Offset) ist und ob die Verbindungen stabil ankommen — die Diagnose schlechthin bei Zeitproblemen.
Die Peer-Liste anzeigen
Der wichtigste Aufruf ist ntpq -p (p für peers). Er listet alle konfigurierten Server und Peers mit ihrem Zustand:
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ntp1.example.com .PSC. 1 u 32 64 377 8.213 0.312 0.102
- remote: Hostname oder IP des Zeitservers; ein
*davor kennzeichnet den aktuell synchronisierenden Server,+einen akzeptierten Kandidaten,-eine verworfene Quelle undxeine als falsch erkannte. - refid: Referenz des Servers (.PSC. steht für eine GPS- oder Funkuhren-Quelle).
- st: Stratum — die Entfernung des Servers zur Referenzuhr (1 = direkt an der Quelle).
- when / poll / reach: Zeit seit der letzten Antwort, Poll-Intervall in Sekunden und Erreichbarkeits-Bitmaske (377 oktal = alle letzten acht Anfragen beantwortet).
- delay / offset / jitter: Netzwerk-Laufzeit, Zeitabweichung und deren Schwankung in Millisekunden.
Weitere ntpq-Befehle
ntpq -c as: zeigt die Assoziations-IDs aller konfigurierten Server und Peers.ntpq -c rv: gibt System-Variablen des lokalen NTP-Dienstes aus — etwa Version, Stratum, Offset und Root-Delay.ntpq -c peers: dieselbe Liste wie-p, im interaktiven Modus auch alspeerseingebbar.ntpq ntp.example.com: fragt direkt einen entfernten NTP-Server ab, statt des lokalen Dienstes.ntpq -c rv <associd>: zeigt Detailvariablen einer einzelnen Assoziation.
Ohne Argumente startet ntpq interaktiv mit der Eingabeaufforderung ntpq>; ? listet alle Kommandos.
Praxis-Tipps
- Bleibt
reachbei 0 oder steigt deroffsetdauerhaft, stimmt die Serverwahl oder die Netzwerkverbindung nicht. - ntpq gehört zum klassischen
ntp-Paket. Nutzt der Rechner stattdessen chronyc-Befehle (chrony) oder die systemd-Zeitverwaltung mit timedatectl-Befehle, ist ntpq nur für kompatible ntpd-Server relevant. - Bei Hardware-Uhren im Netz (GPS, DCF77) zeigt
refidmit .GPS. oder .DCFa. die jeweilige Referenzquelle an.
Verwandte Grundlagen: NTP, date-Befehle.
timedatectl ist das zentrale Werkzeug der systemd-Welt, um Datum, Uhrzeit, Zeitzone und automatische Zeitsynchronisation zu verwalten. Es ersetzt die klassischen Einzelbefehle date, tzselect und das manuelle Editieren von /etc/timezone durch eine einheitliche Schnittstelle — die eigentliche Synchronisation übernimmt systemd-timesyncd.
Status anzeigen
timedatectl
Local time: Mi 2026-09-07 21:15:00 CEST
Universal time: Mi 2026-09-07 19:15:00 UTC
RTC time: Mi 2026-09-07 19:15:00
Time zone: Europe/Berlin (CEST, +0200)
System clock synchronized: yes
NTP service: active
Die Ausgabe zeigt Lokalzeit, UTC, die Hardware-Uhr (RTC), die eingestellte Zeitzone und ob der NTP-Dienst aktiv ist.
Wichtige timedatectl-Befehle
timedatectl list-timezones: listet alle verfügbaren Zeitzonen (zum BeispielEurope/Berlin).sudo timedatectl set-timezone Europe/Berlin: setzt die Zeitzone dauerhaft; Änderungen an der RTC oder an/etc/localtimeübernimmt das Werkzeug selbst.sudo timedatectl set-time "2026-09-07 21:30:00": stellt Datum und Uhrzeit direkt — funktioniert nur, wenn die NTP-Synchronisation ausgeschaltet ist.sudo timedatectl set-ntp true: aktiviert die automatische Zeitsynchronisation übersystemd-timesyncd(beziehungsweise den angebundenen NTP-Client der Distribution);set-ntp falseschaltet sie aus.sudo timedatectl set-local-rtc true: legt fest, ob die Hardware-Uhr in Lokalzeit statt UTC läuft — für Windows-Dual-Boot üblich, für Linux-Server meist falsch.timedatectl status: entspricht dem Aufruf ohne Argumente.
Praxis-Tipps
- Meldet
set-ntp„NTP not supported“, ist kein Zeitdienst installiert — dann hilft ein NTP-Daemon wie chrony, der über chronyc-Befehle gesteuert wird. - systemd-timesyncd ist ein schlanker Client ohne Server-Funktion; wer das eigene Netz mit Zeit versorgen will, setzt chrony oder ntpd ein und prüft die Server mit ntpq-Befehle.
- Für reine Datums-/Zeitausgaben im Terminal ist weiterhin
datedas Werkzeug der Wahl — siehe date-Befehle.
Verwandte Grundlagen: NTP, systemctl und journalctl.
chronyc ist das Kommandozeilen-Werkzeug zu chrony, der modernen NTP-Implementierung für Linux (RFC 5905). Während der Daemon chronyd die Uhr im Hintergrund synchronisiert, fragt man mit chronyc den Zustand ab und steuert den Dienst — von der Anzeige der Zeitquellen bis zum sofortigen Springen der Uhr.
Grundlagen
chronyc setzt einen laufenden chronyd voraus. Der Dienst lässt sich typisch mit systemd starten:
sudo systemctl enable --now chronyd
Die Konfiguration steht in /etc/chrony/chrony.conf. chronyc arbeitet entweder im Einzelbefehls-Modus (chronyc <befehl>) oder interaktiv — nach chronyc erscheint die Eingabeaufforderung chronyc>, in der man mehrere Befehle hintereinander eingibt.
Wichtige chronyc-Befehle
chronyc sources: zeigt die aktuellen Zeitquellen mit Stratum, Poll-Intervall, Reachability (Reach) und letzter Antwort (LastRx). Mit-verscheinen zusätzlich die Quellen-Modi:^*bedeutet „aktuell synchronisierte Quelle“,^+einen akzeptierten Kandidaten,^-eine verworfene Quelle.chronyc tracking: zeigt den Synchronisationsstatus der eigenen Uhr — Referenzquelle, Stratum, Offset (Abweichung), Drift und den Leap-Status.chronyc sourcestats -v: liefert Langzeit-Statistiken je Quelle und hilft, instabile Server zu erkennen.chronyc makestep: lässt die Uhr sofort springen, statt sie langsam nachzuziehen (Slewing) — nützlich nach langem Ausfall oder in virtuellen Maschinen.chronyc ntpdata: zeigt detaillierte Informationen zu einer einzelnen NTP-Quelle.chronyc activity: fasst zusammen, wie viele Quellen online, offline oder als Server aktiv sind.chronyc clients: listet im Server-Betrieb die aktiven Clients, die den eigenen chronyd abfragen.
Praxis-Tipps
- Nach einer Konfigurationsänderung genügt
sudo systemctl restart chronyd; viele chronyc-Abfragen kommen ohne Root-Rechte aus. - chrony gilt dank schnellerer Erstsynchronisation, besserer Drift-Kompensation und Unterstützung für Network Time Security (NTS) als Nachfolger des klassischen ntpd.
- Wer die systemd-Seite der Zeitverwaltung anpassen möchte, nutzt timedatectl-Befehle; für die klassische ntpd-Welt zuständig ist ntpq-Befehle.
Verwandte Grundlagen: NTP, date-Befehle.
ipset verwaltet Mengen von IP-Adressen, Netzen oder Ports im Kernel. Firewall-Regeln von iptables, nftables und firewalld können auf diese Mengen verweisen, statt jede Adresse einzeln aufzulisten — das macht Sperrlisten und Blocklisten schnell und übersichtlich.
Menge anlegen und befüllen
sudo ipset create blockliste hash:ip
sudo ipset add blockliste 203.0.113.5
sudo ipset add blockliste 198.51.100.0/24
sudo ipset test blockliste 203.0.113.5
sudo ipset list blockliste
Der Typ hash:ip speichert einzelne Adressen, hash:net auch ganze Netze. Mit timeout 300 laufen Einträge automatisch ab — praktisch für temporäre Sperren.
In Firewall-Regeln verwenden
sudo iptables -I INPUT -m set --match-set blockliste src -j DROP
sudo nft add rule inet filter input ip saddr @blockliste drop
Speichern und Wiederherstellen
sudo ipset save > /etc/ipset.rules
sudo ipset restore < /etc/ipset.rules
sudo ipset destroy blockliste
Automatische Sperren setzt fail2ban: Es kombiniert ipset-Mengen mit Loganalyse und bannt IP-Adressen nach fehlgeschlagenen Anmeldeversuchen.
Verwandte Grundlagen: iptables-Befehle, nftables-Befehle und firewalld-Befehle.