Em /bin/sh
puro, a desova date
é o caminho principal. Mas não é tão ruim - tanto o Linux quanto o BSDs são muito rápidos na criação de novos processos, e o binário date
será armazenado em cache por algum tempo. Se você não gosta da aparência dos backticks, $(this syntax)
é geralmente preferível a eles.
Você pode alterar o formato de data usando date +fmt
, dando a ele um formato de estilo strftime ():
echo "nightly $MACHINE restart at $(date +"%F %T %z")"
echo "$(date +"%F %T %z"): $MACHINE: nightly restart"
... Na verdade, você pode estender a opção de formato de data para fazer com que date
imprima a linha inteira - contanto que você evite ou escape de %
caracteres em variáveis:
date +"%F %T %z: $MACHINE: nightly restart"
No shell Bash, você pode substituir echo
por printf
e usar o especificador de formato %(fmt)T
especial, que aceita novamente um formato de estilo strftime ():
printf "%(%F %T %z)T: %s: nightly restart\n" "$MACHINE"
Em todos os exemplos acima, %F %T %z
(ou a versão completa %Y-%m-%d %H:%M:%S %z
) é a "modificada ISO 8601 " Formato de data. (O ISO 8601 regular seria %FT%T%z
ou %Y-%m-%dT%H:%M:%S%z
, um pouco menos legível.) Qualquer uma dessas opções geralmente é a melhor escolha ao formatar datas para análise futura.
Por fim, você pode esquecer echo
inteiramente e gravar diretamente no log do sistema. A maioria dos sistemas operacionais vem com a função logger
para enviar para syslog :
logger -s -p user.notice "nightly restart"
O syslog armazenará automaticamente a data & tempo, bem como o nome do host.