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.