我已经进入了一个场景,在这个场景中,我想要停止自定义Azure VM中当前正在执行的java进程。虚拟机是一台由我们的基础设施配置的ubuntu机器。
我正在构建一个Azure连续部署管道,我想在其中部署VM中的最新版本。但是在我可以部署最新的构建之前,我需要停止之前构建的当前正在执行的Java进程。
我使用"Command Over 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化。
谢谢!
发布于 2020-03-19 05:45:02
“不允许操作”错误不是来自Azure。相反,这意味着您的ssh用户没有权限终止VM上的该进程。因此,现有进程由不同的用户运行,而不是由您用于ssh的用户运行。
可能的解决方法-在您的旧部署中包含某种类型的cron,它将扫描触发器文件(例如/tmp/ kill myprocess.rigger),如果该文件存在,将杀死它。
然后在新的部署中,您所要做的就是
touch /tmp/killmyprocess.triggerhttps://stackoverflow.com/questions/60738618
复制相似问题