قم بتنفيذ العديد من البرامج في نفس الوقت في نص تهيئة/باش
سؤال
مرحبًا ، أنا أعمل مع جهاز محاكاة تستخدم البرامج النصية RCS للتمهيد ، هذا هو البرنامج النصي الخاص بي
cd /tests
./test1 &
./test2 &
./test3 &
./test4
exit
ما أريده هو إجراء كل الاختبار في نفس الوقت وأن يتم تنفيذ أمر الخروج فقط عند انتهاء جميع الاختبارات السابقة. وليس فقط عند انتهاء الاختبار 4 ، هل هذا ممكن؟ شكرًا لك.
المحلول
يمكنك استخدام الانتظار:
./test1 &
./test2 &
./test3 &
./test4 &
wait
من صفحة باش مان:
انتظر [n ...] انتظر كل عملية محددة وأرجع حالة الإنهاء. قد يكون كل N معرف العملية أو مواصفات الوظيفة ؛ إذا تم تقديم مواصفات مهمة ، يتم انتظار جميع العمليات في خط أنابيب الوظيفة. إذا لم يتم إعطاء N ، يتم انتظار جميع عمليات الأطفال النشطة حاليًا ، وحالة العودة هي صفر. إذا تحدد N عملية أو وظيفة غير موجودة ، فإن حالة الإرجاع هي 127. وإلا ، فإن حالة الإرجاع هي حالة الخروج من العملية الأخيرة أو الوظيفة التي تنتظرها.
نصائح أخرى
xargs
يمكن أن تدعم موازية
هكذا مثل هذا:
seq 4|xargs -i -n 1 -P 4 ./test{}
شيء على غرار
cd /tests
./test1 &
./test2 &
./test3 &
./test4 &
wait
exit
(أنا أفترض قذيفة باش)