Por vezes, quando se trabalha com o terminal Linux, é necessário saber a hora de execução de certos comandos, por exemplo, para localizar problemas. Existe um utilitário chamado time para este fim. Vamos dizer-lhe como funciona o comando time do Linux e qual é a sua sintaxe. Em seguida, passaremos à descrição das opções disponíveis. E, no final, mencionaremos alguns cenários populares de utilização.
O utilitário executa um comando definido pelo utilizador e, em seguida, apresenta informações sobre o seu tempo de execução. A sua sintaxe é bastante conveniente. Primeiro, é necessário especificar as opções para o tempo, depois o comando a executar e, por fim, os argumentos para o mesmo:
$ time [options] command_to_execute [arguments]
Vamos considerar a lista de opções disponíveis:
-o, --output - guarda os dados no ficheiro selecionado em vez da saída padrão no terminal. Neste caso, os dados antigos no ficheiro serão substituídos.-a, --append - adiciona nova informação ao ficheiro em vez de substituir a antiga. A opção só é útil em combinação com -o.-f, --format - seleciona um formato de saída específico. Detalhes sobre a formatação são descritos na próxima secção deste artigo.-p, --profitably - usa um formato de saída de dados para estar em conformidade com o padrão POSIX 1003.2.-v, --verbose - produz informação detalhada sobre a execução do programa.-V, --version - mostra a versão do utilitário de tempo.Esta lista contém apenas as opções básicas. Pode obter informações detalhadas com o comando:
$ man time
Por defeito , o time pode produzir informação num formato que não é confortável para a leitura,

É desejável definir opções de formatação de saída, que serão discutidas agora. Há três delas no total. Vamos tomar o comando apt-get update como exemplo.
A opção -v é utilizada para produzir informação detalhada:
$ sudo time -v apt-get update

A opção -p é necessária para produzir dados num formato compatível com POSIX 1003.2:
$ sudo time -p apt-get update

A linha de dados de formatação normalmente inclui especificadores de recursos e texto simples. O sinal % indica que o caractere seguinte deve ser tratado como um especificador de recurso.
O sinal é utilizado para especificar o carácter delimitador. Existem três opções disponíveis: t - tabulação, n - nova linha, \ - barra invertida. Se especificar qualquer outro carácter depois de , o terminal mostrará um ponto de interrogação (?), o que indica um erro de introdução.
O resto do texto na cadeia de formato é completamente copiado para o campo de saída. Neste caso, o time começa sempre a produzir dados a partir de uma nova linha após a informação sobre a execução do próprio comando.
Vamos considerar os especificadores de recursos disponíveis:
% - literal %. Ou seja, para emitir um sinal de percentagem, deve especificar %% no comando.C - nome do comando e argumentos utilizados.D - tamanho médio da área de dados não dividida. É apresentado em kilobytes.E - tempo real de execução do comando no formato de hora habitual. É apresentado como [Hours:]<imutes:segundos.N - número de erros maiores ou de E/S que ocorreram durante a execução do processo.I - número de acessos ao sistema de ficheiros.K - valor médio da memória usada para código(texto), dados inicializados(dados) epilha (pilha). É apresentado em kilobytes.M - tamanho máximo do conjunto residente durante a execução do processo em kilobytes.O - número de saídas do sistema de ficheiros.P - percentagem de carga da CPU (unidade central de processamento).R - número de erros menores.S - tempo em segundos durante o qual a CPU foi usada pelo sistema em nome do processo no modo supervisor(modokernel).U - tempo em segundos durante o qual a CPU foi utilizada pelo processo diretamente no modode utilizador.W - quantas vezes o processo foi descarregado da RAM.Z - tamanho da página do sistema. Este valor é uma constante, mas varia entre sistemas.c - número de trocas involuntárias de contexto durante a execução do processo.e - tempo real de execução do comando no formato de hora habitual. É apresentado em segundos.k - número de sinais que chegaram ao processo.p - tamanho médio da pilha não partilhada do processo, em kilobytes.r - número de mensagens de socket recebidas.s - número de mensagens de socket enviadas.t - tamanho médio do conjunto de residentes do processo, em kilobytes.w - número de trocas voluntárias de contexto durante a execução do processox - código de retorno do comando.Estes foram todos os especificadores de recursos usados ao escolher a formatação para o tempo. Passemos agora aos cenários de utilização do comando.
Vejamos três exemplos básicos que são bastante utilizados: saída para o terminal, saída para um ficheiro separado e saída com formatação.
Como exemplo, vamos utilizar o comando sleep, que faz uma pausa durante um determinado período de tempo. Será um exemplo muito claro, porque o tempo de pausa coincidirá com o tempo de execução do comando no tempo:
$ time sleep 3

O tempo é escrito imediatamente em três colunas. Vamos analisar cada uma delas:
real - o tempo total desde o início da execução do processo até a sua conclusão.
user - o tempo durante o qual o processo foi executado em modode utilizador.
sys - tempo durante o qual o processo esteve envolvido no modo supervisor(modokernel).
O próximo cenário útil é produzir o tempo que leva para carregar o cabeçalho de uma página da Web por meio do utilitário curl. Tomemos o nosso sítio Web como exemplo:
$ time curl -I https://losst.ru

Devemos mencionar uma situação em que a execução do comando coloca a janela do terminal num modo diferente, como quando executa o editor nano para modificar o ficheiro /home/root-user/script.txt:
$ time nano /home/root-user/scripts/main_script.txt
Depois de o editor terminar, verá o tempo total que trabalhou no ficheiro.

Agora já sabe como ver o tempo de execução de um comando Linux.
As informações sobre os resultados do comando time podem ser salvas em um arquivo separado usando a opção-o. Nesse caso, elas não serão exibidas na janela do terminal. Tomemos o exemplo de extrair o conteúdo do arquivo ~/data/data.tar.gz usando o utilitário tar. Vamos guardar a informação sobre o tempo de execução num novo ficheiro ~/data/data_data_time.txt. Também adicionaremos a opção-v ao comando para obter informações detalhadas:
$ sudo time -v -o ~/data/data_time.txt tar -xvf ~/data/data.tar.gz -C ~/data

O ficheiro terá o seguinte conteúdo.

Se utilizar a opção -o, lembre-se que esta substitui a informação antiga no ficheiro de saída pela nova informação. Isto é aplicável quando se criam novos ficheiros, mas não é adequado para o registo. Com a opção opcional -a, a substituição do conteúdo é substituída pela adição de novas informações:
$ sudo time -v -a -o ~/data/data_time.txt tar -xvf ~/data/data.tar.gz -C ~/data

A opção original de formatação de dados não é adequada em todos os casos. Como exemplo, vamos utilizar o comando anteriormente utilizado para extrair um arquivo, mas não vamos guardar os dados num ficheiro. Ao executá-lo, estamos interessados em:
especificador%C. especificador%P. especificador%e.Para uma perceção confortável, cada item será apresentado numa linha separada utilizando o separador n. Ao mesmo tempo, todos eles serão assinados de forma compreensível.
Eis o aspeto da versão final do comando:
sudo time -f "Command info:n%CnCPU usage: %PnExecution time: %e sec" tar -xvf ~/data/data.tar.gz -C ~/data

Todo o texto, exceto os caracteres a seguir a %, é totalmente apresentado no terminal. Esta é uma forma conveniente de marcar