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

问题描述 投票:0回答:1

我已经进入一种情况,我想在自定义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。我不打算对部署进行Dockerize。

谢谢!

java azure devops continuous-deployment azure-vm
1个回答
0
投票

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

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

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

touch /tmp/killmyprocess.trigger
© www.soinside.com 2019 - 2024. All rights reserved.