pyopyopyo - Linuxとかプログラミングの覚え書き - (original) (raw)
といった場合に利用できます
動作原理
起動したいコマンドを /path/to/reconnect.sh とします
macOSはネットワークの構成が変わるとDNSを再設定します
例えば
は,DNSが再設定されます
DNSの設定はファイル /etc/resolv.conf に保存されます.つまりネット切替時は,ファイル /etc/resolv.conf のタイムスタンプが更新されます.
そこでファイルのタイムスタンプを監視し,タイムスタンプが更新されたら コマンド /path/to/reconnect.sh を実行する,という設定を launchd に登録します.
launchd の設定
plist ファイルの作成
以下の内容で ~/Library/LaunchAgents/reconnect.plist を作成します
xml version="1.0" encoding="UTF-8" Label networkchange LowPriorityIO ProgramArguments /path/to/reconnect.sh WatchPaths /var/run/resolv.conf RunAtLoad
/path/to/reconnect.sh の部分は適宜修正してください.ここで起動したいスクリプトをフルパスで指定します
構文のチェック
$ plutil -lint reconnect.plist reconnect.plist: OK
動作確認
動作確認は launchctl コマンドで行います
load で登録,
$ launchctl load ~/Library/LaunchAgents/reconnect.plist
unloadで登録解除です
$ launchctl unload ~/Library/LaunchAgents/reconnect.plist
なおLoad済みの状態で,再度 launchctl load すると「Load failed: 5: Input/Output error」のエラーがでます
自動登録
設定は不要です
設定ファイルで RunAtLoad を指定しているので,ログイン時に自動で loadされます
jupyter notebookで plotly が動作しない場合は,
jupyter lab を使うと plotly が動作するようになります
コマンドラインから notebookを起動している場合は
$ jupyter notebook
で notebookを起動せずに,代わりに
$ jupyter lab
で jupyter lab を起動すれば plotly が動作します
2024年の春辺りからnotebook の仕様変更に plotly が追従できてないようで,2024年の10月の時点では深く考えずに jupyter lab を使うのが得策のようです.