{
    "api_version": "1",
    "kind": "dse_post",
    "self": "https://update.dsesecurity.com/api/v1/posts/keep-systemd-service-children-inside-the-shutdown-boundary/",
    "item": {
        "id": "https://update.dsesecurity.com/updates/keep-systemd-service-children-inside-the-shutdown-boundary/",
        "slug": "keep-systemd-service-children-inside-the-shutdown-boundary",
        "url": "https://update.dsesecurity.com/updates/keep-systemd-service-children-inside-the-shutdown-boundary/",
        "alternate_urls": {
            "markdown": "https://update.dsesecurity.com/updates/keep-systemd-service-children-inside-the-shutdown-boundary.md",
            "json": "https://update.dsesecurity.com/api/v1/posts/keep-systemd-service-children-inside-the-shutdown-boundary/"
        },
        "title": "Keep systemd service children inside the shutdown boundary",
        "summary": "A stopped main process does not necessarily mean every process belonging to the service has exited.",
        "format": {
            "slug": "guide",
            "name": "Guide"
        },
        "priority": {
            "slug": "info",
            "name": "Information"
        },
        "featured": false,
        "image": {
            "theme": "network-infrastructure",
            "label": "Networks & infrastructure",
            "alt": "Resilient network core with engineered blue and gold data paths.",
            "card_url": "https://update.dsesecurity.com/assets/editorial/network-infrastructure-card.webp?v=1.8.20",
            "hero_url": "https://update.dsesecurity.com/assets/editorial/network-infrastructure-hero.webp?v=1.8.20",
            "social_url": "https://update.dsesecurity.com/assets/editorial/network-infrastructure-social-v2.jpg?v=1.8.20",
            "width": 2400,
            "height": 1350
        },
        "topics": [
            {
                "slug": "it",
                "name": "IT",
                "url": "https://update.dsesecurity.com/topic/it/"
            },
            {
                "slug": "networks-infrastructure",
                "name": "Networks & Infrastructure",
                "url": "https://update.dsesecurity.com/topic/networks-infrastructure/"
            }
        ],
        "author": {
            "name": "DSE Security Editorial Team",
            "url": "https://update.dsesecurity.com/#editorial-team",
            "type": "Organization"
        },
        "publisher": {
            "name": "Detection Systems & Engineering",
            "url": "https://dsesecurity.com/"
        },
        "published_at": "2026-10-20T18:15:27+00:00",
        "modified_at": "2026-10-20T18:34:33+00:00",
        "reviewed_on": "2026-10-20",
        "reading_minutes": 2,
        "word_count": 272,
        "potentially_affected": "Review systemd unit process termination using the Debian trixie systemd.kill manual.",
        "dse_recommendation": "DSE recommends inventorying workers and subprocesses created by a service before changing KillMode.",
        "primary_source": {
            "name": "Debian systemd manual — systemd.kill(5) — systemd — Debian trixie — Debian Manpages",
            "url": "https://manpages.debian.org/trixie/systemd/systemd.kill.5.en.html",
            "published_on": null,
            "authority": "manpages.debian.org"
        },
        "publishing_principles": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
        "usage_info": "https://update.dsesecurity.com/usage/",
        "copyright_notice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
        "content_html": "<p>A stopped main process does not necessarily mean every process belonging to the service has exited.</p>\n<h2>Source facts</h2>\n<p>The Debian systemd.kill manual describes KillMode=control-group as terminating remaining processes in the unit’s control group on stop. The process mode targets only the main process, while none avoids manager-driven termination. The manual warns against process and none because surviving children can escape ordinary lifecycle and resource management while the service appears stopped.</p>\n<p>Source: <a href=\"https://manpages.debian.org/trixie/systemd/systemd.kill.5.en.html\">Debian systemd manual — systemd.kill(5) — systemd — Debian trixie — Debian Manpages</a>.</p>\n<h2>Applicability</h2>\n<p>Review systemd unit process termination using the Debian trixie systemd.kill manual.</p>\n<h2>DSE recommendation</h2>\n<p>DSE recommends inventorying workers and subprocesses created by a service before changing KillMode. Define the graceful stop action and the bounded fallback when children do not exit. Avoid weakening the process boundary merely to preserve an unidentified helper. If a child must outlive the parent, give it an explicitly managed lifecycle rather than hiding it in a stopped unit. Keep restart behavior safe against duplicate workers, stale locks, or listeners left by a previous instance.</p>\n<h2>Verification</h2>\n<p>On a disposable service that creates a child process, compare the unit state with its remaining process set after stop. Verify the chosen mode and timeout terminate the intended workload without affecting unrelated units. Repeat startup afterward and confirm there is only one expected set of workers. Retain the main and child process identities with the unit&#8217;s effective stop configuration. Ask the service owner to approve the grace period and escalation result, and reconcile every surviving process before marking the stop exercise complete.</p>\n<h2>Official reference</h2>\n<p><a href=\"https://manpages.debian.org/trixie/systemd/systemd.kill.5.en.html\">Debian systemd manual — systemd.kill(5) — systemd — Debian trixie — Debian Manpages</a>. Reviewed October 20, 2026.</p>",
        "content_text": "A stopped main process does not necessarily mean every process belonging to the service has exited.\nSource facts\nThe Debian systemd.kill manual describes KillMode=control-group as terminating remaining processes in the unit’s control group on stop. The process mode targets only the main process, while none avoids manager-driven termination. The manual warns against process and none because surviving children can escape ordinary lifecycle and resource management while the service appears stopped.\nSource: Debian systemd manual — systemd.kill(5) — systemd — Debian trixie — Debian Manpages.\nApplicability\nReview systemd unit process termination using the Debian trixie systemd.kill manual.\nDSE recommendation\nDSE recommends inventorying workers and subprocesses created by a service before changing KillMode. Define the graceful stop action and the bounded fallback when children do not exit. Avoid weakening the process boundary merely to preserve an unidentified helper. If a child must outlive the parent, give it an explicitly managed lifecycle rather than hiding it in a stopped unit. Keep restart behavior safe against duplicate workers, stale locks, or listeners left by a previous instance.\nVerification\nOn a disposable service that creates a child process, compare the unit state with its remaining process set after stop. Verify the chosen mode and timeout terminate the intended workload without affecting unrelated units. Repeat startup afterward and confirm there is only one expected set of workers. Retain the main and child process identities with the unit’s effective stop configuration. Ask the service owner to approve the grace period and escalation result, and reconcile every surviving process before marking the stop exercise complete.\nOfficial reference\nDebian systemd manual — systemd.kill(5) — systemd — Debian trixie — Debian Manpages. Reviewed October 20, 2026.",
        "content_markdown": "A stopped main process does not necessarily mean every process belonging to the service has exited.\n\n## Source facts\n\nThe Debian systemd.kill manual describes KillMode=control-group as terminating remaining processes in the unit’s control group on stop. The process mode targets only the main process, while none avoids manager-driven termination. The manual warns against process and none because surviving children can escape ordinary lifecycle and resource management while the service appears stopped.\n\nSource: [Debian systemd manual — systemd.kill(5) — systemd — Debian trixie — Debian Manpages](https://manpages.debian.org/trixie/systemd/systemd.kill.5.en.html).\n\n## Applicability\n\nReview systemd unit process termination using the Debian trixie systemd.kill manual.\n\n## DSE recommendation\n\nDSE recommends inventorying workers and subprocesses created by a service before changing KillMode. Define the graceful stop action and the bounded fallback when children do not exit. Avoid weakening the process boundary merely to preserve an unidentified helper. If a child must outlive the parent, give it an explicitly managed lifecycle rather than hiding it in a stopped unit. Keep restart behavior safe against duplicate workers, stale locks, or listeners left by a previous instance.\n\n## Verification\n\nOn a disposable service that creates a child process, compare the unit state with its remaining process set after stop. Verify the chosen mode and timeout terminate the intended workload without affecting unrelated units. Repeat startup afterward and confirm there is only one expected set of workers. Retain the main and child process identities with the unit’s effective stop configuration. Ask the service owner to approve the grace period and escalation result, and reconcile every surviving process before marking the stop exercise complete.\n\n## Official reference\n\n[Debian systemd manual — systemd.kill(5) — systemd — Debian trixie — Debian Manpages](https://manpages.debian.org/trixie/systemd/systemd.kill.5.en.html). Reviewed October 20, 2026."
    },
    "json_ld": {
        "@context": "https://schema.org",
        "@graph": [
            {
                "@type": "Organization",
                "@id": "https://dsesecurity.com/#organization",
                "name": "Detection Systems & Engineering",
                "alternateName": "DSE Security",
                "url": "https://dsesecurity.com/",
                "logo": {
                    "@type": "ImageObject",
                    "url": "https://update.dsesecurity.com/assets/dse-logo-20260812.png?v=1.8.20"
                }
            },
            {
                "@type": "Organization",
                "@id": "https://update.dsesecurity.com/#editorial-team",
                "name": "DSE Security Editorial Team",
                "url": "https://update.dsesecurity.com/",
                "parentOrganization": {
                    "@id": "https://dsesecurity.com/#organization"
                }
            },
            {
                "@type": "WebSite",
                "@id": "https://update.dsesecurity.com/#website",
                "name": "DSE Updates",
                "alternateName": "DSE Security Knowledge Hub",
                "url": "https://update.dsesecurity.com/",
                "inLanguage": "en-US",
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "potentialAction": {
                    "@type": "SearchAction",
                    "target": {
                        "@type": "EntryPoint",
                        "urlTemplate": "https://update.dsesecurity.com/?q={search_term_string}"
                    },
                    "query-input": "required name=search_term_string"
                }
            },
            {
                "@type": "WebPage",
                "@id": "https://update.dsesecurity.com/updates/keep-systemd-service-children-inside-the-shutdown-boundary/",
                "url": "https://update.dsesecurity.com/updates/keep-systemd-service-children-inside-the-shutdown-boundary/",
                "isPartOf": {
                    "@id": "https://update.dsesecurity.com/#website"
                },
                "lastReviewed": "2026-10-20"
            },
            {
                "@type": "BreadcrumbList",
                "@id": "https://update.dsesecurity.com/updates/keep-systemd-service-children-inside-the-shutdown-boundary/#breadcrumbs",
                "itemListElement": [
                    {
                        "@type": "ListItem",
                        "position": 1,
                        "name": "DSE Updates",
                        "item": "https://update.dsesecurity.com/"
                    },
                    {
                        "@type": "ListItem",
                        "position": 2,
                        "name": "IT",
                        "item": "https://update.dsesecurity.com/topic/it/"
                    },
                    {
                        "@type": "ListItem",
                        "position": 3,
                        "name": "Keep systemd service children inside the shutdown boundary",
                        "item": "https://update.dsesecurity.com/updates/keep-systemd-service-children-inside-the-shutdown-boundary/"
                    }
                ]
            },
            {
                "@type": [
                    "Article",
                    "TechArticle"
                ],
                "@id": "https://update.dsesecurity.com/updates/keep-systemd-service-children-inside-the-shutdown-boundary/#article",
                "identifier": "https://update.dsesecurity.com/updates/keep-systemd-service-children-inside-the-shutdown-boundary/",
                "url": "https://update.dsesecurity.com/updates/keep-systemd-service-children-inside-the-shutdown-boundary/",
                "headline": "Keep systemd service children inside the shutdown boundary",
                "description": "A stopped main process does not necessarily mean every process belonging to the service has exited.",
                "abstract": "A stopped main process does not necessarily mean every process belonging to the service has exited.",
                "articleBody": "A stopped main process does not necessarily mean every process belonging to the service has exited.\nSource facts\nThe Debian systemd.kill manual describes KillMode=control-group as terminating remaining processes in the unit’s control group on stop. The process mode targets only the main process, while none avoids manager-driven termination. The manual warns against process and none because surviving children can escape ordinary lifecycle and resource management while the service appears stopped.\nSource: Debian systemd manual — systemd.kill(5) — systemd — Debian trixie — Debian Manpages.\nApplicability\nReview systemd unit process termination using the Debian trixie systemd.kill manual.\nDSE recommendation\nDSE recommends inventorying workers and subprocesses created by a service before changing KillMode. Define the graceful stop action and the bounded fallback when children do not exit. Avoid weakening the process boundary merely to preserve an unidentified helper. If a child must outlive the parent, give it an explicitly managed lifecycle rather than hiding it in a stopped unit. Keep restart behavior safe against duplicate workers, stale locks, or listeners left by a previous instance.\nVerification\nOn a disposable service that creates a child process, compare the unit state with its remaining process set after stop. Verify the chosen mode and timeout terminate the intended workload without affecting unrelated units. Repeat startup afterward and confirm there is only one expected set of workers. Retain the main and child process identities with the unit’s effective stop configuration. Ask the service owner to approve the grace period and escalation result, and reconcile every surviving process before marking the stop exercise complete.\nOfficial reference\nDebian systemd manual — systemd.kill(5) — systemd — Debian trixie — Debian Manpages. Reviewed October 20, 2026.",
                "datePublished": "2026-10-20T18:15:27+00:00",
                "dateModified": "2026-10-20T18:34:33+00:00",
                "mainEntityOfPage": {
                    "@id": "https://update.dsesecurity.com/updates/keep-systemd-service-children-inside-the-shutdown-boundary/"
                },
                "inLanguage": "en-US",
                "isAccessibleForFree": true,
                "author": {
                    "@type": "Organization",
                    "name": "DSE Security Editorial Team",
                    "url": "https://update.dsesecurity.com/#editorial-team"
                },
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "image": {
                    "@type": "ImageObject",
                    "@id": "https://update.dsesecurity.com/updates/keep-systemd-service-children-inside-the-shutdown-boundary/#primaryimage",
                    "url": "https://update.dsesecurity.com/assets/editorial/network-infrastructure-social-v2.jpg?v=1.8.20",
                    "contentUrl": "https://update.dsesecurity.com/assets/editorial/network-infrastructure-social-v2.jpg?v=1.8.20",
                    "width": 1200,
                    "height": 630,
                    "caption": "Keep systemd service children inside the shutdown boundary"
                },
                "articleSection": [
                    "IT",
                    "Networks & Infrastructure"
                ],
                "keywords": [
                    "IT",
                    "Networks & Infrastructure",
                    "Guide",
                    "Information priority"
                ],
                "genre": "Guide",
                "about": [
                    {
                        "@type": "Thing",
                        "name": "IT",
                        "url": "https://update.dsesecurity.com/topic/it/"
                    },
                    {
                        "@type": "Thing",
                        "name": "Networks & Infrastructure",
                        "url": "https://update.dsesecurity.com/topic/networks-infrastructure/"
                    }
                ],
                "wordCount": 272,
                "timeRequired": "PT2M",
                "publishingPrinciples": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
                "usageInfo": "https://update.dsesecurity.com/usage/",
                "copyrightHolder": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "copyrightNotice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
                "citation": {
                    "@type": "CreativeWork",
                    "name": "Debian systemd manual — systemd.kill(5) — systemd — Debian trixie — Debian Manpages",
                    "url": "https://manpages.debian.org/trixie/systemd/systemd.kill.5.en.html"
                }
            }
        ]
    }
}