如何通过Docker工具仅输出docker top命令的CMD列?
如何通过Docker工具仅输出docker top命令的CMD列?
当然有办法啦!其实不用额外安装工具,结合Docker自带命令和一些基础的文本处理工具就能轻松搞定,下面给你两种实用的方法:
提取
docker top输出中的进程CMD列(包含完整命令内容)
因为docker top <c_name>的输出里,CMD是第8列开始的内容,而且命令本身可能包含空格(比如python app.py),直接取单一列会截断内容,所以可以用awk来提取从第8列到结尾的所有内容:docker top <c_name> | awk 'NR>1 {for(i=8;i<=NF;i++) printf "%s ",$i; print ""}'简单解释下:
NR>1用来跳过第一行的表头(UID、PID这些),然后从第8列(i=8)循环到当前行的最后一列(NF是当前行的总列数),把每部分内容拼接起来,最后换行,这样就能拿到完整的进程CMD了。获取容器启动时的命令(和
docker top的进程CMD可能有区别)
如果你只是想拿到容器启动时的初始命令,可以用docker inspect直接读取容器配置,不用依赖docker top的输出:# 输出命令数组形式 docker inspect --format='{{.Config.Cmd}}' <c_name> # 输出字符串形式的完整命令 docker inspect --format='{{join .Config.Cmd " "}}' <c_name>注意哦:这个方法拿到的是容器启动时的命令,如果容器内部后来启动了其他进程,
docker top显示的CMD会是那个新进程的命令,和这个结果就不一样啦,要根据你的需求选择。
备注:内容来源于stack exchange,提问作者palmasd1
相关产品推荐
相关产品推荐

