通过 Jenkins 杀死特定端口上的所有进程

1 bash shell kill fuser jenkins

我想要一个 Jenkins 作业来杀死端口 5000 (bash) 上的所有进程。简单的解决方案

fuser -k 5000/tcp
Run Code Online (Sandbox Code Playgroud)

当我在终端中执行此命令时工作正常,但在 Jenkins(“执行 shell”)上将构建标记为失败。

我也尝试过

kill $(lsof -i -t:5000)
Run Code Online (Sandbox Code Playgroud)

但同样,因为它在常规终端上工作,所以在詹金斯上我得到

kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
Build step 'Execute shell' marked build as failure
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这一问题?

小智 6

我也遇到了同样的问题。当进程未运行时它不起作用。bash刚刚做到了,但是詹金斯失败了。

您可以向 jenkins 作业添加|| true,以指示 jenkins 在 bash 命令失败时继续执行该作业。

所以就是:

fuser -k 5000/tcp || true
Run Code Online (Sandbox Code Playgroud)

另请参阅如果执行 shell 失败,则不要使 jenkins 构建失败