【MacOS】Macをタイマーでコマンド実行するCronで定期的キャッシュ削除し動作サクサク| Apple iOS 開発 YouTube セミナー 54


macOS Catalina 10.15


- キャッシュが溜まるサブモニターアプリの紹介
- Purgeコマンドによるメモリの解放
- Cronによる定期的なコマンド実行による自動化



「以下は動画のハイライトです。」

Mac PCで動画関連のアプリを使ったり、またその開発などを行ったりすると知らぬ内にキャッシュが溜まり動作が遅くなってしまったりします。

アプリを再起動させたり、またはひどかったりするとPCを再起動する必要になったりと状況によっては作業を中断する必要もあるため結構面倒くさいことになります。

そこでおすすめなコマンドがこちらです。


sudo purge



私の場合はXcodeの開発の他、iPadをサブモニターに使うことも多々あるため特にキャッシュが気になります。


Sidecar
Duet
Yam Display



MacOSのサブモニター関連アプリは数多くありますが純正のSidecarなど無線にすると動作が非常に遅くなるとの報告があります。Yam Displayなども低価格で無線が可能なので素晴らしいアプリなのですが、キャッシュがものすごく溜まり、時にPCがフリーズすることもあります。

こうした事態を防ぐのが先ほどのpurgeコマンドでもあります。

メモリの残量の確認として下記のコマンドより残量を表見ることができます。


vm_stat | grep free
Pages free: 137884.



このようにメモリの残量が表示されます。数値が低いほどPCが重くなります。purgeによりこの数値の変化を確認しましょう。

次にcrontabでタイマーでコマンド実行するプロセスを見てみましょう。

macOSで所定のアクセス権に許可を与えた後、以下のコマンドでcrokntabを編集します。


crontab -e

* * * * * echo 'sec' > ~/Desktop/Cron/a.txt;



最初にアスタリスクが5つあります。この箇所で時間指定を行います。

アスタリスク *
一つ目:分
二つ目:時
三つ目:日
四つ目:月
五つ目:曜日

アスタリスクの箇所を数字で表記し、その後に実行コマンドを入力します。

アスタリスクに何も数字を入力しないと最小単位の1分毎にデスクトップにあるCronという名のフォルダの中にsecと記載されたa.txtが上書きされるというコマンドが走ります。

数秒間隔で実行するには以下のように記述します。


* * * * * sleep 10; echo '10 sec' > ~/Desktop/Cron/10.txt;
* * * * * sleep 20; echo '20 sec' > ~/Desktop/Cron/20.txt;
* * * * * sleep 30; echo '30 sec' > ~/Desktop/Cron/30.txt;
* * * * * sleep 40; echo '40 sec' > ~/Desktop/Cron/40.txt;
* * * * * sleep 50; echo '50 sec' > ~/Desktop/Cron/50.txt;



sleepコマンドを挟んで秒間隔で遅延させて実行させるというものです。crontabは一行ごとにタスクが分けられてそれぞれ独立して実行されます。10秒ごとにそれぞれの名前のテキストが所定のディレクトリに作成されます。

cronは実行されるたびにシステムへmailが届きます。知らぬうちにメールが溜まり大量のデータを消費してしまう可能性もあるためcrontabの末尾には以下のような不必要なメールを削除するコマンドを入力しておくことも対策の一つです。


mail
>/dev/null 2>&1



以上細かい動きは動画で解説します。


ソースコード入手方法はYouTubeのコメント欄に記載します。

目次へ戻る

2020年04月05日