nohup 忽略 nohup.out 輸出


最近項目中使用的springboot打的jar包,放到服務器上跑,為了防止關閉終端窗口導致程序掛掉,采用nohup和&組合命令來操作

命令如下 :

nohup java -jar test.jar &
但是這種方式啟動項目會默認生成一個nohup.out的文件來記錄日志,而且這個文件太占磁盤內存了,幾天下來發現這個文件大小有好幾個G,所以為了減少磁盤被大量消耗,決定啟動項目時不輸出nohup.out文件。

解決方案如下:

只輸出錯誤信息到日志文件 

nohup java -jar yourProject.jar >/dev/null 2>log & 

什么信息也不要 
 

nohup java -jar yourProject.jar >/dev/null 2>&1 & 
下面是幾個注解:

使用&后台運行程序:

結果會輸出到終端

使用Ctrl + C發送SIGINT信號,程序免疫

關閉session發送SIGHUP信號,程序關閉

使用nohup運行程序:

結果默認會輸出到nohup.out

使用Ctrl + C發送SIGINT信號,程序關閉

關閉session發送SIGHUP信號,程序免疫

文件描述符

當執行shell命令時,會默認打開3個文件,每個文件有對應的文件描述符來方便我們使用:

 

所以我們平時在執行shell命令中,都默認是從鍵盤獲得輸入,並且將結果輸出到控制台上。但是我們可以通過更改文件描述符默認的指向,從而實現輸入輸出的重定向。比如我們將1指向文件,那么標准的輸出就會輸出到文件中。

輸出重定向

輸出重定向的使用方式很簡單,基本的一些命令如下:

 

1. >/dev/null

這條命令的作用是將標准輸出1重定向到/dev/null中。 /dev/null代表linux的空設備文件,所有往這個文件里面寫入的內容都會丟失,俗稱“黑洞”。那么執行了>/dev/null之后,標准輸出就會不再存在,沒有任何地方能夠找到輸出的內容。

2. 2>&1

這條命令用到了重定向綁定,采用&可以將兩個輸出綁定在一起。這條命令的作用是錯誤輸出將和標准輸出同用一個文件描述符,說人話就是錯誤輸出將會和標准輸出輸出到同一個地方。

linux在執行shell命令之前,就會確定好所有的輸入輸出位置,並且從左到右依次執行重定向的命令,所以>/dev/null 2>&1的作用就是讓標准輸出重定向到/dev/null中(丟棄標准輸出),然后錯誤輸出由於重用了標准輸出的描述符,所以錯誤輸出也被定向到了/dev/null中,錯誤輸出同樣也被丟棄了。執行了這條命令之后,該條shell命令將不會輸出任何信息到控制台,也不會有任何信息輸出到文件中。
————————————————
版權聲明:本文為CSDN博主「it_erge」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/it_erge/article/details/90799556


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM