Linux 및 Cygwin에서 휴대용 crontab 호스트 확인/장애 조치 논리가 필요합니다.

Linux 및 Cygwin에서 휴대용 crontab 호스트 확인/장애 조치 논리가 필요합니다.

호스트 핑 테스트는 항상 bash대화형 명령줄에서 제대로 작동합니다.시빈, 자체 crontab에서 잘못 작동합니다. 두 번째 호스트는 항상 선택되며 이유를 이해할 수 없습니다.

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이 호스트 기본 설정을 동기화하는 첫 번째 선택이 되기를 원하지만 이때 핑이 다시 돌아오지 않으면 이번 라운드에 5.3.172.247을 사용하십시오. 아직 실행되지 않은 경우 unison입니다.

그러나 명령줄에서 실행하면 항상 예상대로 작동하며 사용 가능한 경우 첫 번째 IP 주소를 에코하고 그렇지 않은 경우 두 번째 IP 주소를 에코합니다.

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

우분투에서는 crontabcli에서 모두 작동합니다.

두 운영 체제(Windows7, Linux Ubuntu 11.10 및 32비트 미만의 Cygwin)에서 컴팩트하면서도 이식성이 뛰어난 이를 달성할 수 있는 더 좋은 방법이 있습니까?

더 좋은 점은 호스트 검사를 2개 이상으로 일반화하고 싶지만 여전히 간결한 crontab 줄로 코딩하고 싶습니다.

연결 가능하면 A를 사용하고, 연결 가능하지 않으면 B를 사용하고, 연결 가능하면 C를 사용하고, 그렇지 않으면 Z를 사용합니다.

답변1

Cygwin의 crontab에서는 전체 경로를 제공 /usr/bin/ping하고 작동합니다. 어리석게도 나는 이전에 이것을 고려하지 않았습니다. 셸에서는 이미 Windows 버전보다 핑 우선 순위를 보여 주었고 오래 전에 떠났습니다.

나는 cron 환경(cygwin의 다른 많은 것들과 마찬가지로)의 단점을 감수해야 하며 내 기본 Linux 호스트와 일관성을 유지할 수 없을 것이라고 생각합니다. 그건 그렇고, 이것은 우분투에서도 마찬가지입니다 /bin/ping.

앞으로는 Cygwin 대신 andLinux 사용을 고려해보세요.

누군가 압축된 다중 마스터 장애 조치 목록 A..B..etc..Z 버전을 나에게 보여줄 수 있다면 매우 감사하겠습니다.

답변2

사용을 고려해 보셨나요?균형? 그들의 웹사이트는 Cygwin에서 실행된다는 것을 나타냅니다. localhost:5555에 지속적으로 동기화한 다음 RR 또는 장애 조치를 통해 포트 5555를 여러 호스트에 로드 밸런싱할 수 있습니다.

관련 정보