ガイド/SSH経由のVitals
SSH経由のVitals: 別のMacのCPU、メモリ、アプリをどのコンピュータからでも確認
結論
確認したいMacで“リモートログイン”をオンにし、どのコンピュータからでもssh [email protected]で接続します。macOS標準のtop -o cpuでプロセスが、memory_pressureでメモリプレッシャーがわかります。そのMacでVitalsが動いていれば、同じ接続でVitalsのコマンドラインが答えます。~/Library/Application\ Support/Vitals/vitals top cpu --watchは、CPUを最も多く使っているアプリをヘルパーを含めて一覧にし、2秒ごとに更新します。Mac用アクティビティモニタ兼プロセスインスペクタのVitalsは、MCPサーバを通じて、PC上のAIアシスタントにも同じ質問に答えます。
SSHでMacを確認する方法
- 01 確認したいMacで“システム設定”を開き、“一般”、“共有”の順にクリックして、“リモートログイン”をオンにします。その下の行に、接続するためのコマンドが表示されます。たとえば
ssh [email protected]です。 - 02 自分のコンピュータでターミナル(WindowsではPowerShell)を開き、そのコマンドを実行します。求められたら、そのMacのログインパスワードを入力します。
- 03
top -o cpuを実行すると、CPUを最も多く使っているプロセスが表示されます。終了するにはQを押します。top -o memにすると、代わりにメモリ順に並びます。 - 04
memory_pressureを実行すると空きメモリの量が、pmset -g battを実行するとバッテリーの状態がわかります。df -h /はディスクの使用状況を表示します。 - 05 MacでVitalsが動いていれば、
~/Library/Application\ Support/Vitals/vitals statusでMac全体の状態が数行でわかり、~/Library/Application\ Support/Vitals/vitals top cpu --watchでCPUを最も多く使っているアプリが2秒ごとに更新されて表示されます。
フルパスで指定することが大切です。SSHで起動したシェルは、HomebrewがPATHに追加するフォルダを読み込まないため、vitalsだけでは見つかりません。入力の手間を省くには、自分のコンピュータでシェルのエイリアスにパスを登録しておきましょう。
面倒を見ているけれど、ふだん自分では使っていないMac、たとえば親のMac、スタジオのマシン、隣の部屋でローカルモデルを動かしているMac miniは、離れたところから問い合わせるしかないMacです。SSHは、どのMacにも最初から備わっている入り口です。WindowsやLinuxを含むほかのどのコンピュータからでも、そのMacのターミナルを使えます。そこから何がわかるかは、そのMacで何が動いているかによります。下の表は、質問ごとに何が必要かを示しています。
SSHでわかること
| 質問 | macOSだけの場合 | そのMacにVitalsがある場合 |
|---|---|---|
| CPUを使っているのは何? | top -o cpu、1行に1プロセス | vitals top cpu、1行に1アプリ(ヘルパーを含む) |
| メモリが足りなくなっている? | memory_pressureとvm_stat | vitals status memory |
| どれくらい熱い? ファンは回っている? | 冷却のために速度が落とされているかどうかだけ: pmset -g therm | vitals status heat |
| このプロセスは何? | ps -pとcodesign -dv | vitals process: 署名者、バージョン、起動元、子プロセス |
| 昨夜は何をしていた? | 記録なし | vitals history day |
| ポート11434で動いているのは何? | lsof -i :11434 | vitals find :11434 |
“リモートログイン”をオンにする
“リモートログイン”は、macOSのSSHサーバです。“システム設定”→“一般”→“共有”でオンにするまではオフになっています。その横の情報ボタンで、ログインできるユーザを選べます。必要なアカウントだけにしておくほうが安全です。応答するには、Macが起きている必要があります。“システム設定”→“エネルギー”(ノートパソコンでは“バッテリー”→“オプション”)の“ネットワークアクセスによるスリープ解除”をオンにすると、誰かが接続したときにスリープが解除されます。
同じネットワーク内からは、Macの名前に.localを付ければ接続できます。家の外からは入り口が必要です。最も安全なのは、ルーターのポートを開けるのではなく、Tailscaleのような、自分のデバイス間のプライベートネットワークを使うことです。自分のコンピュータの~/.ssh/configに1行書いておくとMacに短い名前を付けられ、ssh dads-macと入力するだけで済みます。
macOS標準のコマンドでわかること
topは、ターミナルでアクティビティモニタに最も近いものです。プロセスがCPU順に並び、それぞれの横にメモリが表示されます。ヘルパーを1つずつ別に数えるので、ブラウザは30行になり、ローカルモデルを動かすアプリは見覚えのない名前のプロセスになっていることがあります。memory_pressureは、Macのメモリが足りないかどうかを示す数値を1つだけ表示します。メモリプレッシャーを参照してください。
温度とグラフィックスチップは、もっと難しくなります。Appleシリコンでは、温度を度で表示するコマンドはありません。pmset -g thermは冷却のためにMacの速度が落とされているかどうかを示すだけで、sudo powermetricsは管理者パスワードを使ってグラフィックスチップを読み取り、毎秒何ページ分もの数値を出力します。macOSは履歴を残さないので、午前3時に遅くなったことは、見るころにはもう消えています。
SSHでVitalsのコマンドを実行する
Vitalsのコマンドラインは、同じMacで動いているVitalsアプリに問い合わせるので、SSH経由ではそのMacについて答えます。条件は2つです。ログインするアカウントでVitalsが動いていること(そのユーザがログインしていれば動いています)と、Vitalsの“設定”→“連携”で“AIアシスタントがVitalsに問い合わせることを許可”がオンになっていることです。この設定でコマンドが使えるようになります。
あとは、すべてのコマンドがそのMacの前で使うときと同じように動きます。statusでMac全体、app Ollamaで1つのアプリ、processで1つのプロセスの詳細、history dayで過去1日がわかります。どれにも--jsonを付ければ、自分のコンピュータのスクリプトが読めるJSONが返ります。
ssh dads-mac "~/Library/Application\ Support/Vitals/vitals version"で、応答するかを確認します。ssh -t dads-mac "~/Library/Application\ Support/Vitals/vitals top cpu --watch"でライブ表示します。Control-Cで止まります。- 入力を省くには、自分のコンピュータでシェルのプロファイルに
alias dadsmac='ssh -t dads-mac "~/Library/Application\ Support/Vitals/vitals"'を追加してから、dadsmac statusを実行します。
別のコンピュータのAIアシスタント
VitalsにはMCPサーバがあります。ClaudeなどのAIアシスタントがアプリに質問するための仕組みです。サーバは同じコマンドなので、PC上のアシスタントから別のMacに直接問い合わせられます。アシスタントのMCP設定で、コマンドをsshに、引数を["dads-mac", "~/Library/Application\\ Support/Vitals/vitals", "mcp"]に設定します。バックスラッシュは、フォルダ名の空白をそのまま残すためのものです。これでアシスタントは、「あのMacでグラフィックスチップを使っているのは何?」や「昨夜は熱かった?」に、そのMac自身の数値から答えます。
そのためには、パスワードを入力しなくてもSSHでログインできる必要があります。アシスタントはパスワードを入力できないからです。ssh-copy-id dads-macで一度だけ鍵を設定しておきましょう。
SSHではできないこと
Vitalsのウインドウとメニューバーは、それが動いているMacにだけ表示されます。SSHが運ぶのはテキストで、ウインドウではありません。離れたところから見るには、同じく“システム設定”→“一般”→“共有”にある“画面共有”を使います。SSH経由でアプリを終了するときは、そのMacの前で操作するときと同じように、まずターミナルで確認を求められます。また、ログイン画面のまま誰もログインしていないMacでは、問い合わせ先のVitalsが動いていません。
Vitalsでできること
Vitalsは、SSHで接続できるどのコンピュータからでも、Vitalsが動いているMacについて答えます。
- ヘルパーを含めたアプリを、CPU、メモリ、電力、ディスク、ネットワーク別に
- メモリプレッシャー、温度、ファン、グラフィックスチップを、管理者パスワードなしで
- あらゆるプロセスの詳細: コード署名、上位プロセス、コマンドライン、CPU時間、メモリのピーク
- 最長1年分の履歴。昨夜遅くなったことも、朝になってもまだ残っています
- スクリプト用のJSONと、別のコンピュータのAIアシスタントが使えるMCPサーバ
知っておくと便利なこと
- VitalsがSSHや独自のポートを開くことはありません。“リモートログイン”はmacOSの機能で、オンにするまではオフのままです。
- ウインドウとメニューバーはリモートでは表示されません。それには“画面共有”を使います。
よくある質問
WindowsからMacをリモート監視できますか?
はい。Windows 10と11にはSSHが付属しています。PowerShellで、Macのユーザ名とアドレスを付けてsshを実行します。先にMacで“リモートログイン”をオンにしておきます。
MacでSSHをオンにするには?
“システム設定”→“一般”→“共有”→“リモートログイン”です。その下の行に、接続するためのコマンドが表示されます。
SSHでアクティビティモニタを見られますか?
ウインドウは見られません。ターミナルでは、top -o cpuで同じプロセスが、memory_pressureでメモリプレッシャーがわかります。ウインドウそのものを見るには、“画面共有”を使います。
SSHで「vitals: command not found」と表示されるのはなぜですか?
SSHで起動したシェルは、HomebrewがPATHに追加するフォルダを読み込みません。フルパスの~/Library/Application\ Support/Vitals/vitalsを使うか、そのMacの~/.zshenvに/opt/homebrew/binを追加します。
別のMacでVitalsが動いている必要がありますか?
はい。ログインするアカウントで動いていて、Vitalsの“設定”→“連携”で“AIアシスタントがVitalsに問い合わせることを許可”がオンになっている必要があります。コマンドは動いているアプリに問い合わせるだけで、それ自体は何も計測しません。
SSHでMacの温度を確認できますか?
Appleシリコンでは、温度を表示するコマンドはmacOSにありません。pmset -g thermは、冷却のためにMacの速度が落とされているかどうかを示すだけです。そのMacでVitalsが動いていれば、vitals status heatでCPUとGPUの温度とファンがわかります。
別のMacをリモートで監視できるアプリはある?
Vitalsは、動いているMacについてSSH経由で答えます。アプリ、プロセス、温度、1年分の履歴をテキストかJSONで返し、別のコンピュータのAIアシスタントにはMCPサーバを通じて答えます。
用語集
ほかのガイド
- Macが遅い原因
- Macのバッテリーを消耗させているもの
- CPUやメモリを使っているアプリ
- Macがスリープしない原因
- Chromeのメモリ使用量が多すぎる
- Macのファンがうるさい原因
- Macのファン速度を制御する方法
- MacでRAMを解放する方法
- Dockerのメモリ使用量が多すぎる
- Dockerコンテナを停止する方法
- Mac用の音量ミキサー
- CursorのCPU使用率が高い
- Claude Codeのメモリ使用量が多すぎる
- Claude CodeとCodexの使用上限
- ClaudeアプリのCPU使用率が高い
- CodexのCPU使用率が高い
- Ollamaのメモリ使用量が多すぎる
- アクティビティモニタの代替アプリ
- iStat Menusの代替アプリ
- Statsの代替アプリ
- Mac用のタスク マネージャー
- Mac向けシステムモニタのおすすめ
- Mac向けメニューバー型モニタのおすすめ
- Mac向け音量ミキサーのおすすめ
- Mac用htop
- Mac用Process Explorer
- Mac向け温度モニタのおすすめ