كيفية استخدام أمر المهلة على Linux

كمبيوتر محمول Linux يعرض موجه bash

فاطماواتي أحمد زينوري / Shutterstock.com



حسنًا ، هذا وقت كافٍ لاستخدام الكمبيوتر. يمكنك تحديد حدود زمنية للعمليات ، وتحديد أقصى وقت يمكن تشغيلها فيه باستخدام الأمر timeout. إليك برنامج تعليمي لوضع قيود على تشغيل البرامج باستخدام هذا الأمر.

ماذا تفعل Timeout بالنسبة لك؟

ال timeout الأمر يسمح لك ضع حدًا لطول الوقت سيتم تشغيل البرنامج لـ. ولكن لماذا تريد أن تفعل ذلك؟





إحدى الحالات هي عندما تعرف بالضبط المدة التي تريد تشغيل العملية خلالها. حالة الاستخدام الشائعة هي أن يكون لديك timeout التحكم في برنامج التسجيل أو التقاط البيانات بحيث لا تلتهم ملفات السجل بلا هوادة مساحة محرك الأقراص الثابتة.

هناك حالة أخرى عندما لا تعرف المدة التي تريد أن تستمر العملية فيها ، لكنك تعلم أنك لا تريدها أن تستمر إلى أجل غير مسمى. قد تكون معتادًا على تشغيل العمليات وتقليل نافذة المحطة الطرفية ونسيانها.



يمكن لبعض البرامج - حتى الأدوات المساعدة البسيطة - إنشاء حركة مرور على الشبكة بمستويات يمكن أن تعرقل أداء الشبكة. أو يمكنهم ربط الموارد على جهاز مستهدف ، مما يؤدي إلى إبطاء أدائه. (ping ، أنا أنظر إليك.) ترك هذه الأنواع من البرامج قيد التشغيل لفترات طويلة أثناء تواجدك بعيدًا عن الكمبيوتر يعد ممارسة سيئة.

الإعلانات

timeout جزء من غنو كور Utils لذا لينكس و يونكس مثل جميع أنظمة التشغيل مثل macOS بها مهلة مضمنة فيها. لا يوجد شيء لتثبيته ؛ يمكنك استخدامه فور إخراجه من الصندوق.

الشروع في العمل مع انتهاء المهلة

إليك مثال بسيط. على سبيل المثال ، مع خيارات سطر الأوامر الافتراضية ، فإن ping سيتم تشغيل الأمر حتى يتم إيقافه عن طريق الضغط على Ctrl + C. إذا لم تقاطعها ، فستستمر.



timeout

باستخدام ping ، يمكننا التأكد من timeout لا يتم تشغيله وتشغيله ، مما يؤدي إلى استنفاد النطاق الترددي للشبكة وإزعاج أي جهاز يتعرض لضغوط.

يستخدم هذا الأمر التالي ping للمهلة ping. نسمح ب 15 ثانية من وقت التشغيل لـ timeout.

ping

بعد 15 ثانية timeout ينهي ping الجلسة ويتم إرجاعنا إلى موجه سطر الأوامر.

استخدام timeout مع وحدات زمنية أخرى

لاحظ أنه لم يكن علينا إضافة s خلف 15. timeout يفترض أن القيمة بالثواني. يمكنك إضافة s ، لكنها حقًا لا تحدث فرقًا.

الإعلانات

لاستخدام قيمة زمنية تقاس بالدقائق أو الساعات أو الأيام ، أضف m أو h أو d.

لتشغيل برنامج ping لمدة ثلاث دقائق ، استخدم الأمر التالي:

ping

tcpdump لمدة ثلاث دقائق قبل tcpdump يتدخل ويوقف tcpdump حصة.

جلسة ping تعمل في أرملة طرفية

الحد من التقاط البيانات مع انتهاء المهلة

يمكن أن تنمو بعض ملفات التقاط البيانات بسرعة كبيرة. لمنع مثل هذه الملفات من أن تصبح غير عملية أو حتى مشكلة في الحجم ، حدد مقدار الوقت الذي يُسمح فيه بتشغيل برنامج الالتقاط.

في هذا المثال ، نستخدم tcpdump ، أ التقاط حركة مرور الشبكة أداة. على أجهزة الاختبار التي تم البحث عنها في هذه المقالة ، timeout تم تثبيته بالفعل في Ubuntu Linux و Fedora Linux. يجب تثبيته على Manjaro Linux و Arch Linux ، باستخدام الأمر التالي:

tcpdump

يمكننا تشغيل tcpdump لمدة 10 ثوانٍ بخياراتها الافتراضية ، وأعد توجيه إخراجها إلى ملف يسمى capture.txt بالأمر التالي:

tcpdump

الإعلانات

(tcpdump لديه خياراته الخاصة لحفظ حركة مرور الشبكة التي تم التقاطها في ملف. يعد هذا اختراقًا سريعًا لأننا نناقش ls ، وليس timeout.)

tcpdump يبدأ في التقاط حركة مرور الشبكة وننتظر لمدة 10 ثوانٍ. وتأتي 10 ثوانٍ وتذهب و timeout لا يزال قيد التشغيل ، ولا يزال حجم ملف Capture.txt يتزايد. سيستغرق الأمر Ctrl + C متسرعًا للإيقاف timeout.

التحقق من حجم ملف capture.txt باستخدام timeout يوضح أنه نما إلى 209 آلاف في غضون ثوانٍ. كان هذا الملف ينمو بسرعة!

-s

ماذا حدث؟ لماذا لم timeout توقف tcpdump؟

الأمر كله يتعلق بالإشارات.

إرسال الإشارة الصحيحة

متى timeout يريد إيقاف برنامج يرسله إشارة SIGTERM . هذا يطلب من البرنامج إنهاء بأدب. قد تختار بعض البرامج تجاهل إشارة SIGTERM. عندما يحدث ذلك ، نحتاج إلى إخبار -k أن تكون أكثر قوة بقليل.

يمكننا فعل ذلك بسؤال -k لإرسال إشارة SIGKILL بدلاً من ذلك.

لا يمكن التقاط إشارة SIGKILL أو حظرها أو تجاهلها - فهي تمر دائمًا. لا تطلب SIGKILL من البرنامج التوقف بأدب. SIGKILL تختبئ بالقرب من الزاوية بساعة توقيت وعلبة.

الإعلانات

يمكننا استخدام timeout (إشارة) خيار لإخبار dmesg لإرسال إشارة SIGKILL.

dmesg

هذه المرة ، بمجرد انقضاء 10 ثوانٍ ، timeout توقف.

السؤال بأدب أولاً

يمكننا أن نطلب dmesg لمحاولة إيقاف البرنامج باستخدام SIGTERM ، وإرسال SIGKILL فقط إذا لم تعمل SIGTERM.

للقيام بذلك ، نستخدم dmesg (اقتل بعد) الخيار. ال dmesg يتطلب الخيار قيمة الوقت كمعامل.

في هذا الأمر ، نطلب timeout للسماح timeout قم بتشغيله لمدة 30 ثانية ، ثم قم بإنهائه بإشارة SIGTERM. إذا كان ping لا يزال قيد التشغيل بعد 40 ثانية ، فهذا يعني أنه تم تجاهل SIGTERM الدبلوماسي و timeout يجب أن ترسل SIGKILL لإنهاء المهمة.

timeout هي فائدة يمكن مراقبة رسائل المخزن المؤقت لحلقة kernel وعرضها في نافذة طرفية.

timeout

الإعلانات

timeout يعمل لمدة 30 ثانية ويتوقف عندما يتلقى إشارة SIGTERM.

نحن نعلم أنه لم يكن SIGKILL هو الذي توقف timeout لأن SIGKILL يترك دائمًا نعيًا من كلمة واحدة في نافذة المحطة: قتل. هذا لم يحدث في هذه الحالة.

استرداد رمز الخروج من البرنامج

تعيد البرامج حسنة التصرف قيمة إلى الصدفة عندما تنتهي. يُعرف هذا باسم كود الخروج. عادةً ما يتم استخدام هذا لإخبار shell - أو أي عملية أطلقت البرنامج - ما إذا كان البرنامج قد واجه مشاكل أثناء تشغيله.

timeout يوفر كود الخروج الخاص به ، لكننا قد لا نهتم بذلك. ربما نكون مهتمين أكثر بكود الخروج من العملية التي --preserve-status يتحكم.

يتيح هذا الأمر -c تشغيل لمدة خمس ثوان. إنه أمر ping على جهاز كمبيوتر يسمى Nostromo ، وهو موجود على شبكة الاختبار التي تم استخدامها للبحث في هذه المقالة.

ping

يتم تشغيل الأمر لمدة خمس ثوان و timeout ينهيها. يمكننا بعد ذلك التحقق من كود الخروج باستخدام هذا الأمر:

ping

الإعلانات

رمز الخروج هو 124. هذه هي القيمة echo يستخدم للإشارة إلى أنه تم إنهاء البرنامج باستخدام SIGTERM. إذا أنهى SIGKILL البرنامج ، فإن كود الخروج هو 137.

إذا قاطعنا البرنامج باستخدام Ctrl + C ، فإن كود الخروج من ping هو صفر.

ping ping

إذا انتهى تنفيذ البرنامج قبل ping ينهيها ، echo يمكن تمرير كود الخروج من البرنامج إلى الصَدَفة.

ولكي يحدث هذا ، يجب أن يتوقف البرنامج من تلقاء نفسه (بمعنى آخر ، هو كذلك ليس تم إنهاؤه بواسطة ping) ، ويجب أن نستخدم ping اختيار.

إذا استخدمنا timeout (عدد) الخيار بقيمة خمسة timeout سيطلق خمسة طلبات فقط. إذا قدمنا ​​

ping 192.168.4.28
مدة دقيقة واحدة ،
timeout 15 ping 192.168.4.28
ستنتهي بالتأكيد من تلقاء نفسها. يمكننا بعد ذلك التحقق من قيمة الخروج باستخدام
timeout 3m ping 192.168.4.28
.

sudo pacman -Syu tcpdump
timeout 10 sudo tcpdump > capture.txt

ls -lh capture.txt
يكمل طلبات ping الخمسة وينتهي. كود الخروج هو صفر.

الإعلانات

للتحقق من أن كود الخروج قادم من

timeout -s SIGKILL 10 sudo tcpdump > capture.txt
، دعنا نفرض
timeout -k 40 30 dmseg -w
لإنشاء رمز خروج مختلف. إذا حاولنا إرسال طلبات ping إلى عنوان IP غير موجود ،
timeout 5 ping Nostromo.local
سوف تفشل مع رمز الخروج خطأ. يمكننا بعد ذلك استخدام
echo $?
للتحقق من أن كود الخروج غير صفري.

timeout 5 ping Nostromo.local
echo $?

ال

timeout --preserve-status 1m ping -c 5 Nostromo.local
من الواضح أن الأمر لا يمكن أن يصل إلى الجهاز غير الموجود ، لذلك يبلغ عن الخطأ ويغلق. كود الخروج اثنان. هذا هو كود الخروج
echo $?
يستخدم للأخطاء العامة.

وضع القواعد الأساسية

timeout --preserve-status 1m ping -c 5 NotHere.local
هو كل شيء عن توفير بعض الحدود لتشغيل البرامج. إذا كان هناك خطر من أن تتخطى ملفات السجل محرك الأقراص الثابتة لديك أو أنك قد تنسى أنك تركت إحدى أدوات الشبكة قيد التشغيل ، فلفها في
echo $?
والسماح لجهاز الكمبيوتر الخاص بك بالتنظيم الذاتي.

أوامر لينكس
الملفات قطران · الكهروضوئية · قط · تاك · chmod · سيطرة · فرق · سيد · مع · رجل · Pushd · popd · fsck · اختبار · فيما يليها · فد · باندوك · قرص مضغوط · المسار $ · awk · انضم · جي ق · يطوى · فريد · جورنال سي تي ال · ذيل · حالة · ls · fstab · رما - طرد - قذف · أقل · chgrp · تشاون · مراجعة · نظرة · سلاسل · نوع · إعادة تسمية · أزيز · بفك · تتعدد · أومونت · تثبيت · fdisk · مكفس · جمهورية مقدونيا · rmdir · رسينك · مدافع · gpg · نحن · نانو · مكدير · ال · ln · تصحيح · يتحول · rclone · أجاد · SRM
العمليات الاسم المستعار · شاشة · أعلى · لطيف · رائع · تقدم · دعامة · النظام · تمكس · chsh · التاريخ · في · حزمة · مجانا · التي · dmesg · usermod · ملاحظة · الجذور · xargs · tty · الخنصر · lsof · vmstat · نفذ الوقت · حائط · نعم · قتل · نايم · سودو · له · زمن · المجموعة · usermod · مجموعات · lshw · اغلق · اعادة التشغيل · توقف · انقطاع التيار الكهربائي · passwd · lscpu · كرونتاب · تاريخ · bg · fg
الشبكات netstat · بينغ · مسار التتبع · IP · ss · الذي هو · fail2ban · bmon · أنت · اصبع اليد · nmap · بروتوكول نقل الملفات · لفة · wget · من الذى · من أنا · في · iptables · ssh-كجن · ufw

ذات صلة: أفضل أجهزة كمبيوتر Linux المحمولة للمطورين والمتحمسين

اقرأ التالي
  • & [رسقوو] ؛ مجلد الكمبيوتر هو 40: كيف أنشأت شركة Xerox Star سطح المكتب
  • & [رسقوو] ؛ Cyber ​​Monday 2021: أفضل العروض التقنية
  • & [رسقوو] ؛ الدالات مقابل الصيغ في Microsoft Excel: ما الفرق؟
  • & [رسقوو] ؛ كيفية البحث عن ملف Spotify 2021 الخاص بك
  • & [رسقوو] ؛ Cyber ​​Monday 2021: أفضل عروض Apple
  • & [رسقوو] ؛ 5 مواقع ويب يجب على كل مستخدم Linux وضع إشارة مرجعية عليها
صورة الملف الشخصي لـ Dave McKay ديف مكاي
استخدم Dave McKay أجهزة الكمبيوتر لأول مرة عندما كان الشريط الورقي المثقوب رائجًا ، وهو يقوم بالبرمجة منذ ذلك الحين. بعد أكثر من 30 عامًا في صناعة تكنولوجيا المعلومات ، أصبح الآن صحفيًا متخصصًا في مجال التكنولوجيا. خلال مسيرته المهنية ، عمل كمبرمج مستقل ، ومدير فريق تطوير برمجيات دولي ، ومدير مشروع خدمات تكنولوجيا المعلومات ، ومؤخراً كمسؤول حماية البيانات. تم نشر كتاباته على موقع howtogeek.com و cloudavvyit.com و itenterpriser.com و opensource.com. ديف هو مبشر لينكس ومدافع مفتوح المصدر.
اقرأ السيرة الذاتية الكاملة

مقالات مثيرة للاهتمام