Documentation ¶
Index ¶
- func GetPIDs() ([]string, error)
- func GetPIDsFromCgroup(pid string) ([]string, error)
- func ParseAttrCurrent(pid string) (string, error)
- func ParseCmdLine(pid string) ([]string, error)
- func ParsePIDNamespace(pid string) (string, error)
- func ParseUserNamespace(pid string) (string, error)
- func ReadMappings(path string) ([]idtools.IDMap, error)
- type Stat
- type Status
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetPIDsFromCgroup ¶
GetPIDsFromCgroup returns a strings slice of all pids listed in pid's pids cgroup. It automatically detects if we're running in unified mode or not.
func ParseAttrCurrent ¶
ParseAttrCurrent returns the contents of /proc/$pid/attr/current of "?" if labeling is not supported on the host.
func ParseCmdLine ¶
ParseCmdLine parses a /proc/$pid/cmdline file and returns a string slice.
func ParsePIDNamespace ¶
ParsePIDNamespace returns the content of /proc/$pid/ns/pid.
func ParseUserNamespace ¶
ParseUserNamespace returns the content of /proc/$pid/ns/user.
Types ¶
type Stat ¶
type Stat struct { // (1) The process ID Pid string // (2) The filename of the executable, in parentheses. This is visible // whether or not the executable is swapped out. Comm string // (3) The process state (e.g., running, sleeping, zombie, dead). // Refer to proc(5) for further details. State string // (4) The PID of the parent of this process. Ppid string // (5) The process group ID of the process. Pgrp string // (6) The session ID of the process. Session string // (7) The controlling terminal of the process. (The minor device // number is contained in the combination of bits 31 to 20 and 7 to 0; // the major device number is in bits 15 to 8.) TtyNr string // (8) The ID of the foreground process group of the controlling // terminal of the process. Tpgid string // (9) The kernel flags word of the process. For bit meanings, see the // PF_* defines in the Linux kernel source file // include/linux/sched.h. Details depend on the kernel version. Flags string // (10) The number of minor faults the process has made which have not // required loading a memory page from disk. Minflt string // (11) The number of minor faults that the process's waited-for // children have made. Cminflt string // (12) The number of major faults the process has made which have // required loading a memory page from disk. Majflt string // (13) The number of major faults that the process's waited-for // children have made. Cmajflt string // (14) Amount of time that this process has been scheduled in user // mode, measured in clock ticks (divide by // sysconf(_SC_CLK_TCK)). This includes guest time, guest_time // (time spent running a virtual CPU, see below), so that applications // that are not aware of the guest time field do not lose that time // from their calculations. Utime string // (15) Amount of time that this process has been scheduled in kernel // mode, measured in clock ticks (divide by sysconf(_SC_CLK_TCK)). Stime string // (16) Amount of time that this process's waited-for children have // been scheduled in user mode, measured in clock ticks (divide by // sysconf(_SC_CLK_TCK)). (See also times(2).) This includes guest // time, cguest_time (time spent running a virtual CPU, see below). Cutime string // (17) Amount of time that this process's waited-for children have // been scheduled in kernel mode, measured in clock ticks (divide by // sysconf(_SC_CLK_TCK)). Cstime string // (18) (Explanation for Linux 2.6+) For processes running a real-time // scheduling policy (policy below; see sched_setscheduler(2)), this is // the negated scheduling pri- ority, minus one; that is, a number // in the range -2 to -100, corresponding to real-time priorities 1 to // 99. For processes running under a non-real-time scheduling // policy, this is the raw nice value (setpriority(2)) as represented // in the kernel. The kernel stores nice values as numbers in the // range 0 (high) to 39 (low), corresponding to the user-visible nice // range of -20 to 19. Priority string // (19) The nice value (see setpriority(2)), a value in the range 19 // (low priority) to -20 (high priority). Nice string // (20) Number of threads in this process (since Linux 2.6). Before // kernel 2.6, this field was hard coded to 0 as a placeholder for an // earlier removed field. NumThreads string // (21) The time in jiffies before the next SIGALRM is sent to the // process due to an interval timer. Since kernel 2.6.17, this // field is no longer maintained, and is hard coded as 0. Itrealvalue string // (22) The time the process started after system boot. In kernels // before Linux 2.6, this value was expressed in jiffies. Since // Linux 2.6, the value is expressed in clock ticks (divide by // sysconf(_SC_CLK_TCK)). Starttime string // (23) Virtual memory size in bytes. Vsize string }
Stat is a direct translation of a `/proc/[pid]/stat` file as described in the proc(5) manpage. Please note that it is not a full translation as not all fields are in the scope of this library and higher indices are Kernel-version dependent.
type Status ¶
type Status struct { // Name: Command run by this process. Name string // Umask: Process umask, expressed in octal with a leading zero; see // umask(2). (Since Linux 4.7.) Umask string // State: Current state of the process. One of "R (running)", "S // (sleeping)", "D (disk sleep)", "T (stopped)", "T (tracing stop)", "Z // (zombie)", or "X (dead)". State string // Tgid: Thread group ID (i.e., Process ID). Tgid string // Ngid: NUMA group ID (0 if none; since Linux 3.13). Ngid string // Pid: Thread ID (see gettid(2)). Pid string // PPid: PID of parent process. PPid string // TracerPid: PID of process tracing this process (0 if not being traced). TracerPid string // Uids: Real, effective, saved set, and filesystem. Uids []string // Gids: Real, effective, saved set, and filesystem. Gids []string // FDSize: Number of file descriptor slots currently allocated. FdSize string // Groups: Supplementary group list. Groups []string // NStgid : Thread group ID (i.e., PID) in each of the PID namespaces // of which [pid] is a member. The leftmost entry shows the value // with respect to the PID namespace of the reading process, followed // by the value in successively nested inner namespaces. (Since Linux // 4.1.) NStgid string // NSpid: Thread ID in each of the PID namespaces of which [pid] is a // member. The fields are ordered as for NStgid. (Since Linux 4.1.) NSpid []string // NSpgid: Process group ID in each of the PID namespaces of which // [pid] is a member. The fields are ordered as for NStgid. (Since // Linux 4.1.) NSpgid string // NSsid: descendant namespace session ID hierarchy Session ID in // each of the PID names- paces of which [pid] is a member. The fields // are ordered as for NStgid. (Since Linux 4.1.) NSsid string // VMPeak: Peak virtual memory size. VMPeak string // VMSize: Virtual memory size. VMSize string // VMLck: Locked memory size (see mlock(3)). VMLCK string // VMPin: Pinned memory size (since Linux 3.2). These are pages // that can't be moved because something needs to directly access // physical memory. VMPin string // VMHWM: Peak resident set size ("high water mark"). VMHWM string // VMRSS: Resident set size. Note that the value here is the sum of // RssAnon, RssFile, and RssShmem. VMRSS string // RssAnon: Size of resident anonymous memory. (since Linux 4.5). RssAnon string // RssFile: Size of resident file mappings. (since Linux 4.5). RssFile string // RssShmem: Size of resident shared memory (includes System V // shared memory, mappings from tmpfs(5), and shared anonymous // mappings). (since Linux 4.5). RssShmem string // VMData: Size of data segment. VMData string // VMStk: Size of stack segment. VMStk string // VMExe: Size of text segment. VMExe string // VMLib: Shared library code size. VMLib string // VMPTE: Page table entries size (since Linux 2.6.10). VMPTE string // VMPMD: Size of second-level page tables (since Linux 4.0). VMPMD string // VMSwap: Swapped-out virtual memory size by anonymous private pages; // shmem swap usage is not included (since Linux 2.6.34). VMSwap string // HugetlbPages: Size of hugetlb memory portions. (since Linux 4.4). HugetlbPages string // Threads: Number of threads in process containing this thread. Threads string // SigQ: This field contains two slash-separated numbers that relate to // queued signals for the real user ID of this process. The first of // these is the number of currently queued signals for this real // user ID, and the second is the resource limit on the number of // queued signals for this process (see the description of // RLIMIT_SIGPENDING in getr- limit(2)). SigQ string // SigPnd: Number of signals pending for thread and for (see pthreads(7)). SigPnd string // ShdPnd: Number of signals pending for process as a whole (see // signal(7)). ShdPnd string // SigBlk: Mask indicating signals being blocked (see signal(7)). SigBlk string // SigIgn: Mask indicating signals being ignored (see signal(7)). SigIgn string // SigCgt: Mask indicating signals being blocked caught (see signal(7)). SigCgt string // CapInh: Mask of capabilities enabled in inheritable sets (see // capabilities(7)). CapInh string // CapPrm: Mask of capabilities enabled in permitted sets (see // capabilities(7)). CapPrm string // CapEff: Mask of capabilities enabled in effective sets (see // capabilities(7)). CapEff string // CapBnd: Capability Bounding set (since Linux 2.6.26, see // capabilities(7)). CapBnd string // CapAmb: Ambient capability set (since Linux 4.3, see capabilities(7)). CapAmb string // NoNewPrivs: Value of the no_new_privs bit (since Linux 4.10, see // prctl(2)). NoNewPrivs string // Seccomp: Seccomp mode of the process (since Linux 3.8, see // seccomp(2)). 0 means SEC- COMP_MODE_DISABLED; 1 means // SECCOMP_MODE_STRICT; 2 means SECCOMP_MODE_FILTER. This field is // provided only if the kernel was built with the CONFIG_SECCOMP kernel // configu- ration option enabled. Seccomp string // SeccompFilters: Amount of filters attached to the process. // (since Linux 5.9) SeccompFilters string // Cpus_allowed: Mask of CPUs on which this process may run // (since Linux 2.6.24, see cpuset(7)). CpusAllowed string // Cpus_allowed_list: Same as previous, but in "list format" (since // Linux 2.6.26, see cpuset(7)). CpusAllowedList string // Mems_allowed: Mask of memory nodes allowed to this process // (since Linux 2.6.24, see cpuset(7)). MemsAllowed string // Mems_allowed_list: Same as previous, but in "list format" (since // Linux 2.6.26, see cpuset(7)). MemsAllowedList string // voluntaryCtxtSwitches: Number of voluntary context switches // (since Linux 2.6.23). VoluntaryCtxtSwitches string // nonvoluntaryCtxtSwitches: Number of involuntary context switches // (since Linux 2.6.23). NonvoluntaryCtxtSwitches string }
Status is a direct translation of a `/proc/[pid]/status`, which provides much of the information in /proc/[pid]/stat and /proc/[pid]/statm in a format that's easier for humans to parse.