这让我抓狂了!
我一直在轰炸不朽者来停止一个进程,这样我就可以更新它,但是它......不会停止......那个进程是不朽的(双关语)!
我正在尝试停止 .NET Core MVC 应用程序:
我试过了:
immortalctl stop <process-name>
immortalctl stop <process-id>
sudo immortalctl stop <process-name>
sudo immortalctl stop <process-id>
sudo immortalctl -k <process-id>
sudo immortalctl -k <process-name>
immortalctl -k <process-id>
immortalctl -k <process-name>
set IMMORTAL_EXIT=exit sudo immortalctl exit run
sudo IMMORTAL_EXIT=exit immortalctl exit run
(其中运行是进程名称 - 参见图片)。sudo immortalctl halt "*"
大约 5 秒后它就会恢复运行。
以下是文档:
https://immortal.run/post/immortalctl/
这是当前的终端:
有任何想法吗?
答案1
停止/启动/重新启动都取决于你如何启动进程(如果使用不朽目录简单的方法就是从您作为参数传递的目录中删除run.yml
或重命名,或者在调用(可能)检查时定义run.yml-off
immortaldir
/etc/immortal
如何安装和设置更多细节
$USER
如果你使用你的(非 root)运行该进程,你可以删除该$HOME/.immortal
目录(这也会停止其他进程)
要管理流程,您可以使用immortalctl
,在您的情况下,run
如果您想停止它,则只需执行以下操作:
# immortalctl stop run
或者
$ sudo immortalctl stop run
在这种情况下,run
是您的服务名称,也是您的服务配置的名称,可能位于/etc/immortal/run.yml
请记住,immortal
如果您使用以下内容,将尽力使您的流程永远保持正常运行:
# immortalctl -k run
这只会向您的进程发送一个终止信号,但immortal
会重新启动它,您可能已经注意到 PID 发生了变化。
当使用immortaldir
选项exit
或halt
行为更像是重新启动时,它们确实正在退出或停止(停止并退出管理器),但immortaldir
会重新启动您的应用程序,因为其想法是让您的应用程序始终运行。
答案2
这是一种意想不到的方法:
sudo immortalctl
通过执行, (不带 sudo)获取进程 IDimmortalctl
。 两种方法都会产生不同的结果。- 然后做
immortalctl exit <pid-of-sudo-immortalctl>
。
这应该可以阻止它。
另请参阅:
答案3
尝试killall immortal
一下,结束pid。