10
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Mac上で暴走するClipyを鎮める

Last updated at Posted at 2018-01-04

クリップボードを拡張する「Clipy」は重宝しているのですが、たまに暴走していてmacが轟音をあげることがしばしば…
というわけで、ClipyのCPU使用率とメモリ使用量を監視して、Clipyが暴走したら自動でアプリを再起動させます。

参考

手順

1.「terminal-notifier」をインストール
Clipyの暴走を知らせるために後々使います

$ brew install terminal-notifier

2.Clipy起動スクリプト作成

~/Documents/applescripts/runClipy.scpt
tell application "Clipy" to run

3.監視用shellスクリプト作成
※9行目のCPU使用率とメモリ使用量は適宜変更

~/Library/LaunchAgents/watchclipy.sh
#!/usr/local/bin/zsh

set -A array $(ps aux -m | grep Clipy | grep -v grep | grep $USER)
if [ $(echo $array |wc -w) -eq 0 ]
then    # Clipyが起動してなかったら通知・起動
    terminal-notifier -message 'Clipy is dead!!'
    osascript ~/Documents/applescripts/runClipy.scpt
else    # メモリ消費量が128MBを超えてる or CPU使用率が10%以上ならkill
    if [ $array[6] -gt 128000 -o $(echo "$array[3]>10" | bc) -eq 1 ]
    then
        kill $array[2] && terminal-notifier -message 'Clipy was killed.'
        osascript ~/Documents/applescripts/runClipy.scpt
    fi
fi

4.LaunchAgents用のplistを作成
※下記の場合、60秒毎にshellが動きます

~/Library/LaunchAgents/watch.clipy.agent.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>watch.clipy.agent</string>
	<key>ProgramArguments</key>
	<array>
		<string>/Users/akimats/Documents/sh/watchclipy.sh</string>
	</array>
	<key>StandardErrorPath</key>
	<string>/dev/null</string>
	<key>StandardOutPath</key>
	<string>/dev/null</string>
	<key>StartInterval</key>
	<integer>60</integer>
</dict>
</plist>

5.Launchdへ登録

$ launchctl load ~/Library/LaunchAgents/watch.clipy.agent.plist

6.Launchdへ登録されているか確認

$ launchctl list | grep watch.clipy.agent

結果

Clipy was killed!!!!!
スクリーンショット 2017-12-27 12.47.03.png
※ちゃんと生き返らせてます。メッセージは適宜変更して下さい。

10
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?