HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ns3133907 6.8.0-86-generic #87-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 22 18:03:36 UTC 2025 x86_64
User: cssnetorguk (1024)
PHP: 8.2.28
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/landscape/sysinfo/processes.py
import os

from twisted.internet.defer import succeed


class Processes:
    def __init__(self, proc_dir="/proc"):
        self._proc_dir = proc_dir

    def register(self, sysinfo):
        self._sysinfo = sysinfo

    def run(self):
        num_processes = 0
        num_zombies = 0
        for pid in os.listdir(self._proc_dir):
            if not pid.isdigit():
                continue
            status_path = os.path.join(self._proc_dir, pid, "stat")

            try:
                with open(status_path, "rb") as fd:
                    data = fd.read()
            except IOError:
                continue

            num_processes += 1

            if b"Z" == data.split(b" ", 3)[2]:
                num_zombies += 1

        if num_zombies:
            if num_zombies == 1:
                msg = "There is 1 zombie process."
            else:
                msg = f"There are {num_zombies:d} zombie processes."
            self._sysinfo.add_note(msg)
        self._sysinfo.add_header("Processes", str(num_processes))
        return succeed(None)