←→ Underneath: Background Apps · すべてのMacガイド
Macのバックグラウンドで動いているものを確認する方法
Macでは、自分で開いた覚えのないプロセスが何百も動いています。そのほとんどはmacOSのものです。いくつかはインストールしたアプリから来ていて、その一部はログインするたびに再び起動します。それらを見つける方法を紹介します。
結論:いま動いているものを見るにはアクティビティモニタを、自動で起動するものを見るにはシステム設定 › 一般 › ログイン項目と機能拡張を開きます。全体像を知るには、LaunchAgentsとLaunchDaemonsフォルダを調べるか、ターミナルでlaunchctl listを実行します。
1. アクティビティモニタ:いま動いているもの
アプリケーション › ユーティリティから開くか、⌘ Spaceを押して「アクティビティモニタ」と入力します。
- メモリタブをクリックし、メモリの列で並べ替えます。使用量の多いものが一番上に来ます。
- 表示 › 自分のプロセスを選ぶと、システムやほかのユーザのプロセスが非表示になります。
- 表示 › すべてのプロセス(階層表示)を選ぶと、どのプロセスがどのプロセスを起動したかがわかります。
- プロセスをダブルクリックして開いているファイルとポートを開くと、そのパスがわかります。
わからないこと:プロセスがなぜ動いているのか、再起動後に戻ってくるのか、どのファイルから起動しているのかはわかりません。com.adobe.acc.installer.v2やGoogle Chrome Helper (Renderer)のような名前からは、ほとんど何もわかりません。
2. ログイン項目と機能拡張:自動で起動するもの
システム設定 › 一般 › ログイン項目と機能拡張を開きます。2つのリストがあります:
- ログイン時に開く:ログイン時に開くアプリ。選択して–をクリックすると削除できます。
- バックグラウンドでの実行を許可:アップデータ、同期エージェント、VPNモニタなどのバックグラウンドヘルパーを持つアプリや開発元。スイッチでオフにできます。「バックグラウンドでの実行を許可」とはをご覧ください。
わからないこと:項目がいま実行中かどうか、メモリをどれだけ使っているか、どのファイルから来ているかは表示されません。開発元の名前しか表示されない項目もあります。
3. LaunchAgentsフォルダとLaunchDaemonsフォルダ
自動で起動するバックグラウンドジョブの多くはlaunchdジョブです。それぞれが小さな.plistファイルで、何をいつ実行するかをmacOSに伝えます。Finderで移動 › フォルダへ移動…(⇧⌘G)を選び、次のフォルダを開きます:
| フォルダ | 実行ユーザ | 起動するタイミング |
|---|---|---|
~/Library/LaunchAgents | あなた | あなたがログインしたとき |
/Library/LaunchAgents | 各ユーザ | いずれかのユーザがログインしたとき |
/Library/LaunchDaemons | root | Macの起動時、ログイン前 |
/System/Library/Launch… | macOS | 保護されています。触らないでください |
ファイル名は通常ジョブのラベルで、たとえばcom.google.keystone.agent.plistのようになります。テキストエディタで開くと、ProgramArguments(何を実行するか)、RunAtLoad(ログイン時に起動)、KeepAlive(止まったら再起動)を確認できます。
わからないこと:macOS 13以降、アプリは自分のアプリバンドル内からバックグラウンドジョブを登録することもでき、その場合これらのフォルダにはファイルがありません。そうしたジョブはバックグラウンドでの実行を許可にしか表示されません。
4. ターミナル:完全なリスト
以下のコマンドは読み取り専用です。何も変更しません。
自分のユーザで読み込まれているすべてのlaunchdジョブ。プロセスID(ダッシュは実行中でないことを示します)と最後の終了コードも表示されます:
launchctl list | grep -v com.apple
1つのジョブの詳細(plistのパスと状態を含む):
launchctl print gui/$(id -u)/com.example.label
ネットワークポートで待ち受けているプロセス(開発サーバ、同期ツール):
lsof -nP -iTCP -sTCP:LISTEN
自分のプロセスを、メモリ使用量の多い順に(RSSの単位はKB):
ps -U $(id -u) -o pid,rss,etime,comm -m | head -30
macOSが把握しているすべてのログイン項目とバックグラウンド項目(管理者パスワードが必要で、出力は長くなります):
sudo sfltool dumpbtm
何が普通なのか
- 1つのアプリに多数のヘルパー。Chrome、Slack、VS Codeなど、ChromiumやElectronのアプリは、タブやウインドウごとに1つのプロセスを実行します。アプリを終了すると一緒に終了します。
- アップデータ。Google、Microsoft、Adobe、Zoomは、アップデートを確認するエージェントをインストールします。たいていは小さく、停止しても安全ですが、アプリは自動でアップデートされなくなります。
- クラウド同期とVPN。Dropbox、OneDrive、VPNクライアントは、動作にヘルパーが必要です。停止すると同期や保護も止まります。
- 開発ツール。Homebrewサービス、Docker、データベース、ローカルの開発サーバは、ターミナルを閉じても動き続けます。
見覚えのない名前があったら、停止する前に、そのラベルやパスにある開発元の名前を検索してください。
よくある質問
Macでたくさんのプロセスが動いているのは良くないことですか?
いいえ。普通のMacでは数百のプロセスが動いていて、そのほとんどはmacOSのものです。メモリやCPUを多く使っているもの、または見覚えのないものをいくつか探してください。
アクティビティモニタにGoogle Chrome Helperのプロセスがたくさん表示されるのはなぜですか?
Chromeやその他のChromium・Electronアプリは、タブ、拡張機能、レンダラごとに1つのヘルパープロセスを実行します。これらはアプリの一部で、アプリを終了すると一緒に終了します。
MacのLaunchAgentはどこに保存されていますか?
自分のユーザ用は~/Library/LaunchAgents、すべてのユーザ用は/Library/LaunchAgents、rootとして動くシステム全体のジョブは/Library/LaunchDaemonsです。/System/LibraryのフォルダはmacOSのもので、保護されています。
システム設定のログイン項目リストにはすべてが表示されますか?
いいえ。ログイン時に開くアプリとバックグラウンド項目を持つアプリが、アプリまたは開発元ごとにまとめて表示されます。いま実行中のもの、使っているメモリ量、どのファイルから起動するかは表示されません。