我只想在 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 …
注意 之前有一个空格]
。记住[
是常规命令(如ls
或echo
),不是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
或者:
[[ $max_map_count -lt 262144 ]] && sysctl -w vm.max_map_count = 262144