Linux連線斷掉時,防止執行的jar包程序死亡(nohup、&命令)
(一)先來了解一下nohup和&命令:
&
當在前臺執行某個作業時,終端被該作業佔據;可以在命令後面加上& 實現後臺執行。例如:sh test.sh &
適合在後臺執行的命令有f i n d、費時的排序及一些s h e l l指令碼。在後臺執行作業時要當心:需要使用者互動的命令不要放在後臺執行,因為這樣你的機器就會在那裡傻等。不過,作業在後臺執行一樣會將結果輸出到螢幕上,干擾你的工作。如果放在後臺執行的作業會產生大量的輸出,最好使用下面的方法把它的輸出重定向到某個檔案中:
command > out.file 2>&1 &
這樣,所有的標準輸出和錯誤輸出都將被重定向到一個叫做out.file 的檔案中。
nohup
使用&命令後,作業被提交到後臺執行,當前控制檯沒有被佔用,但是一但把當前控制檯關掉(退出帳戶時),作業就會停止執行。nohup命令可以在你退出帳戶之後繼續執行相應的程序。nohup就是不掛起的意思( no hang up)。該命令的一般形式為:
nohup command &
(二)將程序設定成後臺執行
1、在使用 java -jar 命令執行jar包後,Linux伺服器終端連線斷掉,jar包的執行程序也會斷掉,這是我們不希望看到的結果。所以,為了防止程序中斷,可以使用nohup命令讓程序在後臺執行,即使終端連線斷開,也不會對其造成影響。
nohup命令會將桌面輸出改為輸出到“nohup.out”檔案(預設檔案,也可自定義指定輸出檔案)中,相當於是log的作用。
[[email protected] java]# nohup java -jar MelifeTest.jar &
2、Linux下還有一個特殊的檔案/dev/null,它就像一個無底洞,所有重定向到它的資訊都會消失得無影無蹤。這一點非常有用,當我們不需要回顯程式的所有資訊時,就可以將輸出重定向到/dev/null。
如果想要正常輸出和錯誤資訊都不顯示,則要把標準輸出和標準錯誤都重定向到/dev/null, 例如:
~]# nohup java -jar MelifeTest.jar >/dev/null 2>&1
3、將錯誤輸出到“黑洞”
[[email protected] java]# nohup java -jar MelifeTest.jar 2>/dev/null
4、>/dev/null 2>&1預設情況是1,也就是等同於1>/dev/null 2>&1。意思就是把標準輸出重定向到“黑洞”,還把錯誤輸出2重定向到標準輸出1,也就是標準輸出和錯誤輸出都進了“黑洞” 。
[[email protected] java]# nohup java -jar MelifeTest.jar >/dev/null 2>&1
5、將錯誤輸出2重定向到標準出書1,也就是螢幕,標準輸出進了“黑洞”,也就是標準輸出進了黑洞,錯誤輸出列印到螢幕 。
(先執行一下第一條命令,再執行第二條,直接執行第二條命令會出現這種情況:按Ctrl+C程序立即死亡)
[[email protected] java]# nohup java -jar MelifeTest.jar &
[[email protected] java]# nohup java -jar MelifeTest.jar 2>&1 >/dev/null
(三)相關快捷鍵
使用了nohup之後,很多人就這樣不管了,其實這樣有可能在當前賬戶非正常退出或者結束的時候,命令還是自己結束了。所以在使用nohup命令後臺執行命令之後,需要使用exit正常退出當前賬戶,這樣才能保證命令一直在後臺執行。
ctrl + z
可以將一個正在前臺執行的命令放到後臺,並且處於暫停狀態。
Ctrl+c
終止前臺命令。
jobs
檢視當前有多少在後臺執行的命令。
jobs -l選項可顯示所有任務的PID,jobs的狀態可以是running, stopped, Terminated。但是如果任務被終止了(kill),shell 從當前的shell環境已知的列表中刪除任務的程序標識。
參考博文:
相關推薦
Linux連線斷掉時,防止執行的jar包程序死亡(nohup、&命令)
(一)先來了解一下nohup和&命令: & 當在前臺執行某個作業時,終端被該作業佔據;可以在命令後面加上& 實現後臺執行。例如:sh test.sh & 適合在後臺執行的命令有f i n d、費時的排序及一些s h e l l指令碼
Linux連線斷掉時,防止執行的jar包程序死亡(nohup、&命令)
(一)先來了解一下nohup和&命令: & 當在前臺執行某個作業時,終端被該作業佔據;可以在命令後面加上& 實現後臺執行。例如:sh test.sh & 適合在後臺執行的命令有f i n d、費時的排序及一些s h e l
linux利用crontab設定定時任務執行jar包
https://www.cnblogs.com/fxl-njfu/p/8182545.html 戶 https://www.cnblogs.com/ldy-blogs/p/8477550.html 用Linux的定時器: 1.crontab -e 按i鍵編輯這個文字檔案 0 0 */
Maven打war包時,新增本地jar包
1、在專案根目錄中新建lib資料夾,新增jar包 2.在pom.xml檔案中新增dependency <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc8</art
hadoop叢集執行jar包報錯(eclipse導jar)
報錯日誌: Exception in thread "main" java.lang.UnsupportedClassVersionError: com/hdfs/wordcount/WordcountDriver has been compiled by a more recent v
Maven專案POM配置好後,下載jar包位置設定(本地倉庫配置)
新建了一個maven專案,發現所有的jar包沒有載入、、檢查了一遍才發現原來在maven的.setting檔案沒有配置本地倉庫。maven目錄/conf/.setting.xml裡新增如下地址(沒有目錄需要建立):解決問題
JavaScript--我發現,原來你是這樣的JS(初識、源泉)
pac 發現 .com -- rip php script album 原來 http://pic.cnhubei.com/space.php?uid=4614&do=album&id=1384727http://pic.cnhubei.com/space.
jar包的使用(maven依賴庫)
1、會開發的都會的----第一種是最簡單的新建libs將jar包放入然後add as library。 2、maven遠端倉庫新增依賴庫 接觸到這個問題要從之前從github上下載個專案,想重新整理到自己寫的專案中要用到其中的jar包,沒有找到libs。百度ing。。。直
nodejs連線Access資料庫,出現Error: Spawn C:\WINDOWS\SysWOW64\cscript.exe error Java專案生成可執行jar包、exe檔案以及在Windows下的安裝檔案
因為集成了第三方的資料庫,所以需要獲取資料庫的資料 使用 var connection = ADODB.open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+config.id_path+';');  
在Linux伺服器上執行jar包,並且使jar包一直處於後臺執行
1.我jar包在linux的目錄為/a/bbb.jar 正常情況下,使用在/a目錄下使用 java -jar bbb.jar 可以直接執行該jar包的專案,執行成功之後使用crtl+c可以退出專案執行,
在Linux服務器上運行jar包,並且使jar包一直處於後臺執行
服務器 關閉 原創 目的 滿足 sdn http 也會 jar 1.我jar包在linux的目錄為/a/bbb.jar 正常情況下,使用在/a目錄下使用 java -jar bbb.jar 可以直接運行該jar包的項目,運行成功之後使用crtl+c可以退出
關於引用第三方jar包,生成自己jar包執行時找不到第三方jar包的解決方案
1.將所需的第三方jar包匯入專案檔案中的lib目錄下 2.在專案檔案目錄下建立MANIFEST.MF檔案,編輯檔案,如下圖: 注意: (1)Mainifset-Version:/Class-Pat
android程式碼混淆時,如何防止第三方jar包被混淆導致程式出錯
程式碼混淆是給其他人破解自己的程式帶來更多困難,但混淆不能影響我們程式的正常執行.最近在程式碼混淆時出現一個問題:就是第三方jar被混淆時出現程式錯誤,錯誤主要是說找不到相關的類. 這個問題也不奇怪,我們要使用的第三方jar包被混淆成我們程式不能認識的程式碼
用jdbc技術連線資料庫時,要匯入相應驅動程式的jar包
比如,我用jdbc技術連線mysql資料庫時,要匯入jdbc廠商提供的mysql的驅動程式包中的jar包。具體步驟如下: 在專案目錄,下新建一個資料夾,命名為lib 在網上下載mysql-connector-java-5.1.45.jar.(或者更高的版本),複製到lib
使用maven時,如何修改JVM的配置參數;maven命令執行時到底消耗多少內存?
option oca sin port more https exe exc style maven是使用java啟動的,因此依賴JVM,那麽如何修改JVM參數? MAVEN_OPTS 在系統的環境變量中,設置MAVEN_OPTS,用以存放JVM的參數,具體設置的步
一個DOM元素綁定多個事件時,先執行冒泡還是捕獲
msg 元素 .org tro code 常見 xxx == 添加 綁定在被點擊元素的事件是按照代碼順序發生,其他元素通過冒泡或者捕獲“感知”的事件,按照W3C的標準,先發生捕獲事件,後發生冒泡事件。所有事件的順序是:其他元素捕獲階段事件 -> 本元素代碼順序事件 -
將 Spring boot 項目打成可執行Jar包,及相關註意事項(main-class、缺少 xsd、重復打包依賴)
arc XA 有一個 文件中 pom.xml tomcat 我們 tool pil 最近在看 spring boot 的東西,覺得很方便,很好用。對於一個簡單的REST服務,都不要自己部署Tomcat了,直接在 IDE 裏 run 一個包含 main 函數的主類就可以了
jenkins 部署 並執行npm run dev 專案時,execute shell自動結束程序問題
使用 jenkins 部署 vue (npm run dev)專案時,部署狀態是顯示部署成功,但是服務沒有成功啟動,在做程序服務監控的時候發現,jenkins部署時候服務也啟動成功了,但是jenkins部署成功後 自動kill殺死或結束該程序和該程序的衍生的程序,那麼就讓jenkins不
【Web篇03】Spring框架下,servlet響應的res在jsp頁面中顯示時,防止亂碼的操作
首先,在Spring軟體中,找到Web工程,src下的對應的servlet; 在servlet中獲取請求引數之後,給瀏覽器傳送響應之前; 需要鍵入一段程式碼即可,如下: response.setContentType("text/html;charset=UTF-8"); 括號內的
Win10遠端桌面連線winserver2012時, 出現 身份驗證錯誤,要求的函式不受支援,這可能是由於CredSSP加密Oracle修正 解決方法
解決方法: 執行 gpedit.msc 本地組策略: 計算機配置>管理模板>系統>憑據分配>加密Oracle修正 選擇啟用並選擇易受攻擊。 如果是家庭版什麼的,可能無法直接開啟組策略編輯器;可以試著在登錄檔裡,自己手動建立 H