Linux下有時候我們希望某個程序可以一直在後臺執行,很多都是使用& 在程序命令結尾來讓程序自動運行。
例如:
[root@lbogon roy]# ./test.sh &
但是這樣子在終端關閉的時候,程序也會隨之停止,此時我們可以使用nohup命令:
nohup command &
例如:
[root@lbogon roy]# nohup ./test.sh &
這樣的話雖然終端關閉後,程序不會停止,但是如果程序執行過程中報錯,出現了logout,程序也會隨之終止。所以如果我們希望程序可以一直在後臺運行,無論是否報錯,可以使用下面這個命令:
[root@lbogon roy]# nohup ./etl_rece.sh >etl_rece.out 2>&1 &
爲什麼這麼寫有用,我們需要知道Linux操作系統中有三個常用的流:
0:標準輸入流 stdin
1:標準輸出流 stdout
2:標準錯誤流 stderr
一般當我們用 > console.txt,實際是 1>console.txt的省略用法;< console.txt ,實際是 0 < console.txt的省略用法,所以上條命令中>output.log是將輸出寫入到output.log文件中,2>&1意思是把標準錯誤(2)重定向到標準輸出中(1),即標準輸出以及錯誤輸出都在etl_rece.out文件中,程序執行出現錯誤也不會終止。
延伸
1.當在後臺運行了程序的時候,可以用jobs命令來查看後臺作業的狀態。在有多個後臺程序時,要使用來參數的fg命令將不同序號的後臺作業切換到前臺上運行。
[root@lbogon roy]# jobs
[root@lbogon roy]# fg %1
2.常用的weblogic啓動server命令: