/bin/sh -c 的作用


背景

在kubernetes的yaml文件的command字段中,經常使用sh -c的形式:

command: ["/bin/sh", "-c", "echo postStart... > /usr/share/nginx/html/index.html"]

那么,/bin/sh -c 是什么意思呢?為什么不直接使用 echo 命令?

那是因為命令解釋器(這里是/bin/sh) 有兩種工作模式:交互模式和非交互模式。

1. 交互模式

交互模式如下圖所示,就是使用 ssh 連接到 Linux 服務器上,然后在終端上敲入命令就可以顯示對應結果。這樣與終端進行交互執行命令的方式就稱為交互模式。

2. 非交互模式

非交互模式如下圖所示,非交互模式就是調用 bash 解釋器,通過 bash -c 后接命令的形式來解釋執行命令。

而在 kubernetes 的 yaml 文件中,command 字段(底層也就是 golang 程序) 顯然需要使用非交互模式,通過命令解釋器來執行命令,而不是通過ssh登錄之后與終端交互。

在影響權限上的區別可以參照:https://blog.csdn.net/BobChill/article/details/84647575


免責聲明!

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



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