PROCPS_MISC(3) Library Functions Manual PROCPS_MISC(3)

procps_misc – API für diverse Informationen im /proc-Dateisystem

ÜBERSICHT

#include <libproc2/misc.h>
Platform Particulars
long         procps_cpu_count (void);
long         procps_hertz_get (void);
unsigned int procps_pid_length (void);
int          procps_linux_version (void);
Runtime Particulars
int   procps_container_uptime (double *uptime_secs);
int   procps_loadavg (double *av1, double *av5, double *av15);
int   procps_uptime (double *uptime_secs, double *idle_secs);
int   procps_uptime_snprint ( char *restrict str, size_t size, double uptime_secs, const int pretty);
char *procps_uptime_sprint (void);
char *procps_uptime_sprint_short (void);
int   procps_users (void);
Namespace Particulars
int         procps_ns_get_id (const char *name);
const char *procps_ns_get_name (int id);
int         procps_ns_read_pid (int pid, struct procps_ns *nsp);
Mask Name Resolving
int procps_sigmask_names (char *const str, size_t size , const char *sigmask);
int procps_capmask_names (char *const str, size_t size,  const char *capmask);
Linken Sie mit der Option -lproc2.

procps_cpu_count() gibt die Anzahl der aktuell online befindlichen CPUs zurück, entweder als sysconf(_SC_NPROCESSORS_ONLY) oder als angenommenes 1.

procps_hertz_get() gibt die Anzahl der Taktzyklen pro Sekunde alssysconf(_SC_CLK_TCK) oder ein angenommenes 100 zurück. Die Division der Taktzyklen durch diesenWert ergibt die Sekunden.

procps_pid_length() gibt die maximale Zeichenkettenlänge für eine PID auf dem System zurück. Wenn beispielsweise der größte mögliche PID-Wert 123 wäre, wäre die Länge 3. Falls die Datei /proc/sys/kernel/pid_max nicht lesbar ist, wird der Wert 5 angenommen.

procps_linux_version() gibt die aktuelle Linux-Version als kodierte Ganzzahl zurück. Auf Nicht-Linux-Systemen mit einem emulierten proc-Dateisystem gibt diese Funktion stattdessen die Version der Linux-Emulation zurück. Die Version besteht aus drei positiven Ganzzahlen, die die Haupt-, Neben- und Patch-Version darstellen. Die folgenden Makros dienen der Kodierung einer gegebenen Linux-Version oder der Trennung der Komponenten der aktuellen Version.

LINUX_VERSION( Haupt , Neben , Patch )

LINUX_VERSION_MAJOR( Version )

LINUX_VERSION_MINOR( Version )

LINUX_VERSION_PATCH( Version )

procps_loadavg() ruft die durchschnittliche Systemlast ab und speichert die 1-, 5- und 15-Minuten-Durchschnittswerte an den durch einen beliebigen Zeiger, der nicht NULL ist, angegebenen Speicherorten.

procps_container_uptime() gibt die Laufzeit eines Containers an der durch den Zeiger angegebenen Adresse zurück, sofern dieser nicht NULL ist. Diese wird aktuell durch die verstrichene Zeit von Prozess-ID 1 bestimmt, die mit folgendem Befehl angegeben werden kann:


$ ps -o etimes 1
ELAPSED
12345

In einem Container gibt es kein Konzept von Leerlaufzeit, daher hat procps_container_uptime() diesen Parameter nicht.

procps_uptime() gibt die Betriebszeit und/oder die Leerlaufzeit in Sekunden an den durch einen beliebigen Zeiger (nicht NULL) angegebenen Speicherorten zurück. Die Varianten von sprint geben eine lesbare Zeichenkette in einem von zwei Formaten zurück.

HH:MM:SS up HH:MM, # users, load average: 1, 5, 15 MM averages

up HH, MM

procps_uptime_snprint() verwendet den angegebenen Puffer str der Länge size, um die Betriebszeitzeichenkette anstelle eines statisch zugewiesenen Puffers zu füllen. Die Funktion benötigt den Wert uptime_secs, der von procps_uptime() oder procps_container_uptime() abgerufen werden kann, sowie den Schalter pretty, das festlegt, ob die Ausgabe standardmäßig oder formatiert/kurz ist.

procps_users() gibt die Anzahl der Benutzer im System zurück. Dieser Wert stammt von sd_get_sessions(3) und wird durch Zählen der Sitzungen der Klassen user, user-early und user-incomplete oder durch Aufzählung mit getutent(3) ermittelt.

procps_ns_get_id() gibt die ganzzahlige ID (enum namespace_type) des Namensraums für den gegebenen Namensraum name zurück.

procps_ns_get_name() gibt den Namen des Namensraums für die gegebeneid (enum namespace_type) zurück.

procps_ns_read_pid() gibt die Inodes für die Namensräume des angegebenen Prozesses in der procps_ns-Struktur zurück, auf die nsp zeigt. Diese Inodes erscheinen in der durch den Enumerationstyp namespace_type festgelegten Reihenfolge.

enum namespace_type {
    PROCPS_NS_CGROUP,
    PROCPS_NS_IPC,
    PROCPS_NS_MNT,
    PROCPS_NS_NET,
    PROCPS_NS_PID,
    PROCPS_NS_TIME,
    PROCPS_NS_USER,
    PROCPS_NS_UTS
};

procps_sigmask_names() füllt str mit einer lesbaren Zeichenkette von bis zu size Bytes der in der hexadezimalen Signalmaske sigmask festgelegten Signale (siehe signal(7)). Falls die Liste der Signale size Bytes überschreitet, wird die Zeichenkette abgeschnitten und mit einem »+« abgeschlossen. Es obliegt dem aufrufenden Programm, sicherzustellen, dass str korrekt mit mindestens size Bytes zugewiesen wird.

procps_capmask_names() füllt str mit einer lesbaren Zeichenkette von bis zu size Bytes der in der hexadezimalen Capabilities-Maske capmask festgelegten Fähigkeiten (siehe capabilities(7)).Wenn die Liste der Capabilities size Bytes überschreitet, wird die Zeichenkette abgeschnitten und mit einem »+« abgeschlossen. Es obliegt dem aufrufenden Programm, sicherzustellen, dass str korrekt mit mindestens size Bytes zugewiesen wird.

Für einen Prozess ohne bzw. mit allen Capabilities lautet die Zeichenkette entsprechend »-« bzw. »full«.

Funktionen, die ein ‘int’ oder ‘long’ zurückgeben

Ein Fehler wird durch eine negative Zahl angezeigt, die stets der Kehrwert eines bekannten errno.h-Wertes ist.

Funktionen, die ein ‘address’ zurückgeben

Ein Fehler wird durch einen NULL-Rückgabezeiger angezeigt, wobei der Grund im formalen errno-Wert zu finden ist.

/proc/loadavg
Die Rohwerte für die durchschnittliche Last.
/proc/sys/kernel/osrelease
Enthält die Release-Version des Linux-Kernels oder des proc-Dateisystems.
/proc/sys/kernel/pid_max
Enthält den Wert, bei dem die PIDs umlaufen, der um eins größer ist als der maximale PID-Wert.
/proc/uptime
Die Rohwerte für Systembetriebszeit und Leerlaufzeit.
/proc/PID/ns
enthält die Menge der Namensräume für eine bestimmte PID.

procps(3), procps_pids(3), getutent(3), sd_get_sessions(3), proc(5), capabilities(7), signal(7).

6. Juli 2024 procps-ng