MENU

MacOSでメモリをバカ食いするdistnotedプロセスを自動で定期的に削除する

目次

Macのメモリが食い潰される

キャプチャでは数百Mbyte程度のメモリ使用量ですが、放置しておくと数Gbyte〜数十Gbyteまでメモリを使用していることがありました。

distnoted

Macにおけるdistnotedプロセスとは

Apleのコミュニティの投稿によると、

distnoted(distributed notification server)は、タスク(プロセス)間通信を行うためのデーモンです。macOS内部も含め広範囲で使われています。

とされており、どのアプリが原因となって問題が生じるのか特定するのは難しいようです。

対処1 手動でコマンド実行

以下のコマンドをターミナルで実行し、distnotedプロセスを削除すればさしあたってメモリは解放されます。

killall distnoted

killallコマンドはプロセス名指定によるプロセスの削除です。

対処2 自動でコマンド実行

手動でのコマンド実行では、「気がついたらメモリが食い潰され、Macの動作が重くなっていた。」状態に対処できません。大して重くないコマンドなので一定間隔で自動実行して快適な状態を維持したいところ。

自動実行の方法として、Macではcronよりもlaunchctlが推奨されているようなので、launchctlを利用してコマンドを実行することにします。

手順

  1. コマンド実行を行うシェルスクリプトファイルを作成する(ファイル名はkill_distnoted.shとしました。)。
   #!/bin/zsh

   killall distnoted
  1. launchctlで登録するplistファイルを作成する(ファイル名はkill_distnoted.plistとしました。)。
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
   <plist version="1.0">
   <dict>
     <key>Label</key>
     <string>kill_distnoted.sh</string>
     <key>Program</key>
     <string>/Users/{USER_NAME}/bin/automator/kill_distnoted.sh</string>
     <key>StartInterval</key>
     <integer>7200</integer>
   </dict>
   </plist>

先ほど作成したシェルスクリプトファイルの名称は、

kill_distnoted.sh

場所は、

/Users/{USER_NAME}/bin/automator/kill_distnoted.sh

実行間隔は7200秒(2時間ごと)
で指定しています。

  1. plistファイルを
    ~/Library/LaunchAgents/com.sh.kill_distnoted.plist
    に保存。
  2. 以下のコマンドを実行してシェルスクリプトが自動実行されるよう登録。
   launchctl load ~/Library/LaunchAgents/com.sh.kill_distnoted.plist
  1. 確認
   launchctl list | grep "kill_distnoted"

   (結果)
   -    0   kill_distnoted.sh

この手順で正しいはず…。しばらく様子を見てみます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次