草庐IT

linux - systemd:启动后立即出现 SIGTERM

我是第一次尝试systemd。我想在系统启动时启动一个进程。我在启动和运行它时遇到了问题。systemd应该运行脚本(start.sh)。该脚本在后台启动一个进程(我们称之为P)并以代码0退出。P一直运行直到信号发生。如果我手动运行start.sh一切正常。如果我让它由systemd启动,P在启动后立即得到一个SIGTERM并终止。所以它开始了,但是信号呢?它终止了P,我不确定它的起源和原因是什么。也许我的单位是错误的,但我不知道如何设置它以满足我的需要。我尝试了服务类型简单、空闲和一次性。感谢您的帮助!克里斯这是我的单位。[Unit]Description=TestAfter=ssh

ruby - Thin 不响应 SIGINT 或 SIGTERM

bundleexecthinstart-p3111给出以下输出:UsingrackadapterThinwebserver(v1.2.11codenameBat-ShitCrazy)Maximumconnectionssetto1024Listeningon0.0.0.0:3111,CTRL+Ctostop^CCtrl-C不执行任何操作(SIGINT)。也不会kill(SIGTERM)。我找到了一些关于此行为的引用资料,但没有找到解决方案。问题似乎出在eventmachine(与最新的thin捆绑在一起)、ruby1.9.2-r290或linux内核(Ubuntu10.4LTS、2.6

java - Selenium 服务器在被 SIGTERM 杀死后不绑定(bind)到套接字

在被杀死一次后,selenium服务器在所有进一步启动时挂起,甚至没有尝试获取服务器端口。重启解决问题。以不同的用户身份运行也会使selenium再次启动,但是在那个进程被杀死后它就不再工作了。这是在VirtualBoxVM中的Linux2.6.32-5-amd64(debiansqueeze)上。在working时查看系统调用的日志和whenit'snot,某些组件似乎在套接字绑定(bind)之前就锁定了。seleniumlog没有太大帮助。输出也没有给出任何指示:$java-jarselenium-server-standalone-2.28.0.jarDec27,20125:41

python - 在 Linux 下的 Python/GTK 中检测用户注销/关机 - 未收到 SIGTERM/HUP

好吧,这大概是一个困难的问题,我有一个pyGTK应用程序,它由于我无法捕获/控制的XWindow错误而随机崩溃。所以我创建了一个包装器,一旦检测到崩溃就会重新启动应用程序,现在问题来了,当用户注销或关闭系统时,应用程序以状态1退出。但是在一些X错误上它确实如此也是。所以我几乎尝试了任何方法来捕捉关机/注销,但没有成功,这是我尝试过的:importpygtkimportgtkimportsysclassTest(gtk.Window):defdelete_event(self,widget,event,data=None):open("delete_event","wb")defdest

linux - 考虑进程树的 SIGKILL SIGTERM 之间的区别

SIGTERM和SIGKILL在进程树方面有什么区别?当根线程收到SIGKILL时,它会被彻底杀死还是让其子线程成为僵尸?是否有任何信号可以发送到根线程以在不留下任何僵尸线程的情况下干净地退出?谢谢。 最佳答案 如果你杀死根进程(父进程),这应该会产生孤儿,而不是僵尸child。当您杀死进程的父进程时,就会产生孤儿,内核使init成为孤儿的父。init应该等到孤儿死亡,然后使用wait来清理它。当一个进程(不是它的父进程)结束并且它的父进程没有从进程表中占据它的退出状态时,就会创建僵尸子进程。在我看来,您似乎担心留下孤儿进程,因为根

docker - 通过发送 SIGTERM 停止正在运行的 Docker 容器

我有一个非常简单的Go应用程序正在监听端口8080http.HandleFunc("/",func(whttp.ResponseWriter,r*http.Request){w.WriteHeader(200)w.Header().Set("Content-Type","text-plain")w.Write([]byte("HelloWorld!"))})log.Fatal(http.ListenAndServe(":8080",http.DefaultServeMux))我将它安装在Docker容器中并像这样启动它:FROMgolang:alpineADD./go/src/gith

Python:SIGTERM 的默认处理是什么?

如果Python接收到SIGTERM但没有为其注册信号处理程序,默认情况下会在幕后做什么? 最佳答案 基于ThomasWouters的回答,python没有为SIGTERM信号注册处理程序。我们可以这样做:In[23]:signal.SIG_DFL==signal.signal(signal.SIGTERM,signal.SIG_DFL)Out[23]:True这意味着系统将采取默认操作。在linux上,SIGTERM的默认操作(根据thesignalmanpage)是终止进程。终止进程意味着:进程将不再被分配任何可以执行代码的时间

java - 我如何干净地关闭嵌入式 JRuby 以响应 JVM 进程的 SIGTERM?

我正在使用org.jruby.embed.ScriptingContainerAPI在JVM进程内的JRuby上运行Middleman(使用Webrick)服务器。如果我完全关闭并从JVM内部停止服务器,一切都会按预期工作。但是,如果我向JVM进程发送SIGTERM(例如,通过在命令行中按ctrl+C),控制台会返回,但JVM进程不会终止——它会无限期地挂起,直到我向它发送SIGKILL。我尝试注册一个JVM关闭Hook来终止ScriptingContainer实例,但该Hook从未触发。我不知道为什么......也许JRuby正在以某种方式吞下SIGTERM?我怎样才能让JVM彻底关

java - 使用 'docker stop' 和官方 java 镜像的 java 进程未收到 SIGTERM

我正在使用基于debian/jessie的图像java:7u79在Docker容器中运行dropwizardJava应用程序。我的Java应用程序处理SIGTERM信号以正常关闭。当我在没有Docker的情况下运行应用程序时,SIGTERM处理非常完美。当我在Docker容器中运行它时,当我发出dockerstop命令时,SIGTERM不会到达Java应用程序。它会在10秒后突然终止进程。我的Dockerfile:FROMjava:7u79COPYdropwizard-example-1.0.0.jar/opt/dropwizard/COPYexample.keystore/opt/d

linux - SIGINT 与 SIGTERM、SIGQUIT 和 SIGKILL 等其他终止信号有何关系?

在POSIX系统上,终止信号通常具有以下顺序(根据许多MAN页面和POSIX规范):SIGTERM-礼貌地要求进程终止。它应该优雅地终止,清理所有资源(文件、套接字、子进程等),删除临时文件等等。SIGQUIT-更有力的请求。它将不优雅地终止,仍然清理绝对需要清理的资源,但可能不会删除临时文件,可能会在某处写入调试信息;在某些系统上,还会写入核心转储(无论信号是否被应用捕获)。SIGKILL-最有力的请求。该进程甚至没有被要求做任何事情,但系统会清理该进程,不管它是否喜欢。很可能已写入核心转储。SIGINT是如何融入这张图片的?当用户点击CRTL+C时,CLI进程通常由SIGINT终止