【发布时间】:2014-09-27 10:48:34
【问题描述】:
我有一个连接到 Bitbucket 存储库的 Jenkins。当一些东西被推送到存储库时,詹金斯开始工作。该作业从存储库(server.py:它基本上是一个 bjoern 服务器)中获取所有数据。 我现在要做的是停止正在运行的 server.py-process 并使用更改的数据重新启动它。这应该通过 jenkins 运行的以下 bash 脚本来完成:
#!/bin/bash
PID=$(ps ax | grep 'server.py')
kill $PID
我的问题是我的 ubuntu 服务器上的 jenkins 用户无法杀死 server.py 进程。 怎样才能杀死进程?
或者是否可以通过函数调用捕获 server.py 进程并停止 bjoern 服务器实例?
【问题讨论】:
-
python 进程是否在您运行作业的同一台机器上运行?另外,您遇到了什么错误?
-
解决了编辑 /etc/sudoers.我添加了以下行“jenkins ALL = NOPASSWD:ALL”。我知道这不是很安全。如何限制在特定文件夹上调用 kill/sh/... 的权利?
-
我希望您一定已经浏览过
sudoers文件以及如何从其中提供的选项中受益。我不确定您所说的限制使用kill to a specific folder是什么意思。但是,您可以将其他命令的使用限制为特定文件夹,例如特定用户只能在给定文件夹(或子文件夹)中运行chmod或类似内容。问题是,如果您有一个完全由您管理的脚本,那么这些事情应该无关紧要as long as the script isn't doing something really bad。我的意思是rm之类的东西。 -
我还想提一提的是,当您尝试让某个应用程序运行命令时,在这种情况下,您应该始终尝试使用命令行运行命令一次,然后看看情况如何。在您满意之后,您才应该将这些责任交给其他人(例如Jenkins)。它还可以节省您可能花费在调试上的时间,因为将涉及更多变量。 :)
标签: python ubuntu jenkins kill