通过终端命令启动应用程序的计时启动时间

Gab*_*iel 3 command-line time application

我想看看某个应用程序需要多长时间才能完全启动。

有没有办法使用某些命令通过终端启动应用程序?

Gil*_*il' 5

\xe2\x80\x9c 完全启动\xe2\x80\x9d 没有标准定义。如果你提出了一个定义,可能有也可能没有方法来检测它。

\n\n

如果你的\xe2\x80\x9c完全启动\xe2\x80\x9d的定义是\xe2\x80\x9c等到应用程序变得空闲,等待用户输入\xe2\x80\x9d,那么你可以跟踪它的系统调用并查看开始读取用户输入需要多长时间。

\n\n
strace -o myapp.strace -tt myapp\n
Run Code Online (Sandbox Code Playgroud)\n\n

当应用程序完成启动后,查看跟踪文件myapp.strace并找到应用程序发出等待用户输入的行。例如,在下面的示例中,select我显示的调用是应用程序等待用户输入以执行其他操作的点;下一行对应于应用程序发生的事情。

\n\n
01:07:53.975957 execve("/usr/bin/xterm", ["xterm"], [/* 83 vars */]) = 0\n\xe2\x80\xa6\n01:07:54.319288 select(5, [3 4], [], NULL, NULL) = 1 (in [3])\n01:07:57.129481 recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\\10\\4\\344\\1\\343q\\257\n
Run Code Online (Sandbox Code Playgroud)\n\n

有些应用程序不会闲置,而是永远保持轮询。然后你必须用自己的判断来决定应用程序何时\xe2\x80\x9c完全启动\xe2\x80\x9d。

\n\n

某些应用程序可能会在仍在加载某些文件或执行某些预定义的启动操作时开始响应用户输入。\xe2\x80\x9c 完全启动\xe2\x80\x9d 没有正式定义,因此您可以选择什么算作 \xe2\x80\x9c 完全启动\xe2\x80\x9d。

\n\n

如果将\xe2\x80\x9c完全启动\xe2\x80\x9d算作\xe2\x80\x9c显示GUI窗口\xe2\x80\x9d,则可以使用xtoolwait,它启动应用程序并等待显示窗口,然后退出。请注意,如果其他应用程序碰巧同时显示新窗口,它可能会返回误报,因为窗口不以完全可靠的方式与应用程序关联。

\n\n
time xtoolwait xterm\n
Run Code Online (Sandbox Code Playgroud)\n