時々Firefoxで複数のタブが開いているとき、タブの1つが多くの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豚キラーブラウザ(または他の場所)で悪意のあるまたは誤動作するスクリプトの問題を解決します。
スクリプトは、2 つの基本的な基本要素を定義します。
process-list
:コマンド+パラメータ正規表現に基づいてプロセスを選択するterminate-hogs
:必要以上のCPUを消費するプロセスを終了します(合計秒と現在の%pct)。
そして、この目標を達成するためにそれらを使用してください。
以下は、gitリポジトリのREADME.mdから取得した説明です。
CPU豚キラー
コマンド+パラメータ正規表現とCPU消費によってCPUを大量に消費するプロセスを終了します。
不良(または悪意のある)サードパーティの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]
たとえば、1つのプロセスタブのみを終了する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 というメッセージが表示されます。
Firefoxでは情報:パフォーマンスそうですね。
ただし、ページタブを閉じるか開いて読み込む場合は、bashで次のことを確認してください。
$ pidof firefox
$ pidof firefox-esr
$ pgrep firefox
1つまたは「n」個のプロファイルのデフォルト/親IDを取得する
$ pgrep firefox-esr
1つまたは「n」個のプロファイルのデフォルト/親IDを取得する
得る親コードそして子供のような
$ ps aux | grep firefox
$ ps aux | grep firefox | grep tab
ご存じのとおり親バージョンIDそして何かサブ/タブ
殺せないようです。サブ/タブただ親バージョンID。
ps -ef | grep firefox | wc -l