Linux-nohup和&用法
阿新 • • 發佈:2021-09-15
nohup和&用法
目錄簡介
-
nohup 是 no hang up 的縮寫,意思是不掛斷執行(指退出賬號),永久執行下去,但是注意並沒有後臺執行的功能。
-
& 是在後臺執行的意思
nohup Command [ Arg ... ] [ & ]
單獨使用nohup
nohup執行命令可以使命令永久的執行下去,和使用者終端沒有關係,中斷開SSH連線都不會影響他的執行,注意了nohup沒有後臺執行的意思
-
前面不顯示程序號
-
有一個 "忽略輸入,輸出至nohup.out" 的提示
-
輸出不會出現在前臺
-
關掉SSH連線,程式不會關閉
-
Ctrl +C,程式收到SIGINT訊號後,直接關閉
檢視nohup.out檔案,發現程式的輸出結果躺在nohup.out中
指定輸出到檔案中
nohupCommand & 預設輸出到nohup.out檔案
nohup Command > outputfile 2>&1 & 指定輸出到output檔案
# 一個 > 就行
> 代表重定向到哪裡,如 echo "123" > ./123.txt
作業系統中有三個常用的流:
- 0:標準輸入流 stdin
- 1:標準輸出流 stdout
- 2 :標準錯誤流 stderr
2>&1的意思
把標準錯誤(2)重定向到標準輸出中(1),而標準輸出又匯入檔案output裡面,所以結果是標準錯誤和標準輸出都匯入檔案output裡面了。 至於為什麼需要將標準錯誤重定向到標準輸出的原因,那就歸結為標準錯誤沒有緩衝區,而stdout有
單獨使用&
&是指在後臺執行,當中斷SSH時,命令自動也跟著退出
-
前面會顯示程序號
-
鍵入Ctrl + C,發出SIGINT訊號,程式會繼續執行
-
關掉SSH連線,程式收到SIGINT訊號後,直接關閉
使用nohup和&聯合執行
nohup COMMAND &
使得命令永久的在後臺執行
特點:
-
終端顯示中會出現程序號
-
出現 "忽略輸入,輸出至nohup.out" 的提示
-
鍵入Ctrl + C,傳送SIGINT訊號,不會關閉
-
關閉SSH連線,傳送SIGHUP訊號,不會關閉程序
總結
使用&後臺執行程式:
- 結果會輸出到終端
- 使用Ctrl + C傳送SIGINT訊號,程式免疫
- 關閉SSH,傳送SIGHUP訊號,程式關閉
使用nohup執行程式:
- 結果預設會輸出到nohup.out
- 使用Ctrl + C傳送SIGINT訊號,程式關閉
- 關閉SSH,傳送SIGHUP訊號,程式免疫
使用nohup和&配合來啟動程式:
- 同時免疫SIGINT和SIGHUP訊號