首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在“GRUB_CMDLINE_LINUX_DEFAULT”中,以后出现的值会覆盖前面的值吗?

在“GRUB_CMDLINE_LINUX_DEFAULT”中,以后出现的值会覆盖前面的值吗?
EN

Ask Ubuntu用户
提问于 2019-01-11 20:29:15
回答 1查看 3.2K关注 0票数 1

我在我的项目中使用Ubuntu 14.04.5docker-ce的最新版本。我希望启用cgroup交换限制功能,因此我将查看您的内核不支持cgroup交换限制功能。一节。

我不想手动修改/etc/default/grub文件,而是在一个Ansible剧本中修改它,因为我已经有了很多可以设置IT基础设施的剧本。

最简单的解决方案是找到GRUB_CMDLINE_LINUX_DEFAULT行并追加cgroup_enable=memory swapaccount=1,而不检查它们是否已经存在。剧本任务将如下所示:

代码语言:javascript
运行
复制
- name: Enable the memory limit.
  lineinfile:
    path: /etc/default/grub
    backrefs: yes
    regexp: '^(GRUB_CMDLINE_LINUX_DEFAULT=")(.*)(".*)(注意,最后一个when行是无效的Ansible语法。我把它放在那里是为了展示这个想法。)我设置了一个when条件,如果这两个标志已经有了所需的值,那么它们就不会再被追加了。然而,在以下情况下,它们仍被追加:只有一个存在,例如:GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory"两者都存在,但具有不同的价值,例如:GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=something swapaccount=999" (只是一些愚蠢的值)两者都存在,但都由其他东西分隔开来,例如:GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory somekey=somevalue swapaccount=1"等等。总之,剧本的任务并不完美,我很快就会改进的。我的问题是:如果我以像GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=something swapaccount=999 cgroup_enable=memory swapaccount=1"这样的行结束,那么稍后出现的值(在本例中是“内存”和"1“)会覆盖相同键的早期值(”东西“和"999")吗?我做了测试,结果似乎是这样的。如果它覆盖或不覆盖前面的值,那么指定此行为的正式文档在哪里?我试图在下面的链接中找到它,但并不幸运:GRUB手册2.02配置GRUB 2
    line: '\1\2 cgroup_enable=memory swapaccount=1\3'
  when: <String `cgroup_enable=memory swapaccount=1` is not present>

(注意,最后一个when行是无效的Ansible语法。我把它放在那里是为了展示这个想法。)

我设置了一个when条件,如果这两个标志已经有了所需的值,那么它们就不会再被追加了。然而,在以下情况下,它们仍被追加:

F19H110

只有一个存在,例如:GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory"

H212H113

两者都存在,但具有不同的价值,例如:GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=something swapaccount=999" (只是一些愚蠢的值)

H215H116

两者都存在,但都由其他东西分隔开来,例如:GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory somekey=somevalue swapaccount=1"

H218H119

等等。

H220F221

总之,剧本的任务并不完美,我很快就会改进的。

我的问题是:

G122H123

如果我以像GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=something swapaccount=999 cgroup_enable=memory swapaccount=1"这样的行结束,那么稍后出现的值(在本例中是“内存”和"1“)会覆盖相同键的早期值(”东西“和"999")吗?我做了测试,结果似乎是这样的。

H225H126如果它覆盖或不覆盖前面的值,那么指定此行为的正式文档在哪里?我试图在下面的链接中找到它,但并不幸运:F127H128

GRUB手册2.02

H230H131

配置GRUB 2

H233F234H235G236

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2019-09-13 06:37:11

分析这些命令行的不是Grub,所以在Grub手册中不太可能找到关于这一点的任何信息。是linux内核、驱动程序和用户空间程序读取这些内容。因此,您的问题没有明确的答案--一般来说,如果linux内核或驱动程序对其进行解析,它们确实会覆盖前面的值。但是linux中的任何程序都可以通过/proc/cmdline文件读取这些命令行并以任何方式解析它们。因此,我一般建议避免这样做是出于安全考虑。

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1108967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档