1. はじめに
動機: M4 Max搭載Mac Studioという強力なインフラを最大限活かすため、ローカルLLM(Qwen 3.5など)の起動・停止や、
purgeコマンドによるメモリリフレッシュをGUI(メニューバー)から行えるようにしたかった。使用ツール: SwiftBar(Macのメニューバーにスクリプトの結果を表示し、操作を可能にするオープンソースアプリ)
2. SwiftBarの導入
インストール:
またはSwiftBar公式サイト brew install --cask swiftbarで導入。プラグインディレクトリの設定: スクリプトを保存するための専用ディレクトリ(例:
~/Documents/SwiftBar)を作成し、SwiftBarに指定する。
3. メモリ解放(purge)の自動化
sudo 権限が必要な purge コマンドを、パスワード入力なしでメニューバーから実行するための設定。
visudoの設定: セキュリティを保ちつつ、特定のコマンドだけパスワードなしで実行できるようにする。
-------------Bash---------------------------------- # sudo visudo で末尾に追記 hidenari[User名] ALL=(ALL) NOPASSWD: /usr/sbin/purge---------------------------------------------スクリプトの作成 (
purge_memory.1m.sh):1mという名前をつけることで1分ごとに更新。実行時の標準エラー出力を
> /dev/null 2>&1で捨てるのが、SwiftBarに「はてなマーク(エラー)」を出させないコツ。
4. ローカルLLM(llama-server)の管理
LLMのステータス(Running/Stopped)を監視し、ワンクリックで起動・停止するスクリプト。
ポイント1:PIDファイルの隠しファイル化: SwiftBarはディレクトリ内の全ファイルを実行しようとするため、PIDファイル(
.llama-server.pid)の先頭にドットを付けて無視させる。これで「はてなマーク」の発生を防ぐ。ポイント2:フルパスの指定: GUIアプリであるSwiftBarから実行する場合、環境変数や相対パス(
$0)が不安定になるため、スクリプト内でSELF_PATHを定義し、絶対パスで自分自身を呼び出すように設計。
5. トラブルシューティング:なぜ「はてなマーク」が出るのか?
エンジニアとしてハマりやすいポイントの解説。
原因: SwiftBarがスクリプトではないファイル(PIDファイルやバックアップファイル)を読み込もうとしてエラーを吐く。
対策: ディレクトリ内の不要なファイルを削除(
rm llama-server.pid)し、一時ファイルは必ずドットから始まる名前にする。
6. まとめ
M4 Maxの広大なメモリを、指先ひとつでいつでもリフレッシュできる最強の環境が完成。
シェルスクリプトという「古くて新しい道具」を、SwiftBarのような現代のツールと組み合わせる楽しさ。
0 件のコメント:
コメントを投稿