我是 Bash 脚本的新手,但我学得很快。通常。我正在尝试编写一个脚本来杀死并重新启动 Hudson 的一个实例——它需要重新启动以获取环境变量中的更改。到目前为止我所拥有的:
#!/bin/bash
h=`pgrep -f hudson`
if test "$h" != ""; then
kill $h
while [ "$h" != "" ]; do
sleep 1
unset h
h=`pgrep -f hudson`
done
fi
java -jar ~/hudson/hudson.war &
该脚本正确地确定了正在运行的 Hudson 实例的 PID 并将其终止。但是,它只是在“kill”行之后等待并且不会继续。如果我在那里按下一个键,它会完成终止进程并退出脚本,甚至永远不会进入 while 循环。显然,我遗漏了有关如何终止该过程的信息。并不是说Hudson进程挂了,没有响应“kill”;它正常退出,直到我干预。
我也确信这可能会更有效率,但现在我只想了解我哪里出错了。
提前致谢。