所以我有一台服务器,并且我可以访问 sudo 只做一件事:运行一个白名单脚本(我将其称为目标脚本)。我无权访问 sudo 任何其他东西。问题是,这个脚本随机停止,需要有人不断重新启动它,这很烦人。我创建了下面的脚本(我将其称为保姆脚本)来自动执行此操作。简而言之,它同时运行脚本的 2 个并行实例,如果它们停止,则将它们重新启动最多 5 次。
这一切都很好,只是我现在无法找到停止目标脚本的方法。当我直接从终端运行它时,我可以按 Ctrl+C 来终止它。然而,现在它是由保姆脚本启动的,我不知道如何杀死它。例如,假设我想在以下脚本的底部放置一些内容,以便在目标脚本运行 5 秒后终止它们的两个实例。
我尝试过各种kill
命令pkill
,但似乎没有办法在不运行 sudo 的情况下杀死 sudokill
进程pkill
。作为解决方法,我一直在尝试各种方法来前台目标脚本,fg
以便我可以手动按 Ctrl+C,但我似乎无法找到一种方法来前台在 bash 脚本中启动的进程。
我有能力修改我的保姆脚本,但不能修改目标脚本。有什么办法杀死目标脚本吗?
保姆脚本:
echo "ENTER YOUR PASSWORD:"
read -s PASSWORD
COUNTOUTER=1
while [ $COUNTOUTER -le 2 ]; #Create 2 parallel processes
do
(
COUNTINNER=1
while [ $COUNTINNER -le 5 ]; #Restart the target script up to 5 times
do
echo $PASSWORD | exec sudo -S ./test.sh > process1.log &
wait $!
((COUNTINNER++))
done
)&
((COUNTOUTER++))
done
sleep 5
# I want to do something here to kill the target processes