از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
چگونه یک فرمان را در Bash بدون تاخیر غیر ضروری زمان بندی کنیم
سرفصلهای مطلب
در Bash، گاهی اوقات ممکن است لازم باشد دستوری را اجرا کنید که تکمیل آن زمان زیادی طول میکشد و ممکن است نخواهید منتظر بمانید تا به طور نامحدود تمام شود. یکی از راه حل های این مشکل استفاده از دستور timeout است که مدت زمان اجرای یک فرمان را محدود می کند. در این مقاله روش مهلت زمانی یک فرمان در Bash بدون تأخیر غیر ضروری بحث خواهد شد.
مهلت زمانی یک فرمان در Bash
برای مهلت زمانی یک فرمان در Bash، می توانیم از دستور استفاده کنیم “تایم اوت” فرمان دستور “timeout” به طور پیش فرض در دسترس نیست روی همه سیستم ها، اما می توان آن را با استفاده از مدیر بسته نصب کرد روی اکثر توزیعهای لینوکس، در اینجا نحو دستور “timeout” آمده است:
در اینجا “OPTION” یک آرگومان اختیاری است که رفتار فرمان وقفه را مشخص می کند، “DURATION” محدودیت زمانی برای اجرای دستور است و “COMMAND” [ARG]” دستور و آرگومان های آن است که می خواهیم اجرا کنیم.
به عنوان مثال، فرض کنید میخواهیم دستور «خواب» را به مدت پنج ثانیه اجرا کنیم، اما میخواهیم این فرمان را پس از سه ثانیه به پایان برسانیم و در اینجا نمونه اسکریپت پوسته است:
اکو “شروع فرمان خواب با وقفه زمانی 3 ثانیه…”
تایم اوت 3 ثانیه خواب 5 ثانیه
اکو “فرمان خواب تمام شد.”
در اینجا مدت زمان تایم اوت را 3 ثانیه و مدت زمان دستور “خواب” را 5 ثانیه تعیین کرده ام. فرمان “timeout” فرمان “خواب” را پس از 3 ثانیه متوقف می کند، حتی اگر دستور “خواب” به طور معمول به مدت 5 ثانیه اجرا شود.
برای جلوگیری از تأخیر غیرضروری هنگام استفاده از دستور «timeout»، میتوانیم از گزینه «-k» استفاده کنیم. گزینه “-k” سیگنالی را مشخص می کند که در صورت تجاوز از محدودیت زمانی به فرمان ارسال می شود. این سیگنال باعث میشود که فرمان بهجای اینکه منتظر بمانید تا بهخوبی تمام شود، فوراً خاتمه یابد.
به عنوان مثال، فرض کنید میخواهیم فرمان “sleep” را به مدت پنج ثانیه اجرا کنیم، اما میخواهیم پس از سه ثانیه زمان آن را متوقف کنیم و اگر از محدودیت زمانی فراتر رفت، سیگنال SIGINT را ارسال کنیم. با اجرای دستور زیر می توانیم این کار را انجام دهیم:
اکو “شروع فرمان خواب با وقفه زمانی 3 ثانیه و سیگنال SIGINT بعد از 2 ثانیه”
تایم اوت -k 2s 3s خواب 5s
پژواک”خواب فرمان تمام شده.“
در اینجا مدت زمان وقفه را 3 ثانیه و سیگنالی را که در صورت تجاوز از محدودیت زمانی به عنوان SIGINT ارسال می شود، مشخص کرده ام. گزینه “-k 2s” مشخص می کند که سیگنال SIGINT باید پس از دو ثانیه از محدودیت زمانی ارسال شود.
نتیجه
Timeout یک فرمان در Bash ابزار مفیدی است که می تواند به شما کمک کند دستورات را با کارایی بیشتری اجرا کنید و از تاخیرهای غیرضروری جلوگیری کنید. با استفاده از دستور “timeout” و گزینه “-k”، می توانید مدت زمان اجرای یک فرمان را محدود کنید و سیگنالی ارسال کنید تا در صورت تجاوز از محدودیت زمانی، فوراً آن را خاتمه دهید. این به شما کمک می کند در زمان صرفه جویی کنید و اسکریپت های خود را کارآمدتر اجرا کنید.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-28 23:34:04