我想grep一个特定的内核设置如下
$ sudo sysctl -a --ignore | grep -i max_map_count 2>/dev/null
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.docker0.stable_secret"
sysctl: reading key "net.ipv6.conf.enp2s0.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
sysctl: reading key "net.ipv6.conf.wlp3s0.stable_secret"
vm.max_map_count = 262144由于我既忽略了未知键的信息(即--ignore选项),又将潜在的错误输出重定向到/dev/null,那么这些reading jey行打印了什么?
发布于 2018-10-06 17:10:30
您正在将grep的stderr重定向到/dev/null,但是stderr消息来自sysctl。试一试
sudo sysctl -a --ignore 2>/dev/null | grep -i max_map_count发布于 2018-10-06 17:16:54
关于stable_secrect消息的解释可以找到这里。简而言之,键是存在的,但是没有初始化导致消息。
关于您的实际命令和目标,管道|只重定向stdout而不是stderr,后者是在将其他命令发送到管道之前打印的。
要具有预期的行为,您可以使用以下命令之一。
sudo sysctl -a --ignore 2> /dev/null | grep max_map_count
sudo sysctl -a --ignore 2>&1 | grep max_map_count
sudo sysctl -a --ignore |& grep max_map_count或者,您也可以使用find。
find /proc/sys -name '*max_map_count*' -exec grep -H . "{}" \;最好是,因为你已经知道你在寻找什么。
sysctl vm.max_map_counthttps://unix.stackexchange.com/questions/473660
复制相似问题