일부 소프트웨어를 시작하는 데 걸리는 시간을 측정하고 싶습니다.
나는 명령을 알고 있지만 time
Firefox의 경우(저는 Debian의 iceweasel입니다) 이 명령은 내가 Firefox를 연 시간만 인쇄합니다. 실행하는 경우:
$ time iceweasel www.google.com
Firefox를 닫은 후에만 시작 시간이 표시됩니다. 이는 Firefox를 열어 둔 시간만 나타냅니다. 예를 들어:
real 0m50.565s
user 0m4.276s
sys 0m0.248s
Firefox를 시작하는 데 필요한 금액을 정확히 어떻게 알 수 있나요?
답변1
이것은 매우 해키적이고 스크립트할 수 없습니다.
Firefox는 다음과 같이 명령줄을 통해 자바스크립트를 실행할 수 있습니다:
firefox "javascript:alert(Date.now())"
그러면 Firefox가 열리고 자바스크립트가 실행되어 현재 에포크 시간(밀리초까지 정확함)이 포함된 메시지 상자가 나타납니다.
명령줄에서 에포크 동안 경과된 밀리초를 얻을 수 있습니다.
date +%s%N | cut -b1-13
따라서 귀하의 질문에 대답하려면 다음을 실행하십시오.
date +%s%N | cut -b1-13; iceweasel "javascript:alert(Date.now())"
그런 다음 Firefox의 숫자에서 터미널의 숫자를 뺍니다. 이는 Firefox가 일부 기본 JavaScript를 열고 표시하는 데 걸린 시간(밀리초)을 제공합니다.
원천:
답변2
PID와 연결된 창 ID를 가져오고 창이 생성될 때까지 기다릴 수 있는 일부 도구를 사용할 수 있습니다. 이전에 시작한 프로그램의 프로세스 ID는 변수에서 확인할 수 있습니다 $!
.
예를 들어 - 사용wmctrl
모든 창 목록을 가져오고 해당 창 중 특정 PID에 의해 시작된 것이 있는지 확인할 수 있습니다.
$ wmctrl -lp
0x00e00003 -1 397 jjmach sawfishpager
0x01200003 6 399 jjmach wmctrl -lp jimmij@jjmach: /proc
0x0180004b 0 655 jjmach [email protected]
0x02800078 7 680 jjmach How to measure Firefox's startup time? - Mozilla Firefox
awk
창 ID는 첫 번째 열에 있고 프로세스 ID는 세 번째 열에 있으므로 지정된 프로세스 ID에 연결된 창이 있는지 확인하려면 이를 파이프해야 합니다 .
wmctrl -lp | awk -v pid="$!" '$3==pid{print "Window is created with id "$1}'
이제 이것을 루프에 넣고 위 명령이 성공적으로 끝나는지 측정해야 합니다.
firefox & time (while wmctrl -lp | awk -v pid="$!" '$3==pid{exit 1}'; do :; done)
그래서 우리는 Firefox를 시작하고 본문( )에서 아무것도 하지 않고 :
0이 아닌 값이 반환될 때 끝나는 루프를 즉시 시작합니다.awk
답변3
- 시작하다모니터링 네트워크 고양이백그라운드에서
- 연결하려면 Firefox에 전화하세요.
- 내장된 bash를 사용하여 기다리세요
wait
. - 드디어 다 죽인다
nc -l 64738 & firefox http://127.0.0.1:64738 & wait <...yet to be solved that only the nc should be waited for...> killall firefox <..yet to be solved to not kill your girlfriends browser>
답변4
구성(about:config)에서 측정된 시작 시간을 읽을 수 있습니다.
browser.slowStartup.averageTime