gpt4 book ai didi

bash - Sed 发现自己并丢弃脚本结果

转载 作者:行者123 更新时间:2023-11-29 09:29:50 26 4
gpt4 key购买 nike

脚本:

#!/bin/bash

SERVICE="$1"
RESULT=`ps -a | sed -n /${SERVICE}/p`
MEM=$(ps aux | sort -rk +4 | grep $1 | grep -v grep | awk '{print $4}' | awk 'NR == 1')

if [ "${RESULT:-null}" = null ]; then
echo "$1 is NOT running"
else
echo "$MEM"
fi

if [ "$MEM" -ge 1 ]; then
mailx -s "Alert: server needs to be checked" me@admins.com
fi

通过管道传输到 sed 的 ps 输出的问题是,即使没有进程在运行,它也会发现自己:

ps aux | sed -n /nfdump/p
root 30724 0.0 0.0 105252 884 pts/1 S+ 14:16 0:00 sed -n /process/p

我的脚本会绕过“服务未运行”的预期结果,直接回显 $MEM,在本例中为 0.0。 sed 是否有 grep -v grep 等价物来让自己远离障碍?

最佳答案

除了我上面的评论之外,让我再添加一个例子。 Sed 确实等效于 grep -v:您可以用 /RE/! 否定匹配(将 ! 附加到正则表达式)因此你可以试试:

ps aux | sed -n '/sed/!{ /nfdump/ p;}'

此处 { ... } 内的部分仅应用于 匹配 sed 的行。

记录:有一个命令 pgrep 可以替换您的 ps sed 管道,请参阅 pgrep in Wikipedia或其联机帮助页。

关于bash - Sed 发现自己并丢弃脚本结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35877294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com