rsyncのデーモン化
Mountain Lionまでは,StartupItemsで動かしていましたが,YosemiteではStartupItemsは無効化されてしまいました.
で,あちこち調べたところ,正しい方法としては,/Library/LaunchDaeomsにplistとして置くのが良さそうです.
まず,このテキストをXcodeなどでplist化して適当なところに保存します.
{ Label = "local.rsyncd"; ProgramArguments = ( "/usr/bin/rsync", "--daemon", ); inetdCompatibility = { Wait = NO; }; Sockets = { Listeners = { SockServiceName = rsync; SockType = stream; }; }; }
ファイル名は,Labelと一致させるために,この例では,local.rsyncd.plistとします.
そして,local.rsyncd.plistがホームディレクトリーにあるとして,
cd /Library/LaunchDaemons sudo cp ~/local.rsyncd.plist . sudo chmod a+x local.rsyncd.plist sudo launchctl load local.rsyncd.plist
なお,Mac OS Xに付属のrsyncは陳腐化している上にバグがありますので,自分で最新の公式ソースをbuildして差し替えることを強くおすすめします.設定ファイルは,/etc内のrsyncd.secretsとrsyncd.confです.
Staticなルートの追加
なんか,クライアント側でやるべきとは思わないのですが,LinuxのルーターがARPを発しても全然効かないようなので,クライアントであるMacのほうでStatcなルーティングを試してみます.
{ Label = "local.routeadd"; RunAtLoad = YES; KeepAlive = NO; ProgramArguments = ( "/sbin/route", add, "-net", "192.168.99.0", "-netmask", "255.255.255.0", "-gateway", "192.168.1.99", ); StartInterval = 1200; }
こんなんでどうでしょう.下記リンクのページを参考にしていて,20分ごとにroute add…が実行されます.
参考にしたページ
“参考”でなく,そのまんまかも^^;
/System/Library/LaunchDaemonsは,El Capitanでは書き込み・修正できないので,/Library/LaunchDaemonsに変更しました.