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に変更しました.