簡體   English   中英

如何防止Nohup殺死等待stdin linux的java進程

[英]how to keep nohup from killing java process that waits for stdin linux

我有一個在命令行(Bash Linux)上執行的Java程序。 一旦執行,程序將繼續運行,讀取標准輸入,直到用戶輸入“退出”為止。

有時,我想nohup該程序,以便即使關閉遠程連接也可以繼續運行。 問題是,當我嘗試按以下所示對程序進行nohup時,似乎其輸入stdin的提示會殺死nohup並終止該程序。

示例:$ nohup java -jar myApp.jar

我嘗試將程序的輸出重定向到其他建議的2> / dev / null以及使用在后台運行。 兩者都不能阻止nohup被殺死。

我不能使用disown,因為一旦運行該程序,我將失去命令提示符。

要使您的程序在后台運行,請運行tmux

tmux

這將打開一個tmux shell,您可以在其中運行程序:

java -jar myApp.jar

然后,要與tmux會話分離,請鍵入ctrl-b然后輸入d 您的程序將繼續在后台運行。

要在以后重新連接到程序的外殼程序(殺死它或查看其輸出),請運行tmux attach

盡管tmux解決了我的問題,但我一直四處閑逛並玩弄disown,直到我開始使用它。 我可以通過注銷一個超長睡眠命令(在此線程中建議),在后台運行它,然后運行disown ,使注銷后的Java進程保持運行狀態 像這樣:

$ sleep 999999999 | java -jar myApp.jar&

$舍棄

因此,我將堅持使用tmux ,但我只是想分享一下,因為它可以很好地解決我的問題。

暫無
暫無

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

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