有人可以告诉我为什么有时会失败:
if [ $(pgrep -f agent.jar | wc -l) -gt 1 ]; then
kill $(pgrep -f agent.jar | grep -v $(pgrep -of agent.jar) | sort -n | uniq | awk '{printf $1" "}');
fi
这部分代码的目标是:
检查是否存在重复进程。请注意我如何引用 .jar 文件而不是 java 以防其他 java 应用程序正在运行
如果检测到重复,它会获取最近重复的进程 id(即忽略原始的)并尝试杀死重复。
代码效果很好。它检测到重复并杀死它们,但有时它会选择第三个进程(可能是 grep pid 或 ps pid)并尝试杀死它。我不知道它发现的随机 PID 是什么。它只是暂时的,这就是为什么我猜测它是杀戮线的一部分。
这是一个示例错误
/start.sh: line 15: [: 3183: binary operator expected
这最终会将此错误抛出到看起来很糟糕的终端。可能会忽略它,因为它否则会做它的工作,但这会很草率,并且有可能其他一些条件破坏脚本,所以理想情况下我需要修复它。
谢谢你的帮助