1. 程式人生 > >linux下nohup命令——讓程式在遠端主機後臺執行

linux下nohup命令——讓程式在遠端主機後臺執行

  最近做的一個專案,需要登入到遠端主機進行執行除錯,採取的是talent遠端登入。進行了幾次實驗後發現當執行程式後關閉終端即關閉talent登入後程序有時候也會停止執行,這讓我很苦惱,本來想採取守護程序進行編寫程式,可是太麻煩,而且這樣時間上或許來不及了,所以上網查找了另外一種方法:

  用nohup命令啟動程式:

nohup <程式名> & 

提示:
  [~]$ appending output to nohup.out
則控制檯logout後,程序仍然繼續執行,起到守護程序的作用(雖然它不是嚴格意義上的守護程序)。
使用nohup命令後,原程式的的標準輸出被自動改向到當前目錄下的nohup.out檔案,起到了log的作用,實現了完整的守護程序功能。

nohup命令詳解:

nohup 命令
  用途:不掛斷地執行命令。
  語法:nohup Command [ Arg ... ] [ & ]
  描述:nohup 命令執行由 Command 引數和任何相關的 Arg 引數指定的命令,忽略所有結束通話(SIGHUP)訊號。在登出後使用 nohup 命令執行後臺中的程式。要執行後臺中的 nohup 命令,新增 & ( 表示“and”的符號)到命令的尾部。
  無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當前目錄的 nohup.out 檔案中。如果當前目錄的 nohup.out 檔案不可寫,輸出重定向到 $HOME/nohup.out 檔案中。如果沒有檔案能建立或開啟以用於追加,那麼 Command 引數指定的命令不可呼叫。如果標準錯誤是一個終端,那麼把指定的命令寫給標準錯誤的所有輸出作為標準輸出重定向到相同的檔案描述符。
  退出狀態:該命令返回下列出口值
  126 可以查詢但不能呼叫 Command 引數指定的命令。
  127 nohup 命令發生錯誤或不能查詢由 Command 引數指定的命令。
  否則,nohup 命令的退出狀態是 Command 引數指定命令的退出狀態。
  nohup命令及其輸出檔案
  nohup命令:如果你正在執行一個程序,而且你覺得在退出帳戶時該程序還不會結束,那麼可以使用nohup命令。該命令可以在你退出帳戶/關閉終端之後繼續執行相應的程序。nohup就是不掛起的意思( n ohang up)。
  該命令的一般形式為:nohup command &
  使用nohup命令提交作業
  如果使用nohup命令提交作業,那麼在預設情況下該作業的所有輸出都被重定向到一個名為nohup.out的檔案中,除非另外指定了輸出檔案:
  nohup command > myout.file 2>&1 &