Sim e não , o tempo GNU tenta mostrar o resumo / pico de tudo.
Você pode verificar isso usando um pequeno programa em C, digamos mal.c
:
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
long bytes;
void *buf;
bytes = atol(argv[1]) * 1024;
buf = malloc(bytes);
memset(buf, 0, bytes);
printf("");
return 0;
}
E veja:
$ gcc mal.c -o mal
$ /usr/bin/time -f "%M" sh -c "./mal 5000"
5452
$ /usr/bin/time -f "%M" sh -c "./mal 10000"
10452
$ /usr/bin/time -f "%M" sh -c "./mal 5000; ./mal 10000"
10452
Mas como mencionado na página man do getrusage (2) (Linux), este é o máximo RSS de qualquer processo filho único, não o RSS cumulativo instantâneo de uma árvore de processos, todos usando simultaneamente memória
Em outras palavras, não resume processos paralelos ou em segundo plano, como você pode ver:
$ /usr/bin/time -f "%M" sh -c "./mal 1000000 & ./mal 5000"
5452
Isso também implica que você precisa executar time
dentro de sua sessão de tela para medir $ CMD e não apenas a tela.
FYI a diferença entre o shell embutido é que o binário de tempo não pode resumir diretamente pipes ou funções:
$ time /bin/sleep 1 | /bin/sleep 2
real 2.00
user 0.00
sys 0.00
$ /usr/bin/time -p /bin/sleep 1 | /bin/sleep 2
real 1.00
user 0.00
sys 0.00