Observe que o FS é montado com a opção relatime (assim, a hora do último acesso recente não é mostrada).
Existe uma maneira de ver quando um executável (executável LSB de 64 bits ELF) foi executado pela última vez?
Usando o acesso root. A ideia é que um aplicativo de produção complexo possa executar o mesmo exec que existe atualmente em dois locais diferentes (instalação pendente). Eu só quero garantir que apenas um deles seja executado a partir de agora, sem interromper nada (não é possível remover temporariamente um, por exemplo; é 99% de certeza que apenas um deles é usado, mas precisa ter 100% de certeza).
Pelo que me lembro,
relatime
atualiza o tempo de acesso a cada 24 h ou se o atime antigo era anterior ou igual a mtime. Isso permitirá que você saiba se o programa não foi usado por um dia inteiro; ou, se você não quiser esperar, corratouch programfile
e veja se a hora mudou depois.Plain
touch
definiria atime == mtime, mas atime é atualizado se for <= mtime, então tudo bem. Você também pode fazer algo comotouch -a -d 1999-12-31
alterar atime sem modificar mtime.Igual a:
O timestamp de acesso foi atualizado quando o programa foi executado.
Claro, atime também mudaria se o arquivo fosse apenas lido . Provavelmente não é tão comum que arquivos binários sejam lidos assim, mas, por exemplo, uma ferramenta de backup pode fazer exatamente isso. Isso tornaria um tempo inútil para isso.
Mas se atime não mudar, então o arquivo não foi lido nem executado, então ele pode ser usado para provar o caso negativo.
Você pode estar em posição de modificar o programa para torná-lo log quando for usado.
Mova o programa para um novo local (por exemplo
/usr/bin/program.real
, ) e substitua-o por um script wrapper curto que grava a hora em um arquivo:Obviamente, você pode adicionar um
+
argumento para formatar a string de data como desejar.