LinuxとCygwinでは、ポータブルcrontabホストの検証/フェイルオーバーロジックが必要です。

LinuxとCygwinでは、ポータブルcrontabホストの検証/フェイルオーバーロジックが必要です。

ホストpingテストは常にbash対話型コマンドラインで正しく機能します。シビン、独自のcrontabで誤動作します。 2番目のホストは常に選択され、理由を理解できません。

SHELL=/bin/bash

*/29 7-23 * * *  [ -n "$(pidof unison)" ]  || (partner=5.174.63.120; ping -A -c5 $partner 6 7 |grep -w "ttl" || partner=5.3.172.247; time nice unison-sync  $partner &> /tmp/sync.master.dev.log )
 which ping
/usr/bin/ping

これはデフォルトで5.174.63.120がホスト設定を同期する最初の選択になることを望んでいますが、この時点でpingが戻らない場合は、このラウンドに5.3.172.247を使用してください。まだ実行されていない場合unisonです。

ただし、コマンドラインで実行すると常に期待どおりに機能し、使用可能な場合は最初のIPアドレスをエコーし​​、そうでない場合は2番目のIPアドレスをエコーし​​ます。

partner=5.174.63.120; ping -A -c5 $partner 6 7 |grep -w "ttl" || partner=5.3.172.247; echo  $partner

Ubuntuではcrontabcliですべて動作します。

両方のオペレーティングシステム(Windows7、Linux Ubuntu 11.10、および32ビット未満のCygwin)でコンパクトで移植性の高いものを達成するためのより良い方法はありますか?

より良い点は、ホストチェックを2つ以上に一般化したいのですが、まだ簡潔なcrontab行でコーディングしたいと思います。

接続可能な場合はA、接続できない場合はB、接続可能な場合はC、その他の場合はZを使用します。

ベストアンサー1

Cygwinのcrontabはフルパスを提供して/usr/bin/ping動作します。愚かなことに、私は以前これを考慮していませんでした。シェルはすでにWindowsのバージョンよりもpingの優先順位を示しており、ずっと前に去りました。

私はcron環境(cygwinの他の多くのものと同様)の欠点を取る必要があり、私のネイティブLinuxホストと一貫性を維持することはできないと思います。ところで、これはUbuntuでも同様です/bin/ping

今後はCygwinの代わりにandLinuxの使用を検討してください。

誰かが圧縮されたマルチマスターフェイルオーバーのリストA..B..etc..Zのバージョンを私に見せることができればとても感謝します。

おすすめ記事