Linux 后台運行命令:nohup 和 &


【參開文章】:nohup 與 & 的區別

1. nohup

1.1 基本概念

  將程序以忽略掛起信號的方式運行起來;

  不可以免疫 Ctrl + C  的 SIGINT 中斷信號;

  可以免疫 SIGHUP  的 掛斷信號;    

  測試:

  查看啟動腳本,兩個啟動方式只是日志打印的文件不一樣,命令執行效果一樣;

  

  程序啟動后卡在這里,如圖;

  

  重新打開一個終端,查看程序是否啟動:

  

  然后在啟動程序的終端執行 Ctrl + C ;

  

  再次查看程序啟動情況,發現進程已被終止;

  

 

  被運行的程序的輸出信息將不會顯示到終端。

  nohup 命令的如果沒有重定向輸出時,輸出都將附加到當前目錄的 nohup.out 文件中。

  如果當前目錄的 nohup.out 文件不可寫,輸出重定向到$HOME/nohup.out文件中。如果沒有文件能創建或打開以用於追加,那么 command 參數指定的命令不可調用。

  如果標准錯誤是一個終端,那么把指定的命令寫給標准錯誤的所有輸出作為標准輸出重定向到相同的文件描述符。

1.2 重定向

  將執行命令的輸出信息重定向到srart.log文件中;

  nohup command > start.log 2>&1 

2. &

2.1 基本概念

  在當前終端后台運行命令;

  可以免疫  Ctrl + C  的中斷信號;

  不可以免疫 SIGHUP  的 掛斷信號;

  當前用戶退出、掛斷或者ssh連接斷開的時候,命令也會自動退出;

2.2 用法

  command  &

  使用該方式執行命令的時候:

  命令執行時的輸出信息會打印到控制台,輸出信息打印完成之前不能被其他命令中斷,信息打印完成后可以通過 Ctrl + C 切換到命令模式,程序在后台繼續運行;

  示例:

  

 3. 常用使用方式

3.1 nohup 和 & 配合一起使用

  將執行命令的輸出信息重定向到srart.log文件中;

  nohup command > start.log 2>&1 &

  示例:

  

  腳本執行后:

  當前終端依然處於命令模式,

  程序進入后台執行;

  程序執行時的輸出信息打印到指定的文件中;

  

 


免責聲明!

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



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