timeout يك ابزار خط فرمان است كه يك فرمان مشخص را اجرا مي كند و اگر هنوز پس از يك دوره زمان معيني در حال اجرا باشد آن را خاتمه مي دهد. به عبارت ديگر timeout به شما امكان مي دهد يك دستور با محدوديت زماني معيني را اجرا كنيد. timeout دستوري از بخش نرم افزار هاي اصلي GNU كه تقريبا در هر توزيع لينوكس نصب شده است. وقتي مورد استفاده قرار مي گيرد كه مي خواهيد دستوري را با گزينه هاي زمان بندي داخلي اجرا كنيد.
در اين مقاله نحوه استفاده از دستور timeout لينوكس را توضيح خواهيم داد. با ما در شتابان هاست همراه باشيد.
۱) نحوه استفاده از دستور timeout
نحوه كار با timeout به شرح زير است :
{[timeout [OPTIONS] DURATION COMMAND [ARG]…}
DURATION
اختياري است مي تواند يك عدد صحيح مثبت يا يك عدد متغيير باشد:
- s_ثانيه (پيش فرض)
- m_ دقيقه
- h_ ساعت
- d_ روز
در اينجا چند مثال اساسي وجود دارد كه نحوه استفاده از دستور timeout را نشان مي دهد:
- پس از پنج ثانيه يك فرمان را خاتمه دهيد:
timeout 5 ping 8.8.8.8
- پس از پنج دقيقه يك فرمان را خاتمه دهيد:
timeout 5m ping 8.8.8.8
- يك فرمان را بعد از يك دقيقه و شش ثانيه خاتمه دهيد:
timeout 1.1m ping 8.8.8.8
- اگر مي خواهيد فرماني را اجرا كنيد كه نياز به امتيازات بالاتري مانند
tcpdump
داشته باشد ، قبل از پايان زمان ، sudo را آماده كنيد:
sudo timeout 300 tcpdump -n -w data.pcap
۲) ارسال سيگنال خاص
اگر سيگنال ارسال نشود ، دستور timeout سيگنال SIGTERM را به فرمان مديريت شده ارسال مي كند. شما مي توانيد با استفاده از گزينه -s
(--signal
) سيگنال را ارسال كنيد.
به عنوان مثال ، براي ارسال SIGKILL به فرمان ping بعد از يك دقيقه استفاده كنيد:
sudo timeout -s SIGKILL ping 8.8.8.8
براي به دست آوردن ليستي از تمام سيگنال هاي موجود ، از دستور kill -l استفاده كنيد:
Kill-l
۳) كشتن فرايندهاي گير كرده
SIGTERM ، سيگنالي است كه ممكن است هنگام ارسال شدن از timeout عبور كند و توسط برخي از فرايندها ناديده گرفته شود. در آن شرايط ، پس از ارسال ، روند ارسال سيگنال همچنان ادامه دارد؛ براي اطمينان از اينكه فرايند هاي گير كرده از بين رفته است ، از عبارت -k
(--kill-after
استفاده كنيد. هنگامي كه اين گزينه بعد از رسيدن مدت زمان معيني برطرف شد ، دستور timeout سيگنال SIGKILL
را به برنامه مديريت شده ارسال مي كند كه نمي توان آن را ناديده گرفت.
در مثال زير ، timeout
دستور را به مدت يك دقيقه اجرا مي كند و اگر خاتمه نياورد ، پس از ده ثانيه آن را مي كشد:
sudo timeout -k 10 1m ping 8.8.8.8
timeout -k “./test.sh”
پس از رسيدن به محدوديت زماني معين كشته شده است.
۴) حفظ وضعيت خروجي
timeout به مدت ۱۲۴ باز مي گردد . در غير اين صورت ، وضعيت خروج فرمان مديريت شده را بر مي گرداند.
براي بازگشت وضعيت خروج فرمان از گزينه --preserve-status
استفاده كنيد.
timeout –preserve-status 5 ping 8.8.8.8
اين گزينه براي زماني است كه مي خواهيد يك دستور تعاملي را اجرا كنيد كه به ورود كاربر نياز داريد.
timeout براي اجراي يك دستور معين با محدوديت زماني استفاده مي شود. دستور timeout ساده بوده و گزينه هاي زيادي ندارد.
ما را در شتابان هاست دنبال كنيد.