首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jenkins无法终止进程:不允许操作

Jenkins无法终止进程:不允许操作
EN

Server Fault用户
提问于 2022-07-23 01:22:23
回答 1查看 646关注 0票数 0

我在centos9Server中使用Jenkins。我的意图是Jenkins将杀死现有的Java进程,并重新启动新的build。以前,我对centos 8使用了相同的命令,但是在安装Centos 9之后,我就面临着这个问题。

代码语言:javascript
运行
复制
process=`ps -ef | grep -v awk | awk -e '/java.*iqa/ { print $2 }'`
kill -9 ${process}

下面的错误信息,我得到。怎么才能解决?

代码语言:javascript
运行
复制
++ ps -ef
++ grep -v awk
++ awk -e '/java.*iqa./ { print $2 }'
+ process=57623
+ kill -9 57623
/tmp/jenkins15731163701833690666.sh: line 4: kill: (57623) - Operation not permitted
Build step 'Execute shell' marked build as failure
EN

回答 1

Server Fault用户

发布于 2022-07-23 03:30:33

apropos kill errno和阅读手册上的杀灭系统调用和错误代码。不允许操作的是EPERM。每man 2 kill

要使进程具有发送信号的权限,它必须具有特权(在Linux下:在目标进程的用户名称空间中具有CAP_KILL功能),或者发送进程的实际或有效用户ID必须等于目标进程的真实或保存的设置用户ID。

检查PID和jenkins shell,看看用户是如何不同的。还可以查看使用SELinux的ps Z上下文。不同的用户一般都是一件好事,它提供了更好的隔离。在这种情况下,在部署工具和它安装的应用程序之间。

考虑在服务管理器中运行应用程序。在这样的系统Linux系统上,服务单元是一种选择。在编写了这样一个单元之后,您可以给jenkins用户通过PolicyKit规则访问管理单元。当然,对jenkins脚本进行相应的更改,以运行systemctl命令来管理服务。将使ps和杀死命令过时,更好地处理单元进程。

将其移动到服务管理器中,就可以控制要运行的用户。您将在此单元上进一步增强和启用PrivateUsers=DynamicUser=,将Java用户与系统的其他部分完全断开。詹金斯仍然可以停下来开始服务。

与系统一起使用的主要缺点是,它不能移植。对于非Linux系统,您将需要一些其他解决方案。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1106375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档