簡體   English   中英

nohup進程在xterm關閉時退出,但在退出時退出

[英]nohup process dies on xterm close but not on exit

我有一個問題,其中一個簡單的nohup命令似乎行為異常。 我將其歸結為一個名為Sleep的小型Java應用程序,該應用程序

while (true) 
  Thread.sleep(10000).  

我正在按以下方式運行nohup:

nohup java Sleep.java >> nohup.log 2>&1 &

然后,我在另一個窗口中運行strace以查找信號,如下所示,尋找我的pid(12345)

strace -tt -p 12345 -enone -e 'signal=!sigchld'
Process 16582 attached - interrupt to quit

如果在我的原始窗口中鍵入“ exit”以關閉外殼,我會看到該過程繼續運行而沒有任何信號。 但是,如果我關閉膩子窗口(單擊菜單欄上的x),我會看到nohup的過程確實得到了SIGHUP

strace -tt -p 16582 -enone -e 'signal=!sigchld'
Process 16582 attached - interrupt to quit
14:54:03.271286 --- SIGINT (Interrupt) @ 0 (0) ---

我以為nohup應該攔截/不傳遞SIGHUP。 從那以后我切換到使用setsid,無論我如何關閉終端窗口,我都會得到正確的行為。 難道我做錯了什么? 似乎nohup不能正常工作,這在我正在處理的實際問題中引起了一些嚴重的問題。

關於在Java中處理此問題……請注意,盡管該線程暗示該方法可在任何OS上運行,但我懷疑Windows是否有信號: 忽略Java中的SIGINT

您也可以編寫自己的等效於nohup的代碼,而忽略SIGHUP和SIGINT。 或者,您也可以下載GNU nohup源並將其修改為也忽略SIGINT。

這可能不是Windows / putty問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM