retry(1) General Commands Manual retry(1)

retry - تکرار یک دستور تا زمان برآورده شدن یک معیار، معمولاً موفقیت.

retry [-v] [-h] [-u until] [-w while] command ...

این ابزار command داده‌شده را تا زمان موفقیت‌آمیز بودن آن (until) تکرار می‌کند و بین هر تلاش، با ایجاد یک تأخیر قابل‌پیکربندی درنگ می‌نماید.

ابزار retry هنگام ارسال داده‌ها به command تکرارشونده، ورودی استاندارد (stdin) را در حافظه ذخیره می‌کند و در صورت تکرار مجدد command، این stdin ذخیره‌شده مجدداً بازپخش می‌شود. این ویژگی امکان تعبیه ابزار retry را در خط‌لوله‌های (pipelines) پوسته فراهم می‌سازد.

ابزار retry خروجی استاندارد (stdout) را در حافظه ذخیره می‌کند؛ در صورتی که command موفقیت‌آمیز باشد، stdout طبق روال معمول به خروجی فرستاده می‌شود، در حالی که (while) در صورت تکرار command، خروجی stdout به جای آن به stderr منتقل می‌گردد. این امر تضمین می‌کند که خروجی تنها و فقط یک‌بار به stdout ارسال شود.

تعداد ثانیه‌های درنگ پس از هر تلاش. تعیین چندین مقدار تأخیر که با کاما از یکدیگر جدا شده‌اند اجازه می‌دهد تأخیرهای متوالی متفاوت باشند؛ در این حالت، آخرین تأخیر تکرار خواهد شد.
میزان نوسان یا ژیتر (به ثانیه) برای افزودن به هر تلاش تأخیر. یک عدد تصادفی بر حسب نانوثانیه بین صفر تا این مقدار به تأخیر اضافه خواهد شد.
پیامی که هنگام وقوع درنگِ تکرار در اعلان نمایش داده می‌شود. مقدار پیش‌فرض، نام command است.
تعداد کل دفعات تلاش برای اجرای command. به طور پیش‌فرض تا ابد تلاش می‌شود.
تکرار command تا زمانی که (until) هر یک از معیارهای جداشده با کاما محقق شود. گزینه‌ها شامل 'success'، 'true'، 'fail'، ’false'، یک عدد صحیح یا بازه‌ای از اعداد صحیح هستند. پیش‌فرض 'success' است.
تکرار command مادامی که (while) هر یک از معیارهای جداشده با کاما برقرار باشد. گزینه‌ها شامل 'success'، 'true'، 'fail'، ’false'، یک عدد صحیح یا بازه‌ای از اعداد صحیح هستند.
نمایش این پیام راهنما.
نمایش شماره نسخه.

ابزار retry پس از رسیدن به معیار مورد نظر، کد بازگشتی command در حال اجرا را برمی‌گرداند.

اگر اجرای command با یک سیگنال متوقف شود، کد بازگشتی برابر با شماره سیگنال به علاوه ۱۲۸ خواهد بود.

اگر command قابل اجرا نباشد، یا گزینه‌ها نامعتبر باشند، وضعیت ۱ بازگردانده می‌شود.

در این مثال مقدماتی، command تا ابد تکرار می‌شود.

~$ retry --until=success -- false
retry: 'false' returned 1, backing off for 10 seconds and trying again...
retry: 'false' returned 1, backing off for 10 seconds and trying again...
retry: 'false' returned 1, backing off for 10 seconds and trying again...

در این مثال پیچیده‌تر، هر بار اجرای curl تا زمان موفقیت آن تکرار می‌شود (until)، و در آن نقطه خروجی stdout تنها و فقط یک‌بار به مؤلفه بعدی در خط‌لوله منتقل می‌گردد.

~$ retry -- curl --fail http://localhost/entities | \ 
jq ... | \ 
retry -- curl --fail -X POST http://localhost/resource | \ 
logger -t resource-init
در این مثال، تأخیرها را به طور نمایی تا ۶۴ ثانیه افزایش می‌دهیم (until)، و سپس تا زمان توقف همین مقدار تکرار می‌شود.
~$ retry --until=success --delay "1,2,4,8,16,32,64" -- false
retry: false returned 1, backing off for 1 second and trying again...
retry: false returned 1, backing off for 2 seconds and trying again...
retry: false returned 1, backing off for 4 seconds and trying again...
retry: false returned 1, backing off for 8 seconds and trying again...
retry: false returned 1, backing off for 16 seconds and trying again...
retry: false returned 1, backing off for 32 seconds and trying again...
retry: false returned 1, backing off for 64 seconds and trying again...
retry: false returned 1, backing off for 64 seconds and trying again...
retry: false returned 1, backing off for 64 seconds and trying again...

در این مثال، پیش از انصراف سه بار تلاش انجام می‌گیرد.

~$ retry --times=3 -- false
retry: false returned 1, backing off for 10 seconds and trying again...
retry: false returned 1, backing off for 10 seconds and trying again...
retry: false returned 1, giving up.

Graham Leggett <minfrin@sharp.fm>

retry-1.0.6