System

Abfragen von Laufzeit-Systeminformationen einschließlich Speicherverbrauch, Garbage-Collection-Statistiken, CPU-Details und Prozess-Metadaten.

Laden

local system = require("system")

Shutdown

Systemshutdown mit Exit-Code auslösen. Nützlich für Terminal-Apps; Aufruf aus laufenden Actors beendet das gesamte System:

local ok, err = system.exit(0)
Parameter Typ Beschreibung
code integer Exit-Code (0 = Erfolg), Standard ist 0

Gibt zurück: boolean, error

Module auflisten

Alle geladenen Lua-Module mit Metadaten abrufen:

local mods, err = system.modules()

Gibt zurück: table[], error

Jede Modul-Tabelle enthält:

Feld Typ Beschreibung
name string Modulname
description string Modulbeschreibung
class string[] Modul-Klassifizierungs-Tags

Speicherstatistiken

Detaillierte Speicherstatistiken abrufen:

local stats, err = system.memory.stats()

Gibt zurück: table, error

Stats-Tabelle enthält:

Feld Typ Beschreibung
alloc number Zugewiesene und verwendete Bytes
total_alloc number Kumulativ zugewiesene Bytes
sys number Vom System erhaltene Bytes
heap_alloc number Auf Heap zugewiesene Bytes
heap_sys number Für Heap vom System erhaltene Bytes
heap_idle number Bytes in ungenutzten Spans
heap_in_use number Bytes in genutzten Spans
heap_released number An OS freigegebene Bytes
heap_objects number Anzahl zugewiesener Heap-Objekte
stack_in_use number Vom Stack-Allocator verwendete Bytes
stack_sys number Für Stack vom System erhaltene Bytes
mspan_in_use number Bytes von mspan-Strukturen in Verwendung
mspan_sys number Für mspan vom System erhaltene Bytes
num_gc number Anzahl abgeschlossener GC-Zyklen
next_gc number Ziel-Heap-Größe für nächsten GC

Aktuelle Zuweisung

Aktuell zugewiesene Bytes abrufen:

local bytes, err = system.memory.allocated()

Gibt zurück: number, error

Heap-Objekte

Anzahl zugewiesener Heap-Objekte abrufen:

local count, err = system.memory.heap_objects()

Gibt zurück: number, error

Speicherlimit

Speicherlimit setzen (gibt vorherigen Wert zurück):

local prev, err = system.memory.set_limit(1024 * 1024 * 100)
Parameter Typ Beschreibung
limit integer Speicherlimit in Bytes, -1 für unbegrenzt

Gibt zurück: number, error

Aktuelles Speicherlimit abrufen:

local limit, err = system.memory.get_limit()

Gibt zurück: number, error

GC erzwingen

Garbage Collection erzwingen:

local ok, err = system.gc.collect()

Gibt zurück: boolean, error

GC-Zielprozentsatz

GC-Zielprozentsatz setzen (gibt vorherigen Wert zurück). Ein Wert von 100 bedeutet, dass GC ausgelöst wird, wenn sich der Heap verdoppelt:

local prev, err = system.gc.set_percent(200)
Parameter Typ Beschreibung
percent integer GC-Zielprozentsatz

Gibt zurück: number, error

Aktuellen GC-Zielprozentsatz abrufen:

local percent, err = system.gc.get_percent()

Gibt zurück: number, error

Goroutine-Anzahl

Anzahl aktiver Goroutines abrufen:

local count, err = system.runtime.goroutines()

Gibt zurück: number, error

GOMAXPROCS

GOMAXPROCS-Wert abrufen oder setzen:

-- Aktuellen Wert abrufen
local current, err = system.runtime.max_procs()

-- Neuen Wert setzen
local prev, err = system.runtime.max_procs(4)
Parameter Typ Beschreibung
n integer Falls angegeben, setzt GOMAXPROCS (muss > 0 sein)

Gibt zurück: number, error

CPU-Anzahl

Anzahl logischer CPUs abrufen:

local cpus, err = system.runtime.cpu_count()

Gibt zurück: number, error

Prozess-ID

Aktuelle Prozess-ID abrufen:

local pid, err = system.process.pid()

Gibt zurück: number, error

Hostname

System-Hostname abrufen:

local hostname, err = system.process.hostname()

Gibt zurück: string, error

Service-Status

Status für einen spezifischen überwachten Service abrufen:

local state, err = system.supervisor.state("namespace:service")
Parameter Typ Beschreibung
service_id string Service-ID (z.B. "namespace:service")

Gibt zurück: table, error

Status-Tabelle enthält:

Feld Typ Beschreibung
id string Service-ID
status string Aktueller Status
desired string Gewünschter Status
retry_count number Anzahl der Wiederholungen
last_update number Letzter Aktualisierungszeitstempel (Nanosekunden)
started_at number Start-Zeitstempel (Nanosekunden)
details string Optionale Details (formatiert)

Alle Service-Status

Status für alle überwachten Services abrufen:

local states, err = system.supervisor.states()

Gibt zurück: table[], error

Jede Status-Tabelle hat das gleiche Format wie system.supervisor.state().

Berechtigungen

Systemoperationen unterliegen der Sicherheitsrichtlinienauswertung.

Aktion Ressource Beschreibung
system.read memory Speicherstatistiken lesen
system.read memory_limit Speicherlimit lesen
system.control memory_limit Speicherlimit setzen
system.read gc_percent GC-Prozentsatz lesen
system.gc gc Garbage Collection erzwingen
system.gc gc_percent GC-Prozentsatz setzen
system.read goroutines Goroutine-Anzahl lesen
system.read gomaxprocs GOMAXPROCS lesen
system.control gomaxprocs GOMAXPROCS setzen
system.read cpu CPU-Anzahl lesen
system.read pid Prozess-ID lesen
system.read hostname Hostname lesen
system.read modules Geladene Module auflisten
system.read supervisor Supervisor-Status lesen
system.exit - System-Shutdown auslösen

Fehler

Bedingung Art Wiederholbar
Berechtigung verweigert errors.PERMISSION_DENIED nein
Ungültiges Argument errors.INVALID nein
Fehlendes erforderliches Argument errors.INVALID nein
Code-Manager nicht verfügbar errors.INTERNAL nein
Service-Info nicht verfügbar errors.INTERNAL nein
OS-Fehler beim Hostname abrufen errors.INTERNAL nein

Siehe Fehlerbehandlung für die Arbeit mit Fehlern.