Zsh 自动 forkbomb 检测和缓解

问题描述 投票:0回答:0

我正在尝试编写一个 zsh 脚本来检测并杀死 forkbomb。我知道防止这种情况的最简单方法是在 limits.conf 文件中设置限制,但此分配需要自动检测和缓解解决方案。我对脚本编写不是很熟悉,尤其是 zsh,所以我不确定是否存在逻辑错误或语法错误。

我的 bombDestroyer.zsh 文件:

#!/bin/zsh
#
ulimit -u 20 #limit user process to 20

#Kill any process that exceeds the limit except for root
if [[ $(ulimit -u) -eq 20 ]]; then
        if [[ $(whoami) != "root" ]]; then
                echo "Fork bomb detected. Killing user's processes"
                killall -u $(whoami)
        fi
else
        echo "No fork bomb detected"
        exit 1
fi

我使用

chmod +x bombDestroyer.zsh
命令使其可执行,但是当我使用
sudo ./bombDestroyer
运行它时,没有任何反应。没有打印回声语句,也没有进程被终止。 即使当炸弹正在执行并且用户有数百个进程时,zsh 脚本也不会终止进程。 当我在没有第二个 if 语句的情况下运行它时,它起作用了(杀死了所有根进程并因此关闭了 VM),所以我认为这是一个语法错误。

if-statement syntax process fork zsh
© www.soinside.com 2019 - 2024. All rights reserved.