【问题标题】:How to change ulimit value in limits.conf using sed command? [duplicate]如何使用 sed 命令更改 limits.conf 中的 ulimit 值? [复制]
【发布时间】:2020-03-27 02:21:14
【问题描述】:

如果 limits.conf 不存在,我想使用 shell 脚本追加更改。两种情况:

  1. 如果未指定限制,我必须使用 sed 添加。
  2. 如果存在限制,则不应更改。
*   soft   nofile  100000
*   hard   nofile  150000

【问题讨论】:

  • 这不是链接问题的副本。这只是一个直接的 sed 替换。 这个问题需要测试limits.conf中是否已经存在某些信息,如果没有,则追加一个新行。
  • 在链接的问题How do I use sed to change my configuration files, with flexible keys and values? 中,没有一个答案真正起作用。 OP 的要求是“......central.databaseSQLTEST 都来自 bash 变量”。但是,所有答案都假定硬编码值为 central.database 或其他任何值,以便他们可以手动转义点 .,而不是处理任意 bash 变量。 (事实上​​,许多回答者忘记了.sed 中是特殊的。)

标签: linux bash shell sed text-processing


【解决方案1】:

limits.conf 中不存在给定类型和项目时,此bash 脚本会将$LINE_TO_APPEND 添加到limits.conf 的末尾:

LINE_TO_APPEND='*               hard    nofile          512'
read -a line_array <<< "$LINE_TO_APPEND"
line_type=${line_array[1]} # consists of just normal characters
line_item=${line_array[2]} # consists of just normal characters
if [[ -z $(grep "$line_type  *$line_item" limits.conf) ]]; then
   echo "$LINE_TO_APPEND" >> limits.conf
fi

如果你想要一个更纯粹的 sed 方法,下面的带有硬编码字段的不太通用的命令将起作用(我陷入了试图使用$ 的“逃避地狱”;我'将尝试稍后重新访问此答案!):

sed -i 'H;1h;$!d;x;/soft  *nofile/!s/$/\n*   soft   nofile  100000/' limits.conf

sed解决方案说明:

【讨论】:

    猜你喜欢
    • 2019-10-06
    • 2023-03-28
    • 1970-01-01
    • 2023-01-12
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 2013-02-05
    相关资源
    最近更新 更多