stdin/stdout/stderr 的理解

  • 類Unix系統(tǒng)都是以文件為單位輸入輸出:
    • 文件描述符0 - stdin: Unix 輸入文件/流
    • 文件描述符1 - stdout: Unix 輸出文件/流
    • 文件描述符2 - stderr: Unix 異常信息文件/流
  • 文件描述符可以理解為緩存文件, 不會保存到磁盤上
  • 文件那就是我們磁盤上的文件了
  • 默認(rèn)在終端上打命令顯示(你可以看到的)出來的所有內(nèi)容, 都輸出到了緩存文件里, 正常的輸出到了信息 stdout, 異常信息都輸出到了stderr, 所以你看到的所有內(nèi)容是stdout+stderr

>和&

  • >name: 語法: 文件描述符(可選)>文件名, 意思是把一個左邊的文件描述符(默認(rèn)1- stdout)輸出到一個右邊的name文件里
  • &>name - 語法: 文件描述符(可選)&>文件名等同于1>name 2>name, 意思是把1-stdout輸出到右邊的name文件里, 同時把2- stderr也輸出到右邊的name文件里
  • >& - 語法: 文件描述符(可選)>&文件描述符, &>輸出的文件轉(zhuǎn)換為了文件描述符, 因此右邊可以加|grep過濾了
  • 此時大家可以試試各種命令情況

docker logs

  • docker logs cotainer_id >1.txt: 只有stdout信息到1.txt里(>左邊沒指定值默認(rèn)為1 - stdout)
  • docker logs cotainer_id 2>1.txt: 只有stderr信息到1.txt里, 這里的2代表stderr
  • docker logs cotainer_id &>1.txt: stdout和stderr都輸出到1.txt里
  • docker logs cotainer_id 2&>1.txt: 等同于 docker logs cotainer_id 2 1>1.txt 2>1.txt, 把命令里的2作為參數(shù), 傳到了前面的命令中, 等同于docker logs container_id 2, 此時, 1.txt里會出現(xiàn):
"docker logs" requires exactly 1 argument.
See 'docker logs --help'.

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

你試試docker logs cotainer_id 2 是不是終端里也會出現(xiàn)一樣的內(nèi)容?

  • docker logs container_id 2>&1 |grep ...

ref:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容