systemd 子进程未显示在 CGroup system.slice 中的解决方法
可能是因为子进程没有正确继承父进程的 CGroup。在 systemd 中,每个进程都会分配到一个 CGroup,用于跟踪和管理进程的资源使用情况。
要确保子进程能够正确继承父进程的 CGroup,可以使用以下方法之一:
- 使用 systemd 提供的 'Delegate=yes' 选项。在父进程的 unit 文件中设置 'Delegate=yes',这样子进程就会继承父进程的 CGroup。例如:
[Service]
ExecStart=/path/to/your/program
Delegate=yes
- 使用 'systemd-run' 命令启动子进程。'systemd-run' 命令会自动将子进程放入与父进程相同的 CGroup 中。例如:
systemd-run /path/to/your/program
- 在父进程中手动将子进程移动到正确的 CGroup。可以使用 'systemd-cgexec' 命令将子进程移动到指定的 CGroup 中。例如:
systemd-cgexec -g system.slice /path/to/your/program
以上方法中,第一种方法是最简单和推荐的方法,因为它会自动处理 CGroup 的继承问题。如果子进程仍然没有显示在 CGroup 中,可能是因为父进程的 unit 文件中没有正确设置 'Delegate=yes' 选项,或者被启动的子进程没有正确继承父进程的 CGroup。
原文地址: http://www.cveoy.top/t/topic/fR4D 著作权归作者所有。请勿转载和采集!