Control Groups示例

本文介绍了CGroup配置文件的多种示例,包括简单的挂载配置、带有权限设置的组配置、不同层级的组创建等,帮助读者理解如何通过配置文件管理和控制资源。

Example 1

/etc/cgconfig.conf配置文件内容如下:

              mount {

                     cpu = /mnt/cgroups/cpu;

                     cpuacct = /mnt/cgroups/cpu;

              }

创建由cpu/cpuacct两个子系统控制的层次结构,内部不包含groups。对应的shell操作如下:

              mkdir /mnt/cgroups/cpu

              mount -t cgroup -o cpu,cpuacct cpu /mnt/cgroups/cpu

Example 2

/etc/cgconfig.conf配置文件内容如下:

              mount {

                     cpu = /mnt/cgroups/cpu;

                     cpuacct = /mnt/cgroups/cpu;

              }

              group daemons/www {

                     perm {

                             task {

                                    uid = root;

                                    gid = webmaster;

                             }

                             admin {

                                    uid = root;

                                    gid = root;

                             }

                     }

                     cpu {

                             cpu.shares = "1000";

                     }

              }

              group daemons/ftp {

                     perm {

                             task {

                                    uid = root;

                                    gid = ftpmaster;

                             }

                             admin {

                                    uid = root;

                                    gid = root;

                             }

                     }

                     cpu {

                             cpu.shares = "500";

                     }

              }

      创建由cpu/cpuacct两个子系统控制的层次结构,其中包含一个daemons组和www/ftp两个子组,设置一个cpu.shares的参数。对应的shell操作如下:

              mkdir /mnt/cgroups/cpu

              mount -t cgroup -o cpu,cpuacct cpu /mnt/cgroups/cpu

              mkdir /mnt/cgroups/cpu/daemons

              mkdir /mnt/cgroups/cpu/daemons/www

              chown root:root /mnt/cgroups/cpu/daemons/www/*

              chown root:webmaster /mnt/cgroups/cpu/daemons/www/tasks

              echo 1000 > /mnt/cgroups/cpu/daemons/www/cpu.shares

              mkdir /mnt/cgroups/cpu/daemons/ftp

              chown root:root /mnt/cgroups/cpu/daemons/ftp/*

              chown root:ftpmaster /mnt/cgroups/cpu/daemons/ftp/tasks

              echo 500 > /mnt/cgroups/cpu/daemons/ftp/cpu.shares

在创建第一个www子组时,自动创建daemons组。它的所有参数都是默认值,只有root用户可以访问daemons组的文件。

由于cpuacct和cpu子系统都挂载到同一个目录,所以所有组也都由cpuacct子系统隐式控制,即使在任何组中都没有cpuacct节。

permissions给定控制组对所安装的文件系统的权限。Root总是有权限对控制组做任何事情。permissions有以下语法:

perm {

            task {

                   uid = <task user>;

                   gid = <task group>;

            }

            admin {

                   uid = <admin name>;

                   gid = <admin group>;

            }

     }

task user/group:拥有指定允许向tasks文件分配任务的的用户名和组名。也就是说,这个用户和这个组的成员对tasks文件有写访问权。

admin user/group:拥有控制组其余文件的用户名和组名。这些用户可以设置子系统参数和创建子组。

Example 3

/etc/cgconfig.conf配置文件内容如下:

              mount {

                     cpu = /mnt/cgroups/cpu;

                     cpuacct = /mnt/cgroups/cpuacct;

              }

              group daemons {

                     cpuacct{

                     }

                     cpu {

                     }

              }

 在cpu/cpuacct两个层次结构中创建一个公共组。对应的操作如下:

              mkdir /mnt/cgroups/cpu

              mkdir /mnt/cgroups/cpuacct

              mount -t cgroup -o cpu cpu /mnt/cgroups/cpu

              mount -t cgroup -o cpuacct cpuacct /mnt/cgroups/cpuacct

              mkdir /mnt/cgroups/cpu/daemons

              mkdir /mnt/cgroups/cpuacct/daemons

事实上,有两个组被创建。一个在cpuacct层次中,第二个在cpu层次中。这两个组没有任何共同点,可以包含不同的subgroups和不同的tasks。

Example 4

/etc/cgconfig.conf配置文件内容如下:

              mount {

                     cpu = /mnt/cgroups/cpu;

                     cpuacct = /mnt/cgroups/cpuacct;

              }

              group daemons {

                     cpuacct{

                     }

              }

              group daemons/www {

                     cpu {

                             cpu.shares = "1000";

                     }

              }

              group daemons/ftp {

                     cpu {

                             cpu.shares = "500";

                     }

              }

创建cpu/cpuacct两个层次结构,其中包含一些的组。在两个层次结构中都创建一个组。 对应的shell操作如下:

              mkdir /mnt/cgroups/cpu

              mkdir /mnt/cgroups/cpuacct

              mount -t cgroup -o cpu cpu /mnt/cgroups/cpu

              mount -t cgroup -o cpuacct cpuacct /mnt/cgroups/cpuacct

              mkdir /mnt/cgroups/cpuacct/daemons

              mkdir /mnt/cgroups/cpu/daemons

              mkdir /mnt/cgroups/cpu/daemons/www

              echo 1000 > /mnt/cgroups/cpu/daemons/www/cpu.shares

              mkdir /mnt/cgroups/cpu/daemons/ftp

              echo 500 > /mnt/cgroups/cpu/daemons/ftp/cpu.shares

在两个层次结构中都创建了daemons组。在cpuacct层次结构中,组在配置文件中显式地提到。在cpu层次结构中,是www创建时隐式创建的组。这两个组没有任何共同之处,例如,它们不共享流程和子组。组www和ftp只在cpu层次结构中创建,不受cpuacct子系统控制。

Example 5

group的名称只能包含字符,这是目录名所允许的。这些组组成一个树,即一个控制组可以包含零个或多个子组。子组可以使用' / '分隔符指定。

root控制组总是在所有层次结构中自动创建,它是组层次结构的基础。可以在cgconfig.conf文件中使用“.”(点)作为组名显式指定。这可以用来设置它的权限,如下示例所示。

/etc/cgconfig.conf配置文件内容如下:

              mount {

                     cpu = /mnt/cgroups/cpu;

                     cpuacct = /mnt/cgroups/cpu;

              }

              group . {

                     perm {

                             task {

                                    uid = root;

                                    gid = operator;

                             }

                             admin {

                                    uid = root;

                                    gid = operator;

                             }

                     }

                     cpu {

                     }

              }

              group daemons {

                     perm {

                             task {

                                    uid = root;

                                    gid = daemonmaster;

                             }

                             admin {

                                    uid = root;

                                    gid = operator;

                             }

                     }

                     cpu {

                     }

              }

创建由两个子系统控制的层次结构,其中一个组具有一些特殊权限。对应的shell操作如下:

              mkdir /mnt/cgroups/cpu

              mount -t cgroup -o cpu,cpuacct cpu /mnt/cgroups/cpu

              chown root:operator /mnt/cgroups/cpu/*

              chown root:operator /mnt/cgroups/cpu/tasks

              mkdir /mnt/cgroups/cpu/daemons

              chown root:operator /mnt/cgroups/cpu/daemons/*

              chown root:daemonmaster /mnt/cgroups/cpu/daemons/tasks

作为operator组成员的用户被允许管理control groups,即创建新的control groups,并且可以在这些组之间移动进程,而不需要root权限。

daemonmaster组的成员可以将进程移动到daemons control groups中,但不能将进程移出该组。只有operator或root可以这样做。

在英文中,**"control"** 是一个多义词,根据上下文的不同可以表示多种含义。下面从最基础的词义开始解释,并结合不同领域(如计算机、工程、管理、心理学等)详细说明其用法。 --- ## 一、基本含义(词典定义) ### 作为动词: - **control** = 控制、管理、操纵、调节 ### 作为名词: - **control** = 控制权、控制器、控制手段、管理能力 --- ## 二、不同场景下的含义与用法 ### 1. 日常生活中的 "control" #### ✅ 动词用法: - He can’t control his temper. → 他控制不住自己的脾气。 - The driver lost control of the car. → 司机失去了对汽车的控制。 #### ✅ 名词用法: - She has good control of the class. → 她对班级有良好的掌控。 - The remote control is on the table. → 遥控器在桌子上。 --- ### 2. 技术/计算机领域中的 "control" #### ✅ 控制器(名词) - **Control Panel**(Windows 控制面板) - **Game controller**(游戏手柄) - **Input/Output control**(输入输出控制) #### ✅ 控制流程(动词) - The program controls the robot's movement. → 程序控制机器人的移动。 - The loop is used to control the flow of execution. → 这个循环用于控制执行流程。 #### ✅ 权限控制(权限管理) - Access control(访问控制) - User control(用户权限管理) - Role-based control(基于角色的控制) #### ✅ 控制键(键盘) - **Ctrl key**(Control 键)是键盘上的一个修饰键,常用于快捷键: - Ctrl + C(复制) - Ctrl + V(粘贴) - Ctrl + Z(撤销) --- ### 3. 管理/组织中的 "control" - **Budget control**(预算控制) - **Quality control**(质量控制) - **Risk control**(风险控制) - **Management control**(管理控制) 例如: - The manager has control over the project timeline. → 经理对项目时间表有控制权。 --- ### 4. 实验/科学中的 "control" 在实验中,**control group**(对照组)是实验设计中的一个关键概念: - The drug was tested on two groups, one with the drug and one as a control. → 这种药物在两个组中进行了测试,一组使用药物,一组作为对照组。 --- ### 5. 心理学/情绪中的 "control" - **Emotional control**(情绪控制) - **Self-control**(自控力) 例如: - She has great self-control in stressful situations. → 她在压力下有很强的自控力。 --- ## 三、相关技术代码示例(Python) ### 示例 1:使用 `control` 概念实现程序流程控制(if 语句) ```python user_input = input("Enter a command: ") if user_input == "start": print("Starting the system...") elif user_input == "stop": print("Stopping the system...") else: print("Unknown command.") ``` > 这段代码展示了程序如何通过输入控制流程(control flow)。 --- ### 示例 2:模拟权限控制(Access Control) ```python def access_control(user_role): if user_role == "admin": return "Access granted to all features." elif user_role == "user": return "Access granted to basic features." else: return "Access denied." print(access_control("admin")) # 输出:Access granted to all features. ``` > 这个例子模拟了一个简单的访问控制(access control)逻辑。 --- ## 四、总结 | 场景 | control 的含义 | 示例 | |------|----------------|------| | 日常生活 | 控制、管理 | control your emotions | | 技术领域 | 控制器、控制流程 | control the robot | | 管理领域 | 控制权、权限管理 | budget control | | 实验科学 | 对照组 | control group | | 心理学 | 自我控制 | self-control | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太极淘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值