Linux 명령에 대한 임의 지연 추가


13

서버에서 병렬 명령을 수행하기 위해 func 을 사용 하고 있습니다.

다른 날, puppetvia를 다시 시작하면 func모든 서버가 puppetmaster동시에 우리 를 때리게 되는 문제가있었습니다 .

내 질문 : 개별 서버에서 실행되기 전에 지연을 추가하면서 일련의 서버에서 동일한 정확한 명령을 어떻게 실행할 수 있습니까?

예 : random_delay && service puppet restart

나는 random_delay명령 의 일부에 관심이 있습니다.

답변:


25

sleep $((RANDOM % MAXWAIT)) 여기서 MAXWAIT는 원하는 최대 지연 시간 (초)입니다.


"1"에 많이 꽂혀있는 것 같으면…
Corey S.

이것도 주목했습니다. 이것을 시도해보십시오. x in 1 2 3 4 5; RANDOM = $ x를하십시오; i = $ ((RANDOM % 10)); 에코 $ i; 수면 $ i; S19N의 답변에서 MAXWAIT는 내 답변에서 10과 사실상 유사합니다. RANDOM 시드를 변경하고 물론 원하는대로 퍼펫 코드를 추가하십시오.
dtbnguyen

2
@CoreyS. $ RANDOM은 마지막 값을 뿌려서 반복됩니다 (5/6/7, 2/7 및 5에 붙어 있습니다). sleep $((RANDOM % MAXWAIT))올바른 방법입니다. 답변을 편집하겠습니다.
Jeff Ferland

이것을 Pro Puppet에서 splay 라고 합니다. 많은 기계가 동시에 같은 일을 하는 천둥 무리 를 막기 위해 사용됩니다 . 이 외에도을 사용하여 cron 예약에 성공했습니다 fqdn_rand.
François Beausoleil

이것은 bash 특정 확장에 의존하는 것 같습니다. 에서를 dash echo sleep $((RANDOM % 900))반환합니다 sleep 0. 이것은 #!/bin/shcrontab과 같은 스크립트 나 장소 에서 사용하는 것이 안전하지 않다는 것을 의미합니다 . (문제는 dash이해가되지 않는 것 같다 $RANDOM)
Gert van den Berg

1

나는 S19N의 혁신적이면서도 이상적인 솔루션을 좋아합니다. 나는 그것이 실제로 일어날 때 여전히 결정적이지 않기 때문에 이상적이지 않다고 말합니다. 나는 물건이 언제 일어날 지 그리고 그것이 일어날 때 어떤 일이 일어날지를 확실히 보증 할 수 있습니다.

꼭두각시 오케스트레이션은 실제로 어려운 문제입니다.
"모범 사례"솔루션 중 하나는 MCollective 를 사용 하여 컴퓨터 클러스터에서 퍼펫이 실행될 때 구성 할 수있을뿐만 아니라 다른 유사한 오케스트레이션 문제에도 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.