您希望能够将 SIGTERM 发送到正在运行的进程:
kill <PID>
并且该进程应处理它以正确关闭。
不幸的是, .NET Core的 文档不完善,但是它能够处理Unix信号(与 Mono的
方式不同)。GitHub问题
如果将 Ubuntu 与 Upstart 一起使用,则需要一个初始化脚本,该脚本在停止请求上发送 kill
信号:初始化脚本示例
向您的 project.json 添加一个依赖项:
"System.Runtime.Loader": "4.0.0"
这将为您提供 AssemblyLoadContext 。
然后,您可以处理SIGTERM事件:
AssemblyLoadContext.Default.Unloading += MethodInvokedOnSigTerm;
注意:
使用Mono,正确的处理方式是通过 UnixSignal : Mono.Unix.Native.Signum.SIGTERM
编辑:
正如@Marc在最近的回答中指出的那样,这不再是实现此目标的最佳方法。从 .NET Core 2.0开始
AppDomain.CurrentDomain.ProcessExit
是受支持的事件。
我试图在我的Android应用程序中执行ping命令,并能够取消它/发送中断信号。基本上,我希望在任何普通的linux中,当你发送ctrl c到ping时,都能得到ping统计数据。我读过Send Ctrl-C to process open by Java,但它针对的是Windows平台,而tbh似乎有点过头了。我执行命令的代码(我使用的是rxjava): 以及开始/取消: 到目前为止,我试图终
我有一个用PHP编写的守护进程(不是最好的语言,但与我一起工作),它用于从队列接收作业,并在需要完成作业时处理它们。对于每个新作业,我使用pcntl_fork()将作业分叉到子进程中。在这个子进程中,我然后使用proc_open()执行用于音频转码的长时间运行的系统命令,完成后直接返回到子进程。作业完成后,子进程退出并由父进程清理。 为了保持这个守护进程始终运行,我使用upstart。这是我的暴发
我使用Spring Boot Gradle插件启动Tomcat服务器&我的应用程序。我通过启动Tomcat服务器。我还启用了Gradle守护进程,希望能让Gradle构建更快。
问题内容: 我正在编写Linux守护程序。我发现了两种方法。 通过调用和设置守护进程。 使用运行程序。 哪个是正确的方法? 问题答案: 来自http://www.steve.org.uk/Reference/Unix/faq_2.html#SEC16 以下是成为守护程序的步骤: 1. fork(),以便父级可以退出,这会将控制权返回给命令行或shell来调用您的程序。需要执行此步骤,以确保新流程不
我试图使用tomcat目录中的关闭tomcat。但发现服务器没有正确关闭。因此无法重新启动 我的tomcat正在端口上运行。 我想杀死在上运行的tomcat进程。我首先想要拥有在特定端口(8080)上运行的进程列表,以便选择要杀死哪个进程。
本文向大家介绍linux下的守护进程,包括了linux下的守护进程的使用技巧和注意事项,需要的朋友参考一下 Linux下的常驻进程的作用不可忽略,但这里面的问题也不能忽略,怎么启动进程,怎么结束进程,怎么在进程挂掉之后重启进程都要设计的合理。下面看一个shell控制的php常驻进程的例子。 不废话,直接捞干货,上代码,通过代码来讲解更容易理解: 只里面有几个要强调的地方: 我用这个shell去调用