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