وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

چگونه یک فرمان را در Bash بدون تاخیر غیر ضروری زمان بندی کنیم

0 1
زمان لازم برای مطالعه: 2 دقیقه


در Bash، گاهی اوقات ممکن است لازم باشد دستوری را اجرا کنید که تکمیل آن زمان زیادی طول می‌کشد و ممکن است نخواهید منتظر بمانید تا به طور نامحدود تمام شود. یکی از راه حل های این مشکل استفاده از دستور timeout است که مدت زمان اجرای یک فرمان را محدود می کند. در این مقاله روش مهلت زمانی یک فرمان در Bash بدون تأخیر غیر ضروری بحث خواهد شد.

مهلت زمانی یک فرمان در Bash

برای مهلت زمانی یک فرمان در Bash، می توانیم از دستور استفاده کنیم “تایم اوت” فرمان دستور “timeout” به طور پیش فرض در دسترس نیست روی همه سیستم ها، اما می توان آن را با استفاده از مدیر بسته نصب کرد روی اکثر توزیع‌های لینوکس، در اینجا نحو دستور “timeout” آمده است:

تایم اوت [OPTION] فرمان مدت [ARG]

در اینجا “OPTION” یک آرگومان اختیاری است که رفتار فرمان وقفه را مشخص می کند، “DURATION” محدودیت زمانی برای اجرای دستور است و “COMMAND” [ARG]” دستور و آرگومان های آن است که می خواهیم اجرا کنیم.

به عنوان مثال، فرض کنید می‌خواهیم دستور «خواب» را به مدت پنج ثانیه اجرا کنیم، اما می‌خواهیم این فرمان را پس از سه ثانیه به پایان برسانیم و در اینجا نمونه اسکریپت پوسته است:

#!/bin/bash
اکو “شروع فرمان خواب با وقفه زمانی 3 ثانیه…”

تایم اوت 3 ثانیه خواب 5 ثانیه
اکو “فرمان خواب تمام شد.”

در اینجا مدت زمان تایم اوت را 3 ثانیه و مدت زمان دستور “خواب” را 5 ثانیه تعیین کرده ام. فرمان “timeout” فرمان “خواب” را پس از 3 ثانیه متوقف می کند، حتی اگر دستور “خواب” به طور معمول به مدت 5 ثانیه اجرا شود.

پیشنهاد می‌کنیم بخوانید:  چگونه از یک Bash while Loop خارج شویم؟

چگونه یک فرمان را در Bash بدون تاخیر غیر ضروری زمان بندی کنیم

برای جلوگیری از تأخیر غیرضروری هنگام استفاده از دستور «timeout»، می‌توانیم از گزینه «-k» استفاده کنیم. گزینه “-k” سیگنالی را مشخص می کند که در صورت تجاوز از محدودیت زمانی به فرمان ارسال می شود. این سیگنال باعث می‌شود که فرمان به‌جای اینکه منتظر بمانید تا به‌خوبی تمام شود، فوراً خاتمه یابد.

به عنوان مثال، فرض کنید می‌خواهیم فرمان “sleep” را به مدت پنج ثانیه اجرا کنیم، اما می‌خواهیم پس از سه ثانیه زمان آن را متوقف کنیم و اگر از محدودیت زمانی فراتر رفت، سیگنال SIGINT را ارسال کنیم. با اجرای دستور زیر می توانیم این کار را انجام دهیم:

#!/bin/bash
اکو “شروع فرمان خواب با وقفه زمانی 3 ثانیه و سیگنال SIGINT بعد از 2 ثانیه”
تایم اوت -k 2s 3s خواب 5s
پژواک”
خواب فرمان تمام شده.

در اینجا مدت زمان وقفه را 3 ثانیه و سیگنالی را که در صورت تجاوز از محدودیت زمانی به عنوان SIGINT ارسال می شود، مشخص کرده ام. گزینه “-k 2s” مشخص می کند که سیگنال SIGINT باید پس از دو ثانیه از محدودیت زمانی ارسال شود.

چگونه یک فرمان را در Bash بدون تاخیر غیر ضروری زمان بندی کنیمچگونه یک فرمان را در Bash بدون تاخیر غیر ضروری زمان بندی کنیم

نتیجه

Timeout یک فرمان در Bash ابزار مفیدی است که می تواند به شما کمک کند دستورات را با کارایی بیشتری اجرا کنید و از تاخیرهای غیرضروری جلوگیری کنید. با استفاده از دستور “timeout” و گزینه “-k”، می توانید مدت زمان اجرای یک فرمان را محدود کنید و سیگنالی ارسال کنید تا در صورت تجاوز از محدودیت زمانی، فوراً آن را خاتمه دهید. این به شما کمک می کند در زمان صرفه جویی کنید و اسکریپت های خود را کارآمدتر اجرا کنید.

پیشنهاد می‌کنیم بخوانید:  چگونه می توانم مجوز شل اسکریپت رد شده در لینوکس را برطرف کنم؟
برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-28 23:34:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید