停止在自定义Azure-VM中运行的Java进程

时间:2020-03-18 11:30:51

标签: java azure devops continuous-deployment azure-vm

我遇到了一种情况,其中我想停止自定义Azure VM中当前正在执行的Java进程。 VM是由我们的Infra配置的ubuntu计算机。

我正在构建一个Azure-连续部署管道,我想在其中部署VM中的最新版本。但是在部署最新版本之前,我需要关闭先前版本的当前正在执行的Java Process。

我当时使用“ SSH上的命令”来触发带有Java进程的进程ID的“ kill”信号,但是Azure禁止在管道中使用“ kill”命令。

日志

==============================================================================
Task         : SSH
Description  : Run shell commands or a script on a remote machine using SSH
Version      : 0.165.1
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/deploy/ssh
==============================================================================
Trying to establish an SSH connection to ***@<HOST>:22
Successfully connected.
chmod +x "./sshscript_158452036****"
"./sshscript_158452036****"
 ========** Stop currently executing process: 4381

##[error]./sshscript_158452036****: line 5: kill: (4381) - Operation not permitted

是否还有其他方法可以正常关闭Java进程。 要么 使用其他解决方案获得CD。 我不打算对部署进行Docker化。

谢谢!

1 个答案:

答案 0 :(得分:0)

“不允许的操作”错误不是来自Azure。相反,这意味着您的ssh用户无权在VM上终止该进程。因此,现有流程是由与您用于ssh的用户不同的用户运行的。

可能的解决方法-在您的旧部署中包含某种cron,它将扫描触发文件(例如/tmp/killmyprocess.trigger),如果存在该文件,则将其杀死。

然后在新部署中,您要做的就是

touch /tmp/killmyprocess.trigger
相关问题