在 bash 文件中添加与 sysctl 值相关的条件

在 bash 文件中添加与 sysctl 值相关的条件

我只想在 sysctl vm.max_map_count 值小于 262144 时执行某些操作。例如:

if [ vm.max_map_count -lt 262144]
then
  sysctl -w vm.max_map_count = 262144
fi

问题是,如何在 bash 中读取 vm.max_map_count 的值。

有什么想法可以做到这一点吗?

答案1

以下命令:

sysctl -n vm.max_map_count

打印值而不打印键名。要将该值用作另一个命令的参数,您需要命令替换

if [ "$(sysctl -n vm.max_map_count)" -lt 262144 ]
then …

注意 之前有一个空格]。记住[是常规命令(如lsecho),不是shell 语法的一部分;并且]只是最后一个参数。该[命令需要它的最后一个参数是]。我提到这一点是因为在您的原始代码中,最后一个参数是262144],这在语法上是错误的。

sysctl -w vm.max_map_count = 262144不起作用。正确的语法是sysctl -w vm.max_map_count=262144

答案2

我只想在sysctl vm.max_map_count值小于时执行某些操作262144

请尝试以下操作:

if [ "$max_map_count" -lt 262144 ]; then sysctl -w vm.max_map_count = 262144; fi

来源:if 手册页 - Linux - SS64.com

或者:

[[ $max_map_count -lt 262144  ]] && sysctl -w vm.max_map_count = 262144

来源:测试手册页 - Linux - SS64.com

相关内容