때때로 Firefox에서 여러 개의 탭이 열려 있을 때 탭 중 하나가 많은 CPU%를 소비하기 시작하고 어떤 탭이 원인인지 알고 싶습니다. 이 작업은 매우 수동적인 프로세스이므로 자동화할 수 있는 방법을 찾고 싶습니다.
Firefox를 구체적으로 모니터링하고 내가 알고 싶은 Firefox에 대한 사실만 간결하게 출력할 수 있는 응용 프로그램이 있었으면 좋겠습니다.
Firefox에서 실행 중인 각 탭에 대한 프로세스를 나열하고 각 탭 프로세스에 대해 다음 정보만 포함하도록 필터링된 명령/응용 프로그램을 찾고 있습니다.
- 프로세스 번호
- 탭 페이지 주소
- CPU 사용량
- 메모리 사용
또한 정보를 CPU %를 기준으로 내림차순으로 정렬하고 싶습니다.
기본적으로 htop과 같은 프로그램이 있었으면 좋겠지만 이는 Firefox에서 모니터링하고 싶은 관련 항목을 위해 특별히 설계되었습니다(관심하지 않은 모든 세부 사항은 무시함).
답변1
about:performance
Firefox의 주소 표시줄에 이를 입력 할 수 있습니다 . 그러면 pid
Firefox의 각 탭 Resident Set size
과 Unique Set Size
. 아래에는 각 탭의 성능(예: )을 설명하는 줄이 있으며 performing well
, 탭이 제대로 작동하지 않으면 거기에 표시되며 Close Tab
거기에서 해당 탭을 닫는 옵션을 사용할 수 있습니다.
답변2
한 단계 더 나아가 프로세스를 자동화할 수도 있습니다.
- CPU를 많이 사용하는 프로세스 자동 감지(브라우저 탭에서 실행 가능)
- 일부/불합리한 임계값을 초과하는 경우 종료합니다.
다음은 제가 작성한 일반/사용자 정의 가능한 스크립트입니다. CPU 돼지 킬러브라우저(또는 다른 곳)에서 악의적이거나 오작동하는 스크립트 문제를 해결합니다.
스크립트는 두 가지 기본 기본 요소를 정의합니다.
process-list
: 명령 + 매개변수 정규식을 기반으로 프로세스 선택terminate-hogs
: 필요한 것보다 더 많은 CPU를 소비하는 프로세스를 종료합니다(총 초 및 현재 %pct).
그리고 이 목표를 달성하기 위해 그것들을 사용하십시오.
다음은 git 저장소의 README.md에서 가져온 설명입니다.
CPU 돼지 킬러
명령 + 매개변수 정규식 및 CPU 소비를 통해 CPU를 많이 소비하는 프로세스를 종료합니다.
결함이 있는(또는 악의적인) 제3자 JavaScript 코드는 종종 브라우저와 컴퓨팅 리소스를 탈취합니다.
한번은 내 데스크톱에서 밤새도록 100% CPU로 실행되는 일부 프로세스를 발견했는데 JavaScript가 형편없어서 눈치채지도 못했습니다.
비자발적인 CPU 사용은 감염된 광고, 잘못 작성된 코드, 누군가가 암호화폐 채굴을 실행하기 위해 컴퓨터를 선택하게 만드는 "스크립트 드라이버" 등으로 인해 발생할 수 있습니다.
원하지 않는 전기 요금을 지불하게 하고 밤에 실행되는 많은 데스크탑과 브라우저를 곱하면 지구에도 매우 해롭습니다.
cpu-hog-killer
는 밤에 정기적으로 실행하는 간단한 스크립트입니다. 다음과 같이 13분마다 cron에서 실행했습니다.
# Add this line (or similar) using 'crontab -e'
*/13 0-7 * * * ~/bin/cpu-hog-killer
그것은 식별한다확증하다CPU를 많이 차지하는 프로세스(주로 Chrome 또는 Firefox)가 감지되는 즉시 종료합니다. 임의의 CPU를 많이 사용하는 프로세스나 기본 브라우저 프로세스를 종료하지 않습니다. 구성된 + 에 따라 regex
종료하겠다고 명시적으로 말한 프로세스 만 종료됩니다 CPU consumption parameters
.
아침에 돌아와서 최악의 상황은 브라우저 탭에 가서 다음과 같은 메시지가 표시된다는 것입니다(예: Firefox의 경우).
"Gah. Your tab just crashed."
어떤 웹사이트가 제목에 따라 오작동하는지 확인했고 브라우저에서 이를 허용했습니다(큰 버튼이 표시됨).
[Restore This Tab]
내가 원한다면 실제로는 아무것도 잃지 않을 것입니다.
원하지 않는 상황에서 CPU를 사용할 수 있는 더 많은 응용 프로그램을 다루기 위해 스크립트에 더 많은 규칙을 추가할 수 있습니다. "기본" 섹션(스크립트의 마지막 몇 줄)을 살펴보고 필요한 경우 규칙을 더 추가하세요. 각 규칙은 다음과 같습니다.
# [max_cpu_secs] [max_cpu_pct] are optional parameters to terminate-hogs
# if not specified, default values will be used
process-list '<some pattern>' | terminate-hogs [max_cpu_secs] [max_cpu_pct]
예를 들어 하나의 프로세스 탭만 종료하는 Firefox 규칙은 다음과 같습니다.
process-list '[/]firefox -contentproc -childID.*tab$' | terminate-hogs
Chrome/Chromium의 경우 다음과 같습니다.
process-list '[/]chrom(e|ium) --type=(renderer|utility)' | terminate-hogs
답변3
고쳐 쓰다 Bash에서 사용하기에 적합한 것 같습니다.
watch -n 1 "ps aux | grep firefox"
watch -n 0.1 "ps aux | grep firefox"
watch -n 1 "ps aux | grep firefox && free -m"
Tab에서 F5를 누르고 시청하세요.
이제 올바른 탭으로 탭을 종료하면 Tab is now crashed라는 메시지가 나타납니다.
파이어폭스에서는정보:성능맞습니다.
하지만 페이지 탭을 닫거나 열고 로드하면 bash에서 다음을 확인하세요.
$ pidof firefox
$ pidof firefox-esr
$ pgrep firefox
하나 또는 "n"개 프로필의 기본/상위 ID 가져오기
$ pgrep firefox-esr
하나 또는 "n"개 프로필의 기본/상위 ID 가져오기
얻다상위 코드그리고어린애 같은
$ ps aux | grep firefox
$ ps aux | grep firefox | grep tab
알다시피상위 버전 ID그리고 뭔가하위/탭
못 죽이는 것 같던데하위/탭오직상위 버전 ID.
ps -ef | grep firefox | wc -l