Show Table of Contents
3.6. 将进程移至控制群组
您可以运行
cgclassify 指令将进程移动到 cgroup 中:
cgclassify-gcontrollers:path_to_cgroup pidlist
其中:
- controllers 是资源控制器列表,以逗号分隔;或者使用
*来启动与所用可用子系统相关的层级中的进程。请注意,如果几个 cgroup 的名称相同,-g选项会将进程移至这些群组的每一个。 - path_to_cgroup 是层级中 cgroup 的路径;
- pidlist 是 process identifier(PID)的列表,以空格隔开。
如果没有明确
-g 选项,cgclassify 会自动搜索 /etc/cgrules.conf,并且使用第一个适用配置行。根据此配置行,cgclassify 会确定进程将移至的层级和 cgroup。请注意,为确保移动成功,目标层级必须存在。/etc/cgrules.conf 指定的子系统也必须被合理配置来回应 /etc/cgconfig.conf 中的层级。
您还可以在 pid 前面添加
--sticky 选项以保证所有子进程位于同一 cgroup 中。如果您没有设定这个选项且 cgred 服务正在运行,则子进程会根据 /etc/cgrules.conf 中的设置被分配到 cgroup 中。而该进程本身仍保留在启动它的 cgroup 中。
您还可以使用 cgred 服务(
cgrulesengd 后台驻留程序启动服务),此服务会根据 /etc/cgrules.conf 文件中设定的参数将任务移至 cgroup。请仅将 cgred 用于管理手动附加的管控器。/etc/cgrules.conf 文件条目的形式可以是以下两种之一:
- user subsystems control_group;
- user:command subsystems control_group。
例如:
maria net_prio /usergroup/staff
此条目指定任何属于名为
maria 用户的进程,都可以根据 /usergroup/staff cgroup 指定的参数存取 devices 子系统。要将特定指令与具体 cgroup 关联,请添加 command 参数,如下:
maria:ftp devices /usergroup/staff/ftp
此条目现指定,当名为
maria 的用户使用 ftp 指令时,该进程将被自动移动到包含 devices 子系统的层级的 /usergroup/staff/ftp cgroup 中。然而,请注意:只有在符合适当条件后,后台驻留程序才可将该进程移动到 cgroup 中。因此,ftp 进程可能会在错误的群组中短暂运行。另外,如果该进程在错误群组中迅速生成子进程,这些子进程可能不会被移动。
/etc/cgrules.conf 文件中的条目可包括以下额外符号:
@—— 被用作 user 前缀时,它代表一个群组而不是单独用户。例如:@admins表示admins组群中的所有用户。*—— 代表“所有”。例如:subsystem字段中的*代表所有子系统。%—— 代表与上一行相同的项目。例如:@adminstaff net_prio /admingroup @labstaff % %

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.