Thêm một độ trễ ngẫu nhiên cho lệnh Linux


13

Tôi đang sử dụng func để thực hiện các lệnh song song trên các máy chủ của chúng tôi.

Vào một ngày khác, chúng tôi đã gặp sự cố khi khởi động lại dịch vụ puppetthông qua funckhiến tất cả các máy chủ của chúng tôi tấn puppetmastercông cùng một lúc.

Câu hỏi của tôi: Làm thế nào tôi có thể thực thi cùng một lệnh chính xác trên một tập hợp các máy chủ trong khi thêm một độ trễ trước khi nó được thực thi trên các máy chủ riêng lẻ?

Ví dụ: random_delay && service puppet restart

Tôi quan tâm đến random_delaymột phần của lệnh.

Câu trả lời:


25

sleep $((RANDOM % MAXWAIT)) trong đó MAXWAIT là độ trễ mong muốn tối đa tính bằng giây.


Có vẻ như bị kẹt ở "1" rất nhiều nếu bạn lặp lại ... Suy nghĩ?
Corey S.

Nhận thấy điều này là tốt. Hãy thử điều này, cho x trong 1 2 3 4 5; làm RANDOM = $ x; i = $ ((RANDOM% 10)); tiếng vang $ i; ngủ $ i; được thực hiện Rõ ràng, MAXWAIT trong câu trả lời của S19N có hiệu lực tương tự như 10 trong câu trả lời của tôi. Thay đổi hạt giống RANDOM và thêm mã rối vào bất cứ điều gì bạn muốn tất nhiên.
dtbnguyen

2
@CoreyS. $ RANDOM đang bỏ qua giá trị cuối cùng, do đó vòng lặp (Tôi đã bị kẹt vào ngày 5/6/7, 2/7 và 5). sleep $((RANDOM % MAXWAIT))là cách chính xác. Tôi sẽ chỉnh sửa câu trả lời như vậy.
Jeff Ferland

Điều này được gọi là splay trong Pro Puppet. Nó được sử dụng để ngăn chặn một đàn sấm sét , trong đó nhiều máy móc đang làm điều tương tự cùng một lúc. Thêm vào đó, tôi đã thành công với việc lập lịch sử dụng cron fqdn_rand.
François Beausoleil

Điều này dường như phụ thuộc vào các phần mở rộng dành riêng cho bash. Đổi dash echo sleep $((RANDOM % 900))lại sleep 0. Điều này có nghĩa là không an toàn khi sử dụng trong #!/bin/shcác tập lệnh hoặc địa điểm như crontab. (Các vấn đề dường như dashkhông hiểu $RANDOM)
Gert van den Berg

1

Tôi khá thích giải pháp sáng tạo của S19N, nhưng ít hơn lý tưởng. Tôi chỉ nói rằng nó ít hơn lý tưởng, vì nó vẫn không mang tính quyết định khi mọi thứ sẽ thực sự xảy ra. Tôi muốn có thể đảm bảo khi nào mọi thứ sẽ xảy ra, và những gì sẽ xảy ra khi nó xảy ra.

Dàn nhạc rối thực sự là một vấn đề khó khăn .
Một trong những giải pháp "thực hành tốt nhất" là sử dụng MCollective , nó sẽ không chỉ cho phép bạn định cấu hình khi con rối chạy trên cụm máy của bạn, mà bạn còn có thể sử dụng nó cho các vấn đề phối hợp tương tự khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.