Linux Shell 中 > 和 >> 的異同點和應用場景


Linux Shell 中 > 和 >> 的異同點和應用場景 


 

> 和 >> 的異同點

舉例說明(start.sh 為某個服務的啟動腳本start.log 為某服務的日志文件):

nohup sh start.sh >/var/log/start.log &
nohup sh start.sh >>/var/log/start.log &

 

1、相同點

上面兩種寫法,都是將服務的日志內容,輸出到指定文件中。

當 /var/log/ 目錄下的 start.log 文件不存在時,均會創建 start.log 文件。

 

2、不同點

> :每次執行服務啟動命令,start.log 文件中的內容都會被清除重新寫入最新的日志信息。

>>:每次執行服務啟動命令,start.log 文件中的內容不會被清除,最新的日志信息會追加到歷史日志后面。


 

應用場景

從上面簡單的解釋,可以得出如下結論:

1、當不需要保留文件中的歷史信息的時候,可以使用 > 方式。

比如:不想讓 nohup 命令產生 nohup.out 文件。

我們常用如下命令啟動服務,將日志信息輸出到空文件(/dev/null)中:

nohup sh start.sh >/dev/null 2>&1 &

 

2、當需要保留文件中的歷史信息的時候,必須使用 >> 方式。

比如:我們在集群化部署項目的時候(node1,node2, node3三個節點組成集群),經常會遇到要求服務器之間進行免密碼互相訪問,或者 scp 文件的場景。

如果 要求 node1 作為master節點,可以將 node1 中的文件免密碼 scp 到 node2 和 node3 中。

在配置免密碼過程中,需要將 node1 生成的公鑰,追加到 node2 和 node3 的認證文件中。就需要用到如下命令:

cat authorized_keys2 >>authorized_keys

 


免責聲明!

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



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