原文出處
nohub java -jar xx.jar >/dev/null 2>&1 &
Linux 運行jar包命令如下:
方式一:
java -jar XXX.jar
特點:當前ssh窗口被鎖定,可按CTRL + C打斷程序運行,或直接關(guān)閉窗口,程序退出
那如何讓窗口不鎖定?
方式二
java -jar XXX.jar &
&代表在后臺運行。
特定:當前ssh窗口不被鎖定,但是當窗口關(guān)閉時,程序中止運行。
繼續(xù)改進,如何讓窗口關(guān)閉時,程序仍然運行?
方式三
nohup java -jar XXX.jar &
nohup 意思是不掛斷運行命令,當賬戶退出或終端關(guān)閉時,程序仍然運行
當用 nohup 命令執(zhí)行作業(yè)時,缺省情況下該作業(yè)的所有輸出被重定向到nohup.out的文件中,除非另外指定了輸出文件。
方式四
nohup java -jar XXX.jar >temp.txt &
解釋下 >temp.txt
command >out.file
command >out.file是將command的輸出重定向到out.file文件,即輸出內(nèi)容不打印到屏幕上,而是輸出到out.file文件中。
可通過jobs命令查看后臺運行任務(wù)
jobs
那么就會列出所有后臺執(zhí)行的作業(yè),并且每個作業(yè)前面都有個編號。
如果想將某個作業(yè)調(diào)回前臺控制,只需要 fg + 編號即可。
fg 23
Shell腳本———— /dev/null 2>&1詳解
1、可以將/dev/null看作"黑洞". 它非常等價于一個只寫文件. 所有寫入它的內(nèi)容都會永遠丟失. 而嘗試從它那兒讀取內(nèi)容則什么也讀不到. 然而, /dev/null對命令行和腳本都非常的有用.
用處:
禁止標準輸出. 1 cat $filename >/dev/null # 文件內(nèi)容丟失,而不會輸出到標準輸出.
禁止標準錯誤. 2>/dev/null 這樣錯誤信息[標準錯誤]就被丟到太平洋去了.
2、1>/dev/null 2>&1的含義
代表重定向到哪里,例如:echo "123" > /home/123.txt
1 表示stdout標準輸出,系統(tǒng)默認值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr標準錯誤
& 表示等同于的意思,2>&1,表示2的輸出重定向等同于1
那么本文標題的語句:
1>/dev/null 首先表示標準輸出重定向到空設(shè)備文件,也就是不輸出任何信息到終端,說白了就是不顯示任何信息。
2>&1 接著,標準錯誤輸出重定向等同于 標準輸出,因為之前標準輸出已經(jīng)重定向到了空設(shè)備文件,所以標準錯誤輸出也重定向到空設(shè)備文件。
3、/dev/zero文件代表一個永遠輸出 0的設(shè)備文件,使用它作輸入可以得到全為空的文件。因此可用來創(chuàng)建新文件和以覆蓋的方式清除舊文件。
下面使用dd命令將從zero設(shè)備中創(chuàng)建一個10K大?。╞s決定每次讀寫1024字節(jié),count定義讀寫次數(shù)為10次),但內(nèi)容全為0的文件。
dd if=/dev/zero of=file count=10 bs=1024
shell中可能經(jīng)常能看到:>/dev/null 2>&1
命令的結(jié)果可以通過%>的形式來定義輸出
分解這個組合:“>/dev/null 2>&1” 為五部分。
1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt
2:/dev/null 代表空設(shè)備文件
3:2> 表示stderr標準錯誤
4:& 表示等同于的意思,2>&1,表示2的輸出重定向等同于1
5:1 表示stdout標準輸出,系統(tǒng)默認值是1,所以">/dev/null"等同于 "1>/dev/null"
因此,>/dev/null 2>&1 也可以寫成“1> /dev/null 2> &1”
那么本文標題的語句執(zhí)行過程為:
1>/dev/null :首先表示標準輸出重定向到空設(shè)備文件,也就是不輸出任何信息到終端,說白了就是不顯示任何信息。
2>&1 :接著,標準錯誤輸出重定向 到 標準輸出,因為之前標準輸出已經(jīng)重定向到了空設(shè)備文件,所以標準錯誤輸出也重定向到空設(shè)備文件。