Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell docker ps中的集装箱订单_Shell_Docker_Awk_Ps - Fatal编程技术网

Shell docker ps中的集装箱订单

Shell docker ps中的集装箱订单,shell,docker,awk,ps,Shell,Docker,Awk,Ps,我相信,docker ps会按照容器创建的时间顺序(从最新到最旧)列出容器 有人能确认一下吗?我正在写一个库,我需要选择最新的容器。我目前正在列出容器ID并选择第一个 docker ps-a-f——格式{{.ID}}| awk'NR==1' 这能保证装上最新的集装箱吗?如果没有,正确的方法是什么?要获得订单的可靠保证,请使用CreatedAt时间戳进行排序 docker ps -a --format '{{.CreatedAt}}\t{{.ID}}' | awk -F $'\t' ' NR=

我相信,
docker ps
会按照容器创建的时间顺序(从最新到最旧)列出容器

有人能确认一下吗?我正在写一个库,我需要选择最新的容器。我目前正在列出容器ID并选择第一个

docker ps-a-f——格式{{.ID}}| awk'NR==1'


这能保证装上最新的集装箱吗?如果没有,正确的方法是什么?

要获得订单的可靠保证,请使用
CreatedAt
时间戳进行排序

docker ps -a --format '{{.CreatedAt}}\t{{.ID}}' | awk -F $'\t' '
  NR==1 { earliest = $1; result = $2; next; }
  $1 < earliest { earliest = $1; result = $2; }
  END { print result; }
'
docker ps-a--格式{{.CreatedAt}\t{{.ID}}| awk-F$'\t''
NR==1{最早的=$1;结果=$2;下一个;}
$1<最早的{最早的=$1;结果=$2;}
结束{打印结果;}
'

…提供按创建时间排序的可靠保证。(创建数据字段是一个时间戳,所以ASCII排序顺序是有效的)。

这是一个好问题:如果文档中没有列出某些内容,它是一个实现细节,可以随时更改而不另行通知。编写与其他软件集成的工具时,你应该只依赖于有文档记录的保证,而不仅仅是对当前行为的观察——因为如果某个东西没有文档记录,并且将来会发生变化,那么它甚至不是一个bug,只是从一个未指定的行为到另一个行为的变化。因为我想要最新的,应该是“>”。我们可以使用
排序
<代码>docker ps-a--格式{{.CreatedAt}\t{.ID}}| sort-k1-r | awk'NR==1{print$5}
排序
工作正常;与将工作放入awk相比,这只是额外的开销(并且需要对整个列表进行实际排序,而不是只查找第一个或最后一个元素——是O(n logn)操作还是O(n)操作)。顺便说一句,即使您使用的是
排序| awk
路径,也要使用
awk-F$'\t'{print$2}
;这样,您就不必关心当前区域设置的日期格式拆分为多少个字段。明白了,我想我将采用
awk
方式,因为它是O(n)<代码>排序
看起来更简洁。