Não há uma definição padrão para "iniciar totalmente". Se você chegar a uma definição, pode ou não haver uma maneira de detectá-la.
Se a sua definição de “iniciar totalmente” for “esperar até que o aplicativo fique ocioso, aguardando a entrada do usuário”, você poderá rastrear suas chamadas de sistema e observar quanto tempo leva para começar a ler a entrada do usuário.
strace -o myapp.strace -tt myapp
Quando o aplicativo terminar de iniciar, examine o arquivo de rastreio em myapp.strace
e localize a linha na qual o aplicativo emitiu uma espera pela entrada do usuário. Por exemplo, no exemplo abaixo, a chamada select
que mostro é o ponto em que o aplicativo aguardou a entrada do usuário para fazer qualquer outra coisa; a próxima linha corresponde a algo que está acontecendo com o aplicativo.
01:07:53.975957 execve("/usr/bin/xterm", ["xterm"], [/* 83 vars */]) = 0
…
01:07:54.319288 select(5, [3 4], [], NULL, NULL) = 1 (in [3])
01:07:57.129481 recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"43q7
Algumas aplicações não ficam ociosas, mas mantêm-se sondando para sempre. Então você tem que usar seu próprio julgamento para decidir quando o aplicativo foi "totalmente iniciado".
Alguns aplicativos podem começar a responder à entrada do usuário enquanto ainda estão carregando alguns arquivos ou executando outras ações de inicialização predefinidas. Não há uma definição formal de "totalmente iniciado", então você pode escolher o que conta como "totalmente iniciado".
Se você contar “totalmente iniciado” como “mostra uma janela da GUI”, você pode usar o xtoolwait , que inicia um aplicativo e aguarda até que uma janela seja exibida e saia. Observe que ele pode retornar um falso positivo se algum outro aplicativo exibir uma nova janela ao mesmo tempo, já que as janelas não estão associadas aos aplicativos de maneira totalmente confiável.
time xtoolwait xterm