سؤال

هل هذا الأمر موجود لـ Linux؟

runonce --dampen 300 echo "hello"

سيأخذ الأمر أمرًا لتشغيله ومعايير اختيارية للحد من تنفيذه بشكل متكرر.

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

إذا ركضت

runonce --dampen 300 echo "hello"
runonce --dampen 300 echo "hello"
runonce --dampen 300 echo "hello"

من بين ثلاثة قذائف فرعية مختلفة في نفس الوقت تقريبًا ، كان أول واحد يعيش مقابل 300 مللي ثانية وطباعة مرحبًا. سيعود الاثنان الآخران على الفور ولا يفعلون شيئًا.

إذا كان هذا موجودًا ، فما هو اسم الأداة أو رابط إلى صفحة المشروع؟

هل كانت مفيدة؟

المحلول

حل ممكن ، مأخوذ بطريقة أو بأخرى من flock صفحة الرجل ، ستكون:

#!/bin/sh
# name me 'runonce'

timeout="$1"; shift
command="$1"; shift
hash=$(echo "$command" "$@" | md5sum)
(
  flock -xw0 3 || exit
  sleep "$timeout"
  "$command" "$@"
) 3>"/tmp/$hash"

مثال الاستخدام:

runonce 10 echo "hello"

حيث 10 هو عدد من الثواني (وليس ميلي ثانية).

تعديل: تم تقديم التجزئة على معلمات commad+

نصائح أخرى

أعتقد أنك قد ترغب في النظر إلى كرون, ، لمعرفة ما إذا كان هذا يفي بمتطلباتك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top