PIPESZ(1)

الاسم
pipesz - اضبط أو افحص أحجام مخبئية الأنابيب و FIFO

موجز

pipesz [خيارات] [--set الحجم] [--] [الأمر [المعطى...]]

pipesz [خيارات] --get

الوصف

تحافظ الأنابيب و FIFOs على خبيئة داخلية تُستخدم لنقل البيانات بين طرف القراءة وطرف الكتابة. في بعض الحالات، قد لا يكون الحجم المبدئي لهذه الخبيئة الداخلية مناسباً. يوفر هذا البرنامج تسهيلات لضبط وفحص حجم هذه الخبيئات.

تضبط عملية --set أحجام خبيئة الأنابيب. في حال تحديدها، يجب أن تُحدد بـ حجم صريح. خلاف ذلك، يُفهم الخيار ضمناً ويُقرأ الحجم من الملف /proc/sys/fs/pipe-max-size. قد تضبط النواة الحجم كما هو موضح في fcntl(2). لرؤية أحجام الخبيئة الفعلية التي ضُبطت، استخدم خيار --verbose. وإذا لم يُحدد --file ولا --fd، فإن --set يعمل على المخرج القياسي.

تسمح عملية --set بـ أمر اختياري للتنفيذ بعد ضبط أحجام خبيئة الأنبوب. يُنفذ هذا الأمر مع الأنابيب المعدلة.

تخرج عملية --get البيانات بتنسيق جدولي. العمود الأول هو اسم الأنبوب كما مُرر إلى pipesz. تُسمى واصفات الملفات كـ "fd رقم". العمود الثاني هو الحجم، بالبايت، لخبيئة الأنبوب الداخلية. العمود الثالث هو عدد البايتات غير المقروءة حالياً في الأنبوب. تُفصل الأعمدة بواسطة علامات جدولة ('\t'، ASCII 09h). إذا حُدد --verbose، يُخرج ترويسة وصفية أيضاً. إذا لم يُحدد لا --file ولا --fd، فإن --get يعمل على المدخل القياسي.

ما لم يُحدد خيار --check، فإن pipesz لا يخرج إذا واجه خطأً أثناء معالجة ملف أو واصف ملف. يتيح ذلك استخدام pipesz بشكل عام دون خوف من تعطيل تنفيذ سلاسل الأوامر (pipelines) في حال تغيّر نوع ملفات معينة لاحقاً. ولتقليل التعطيل، يمنع خيار --quiet إصدار التحذيرات في هذه الحالات.

تفرض النواة حدوداً على مقدار مساحة خبيئة الأنبوب التي يمكن للعمليات غير المتميزة استخدامها، ومع ذلك انظر BUGS أدناه. ستتوقف النواة أيضاً عن تقليص خبيئة الأنبوب إذا كان ذلك سيؤدي إلى فقدان البيانات المخزنة مؤقتاً. انظر pipe(7) لمزيد من التفاصيل.

يدعم pipesz تحديد خيارات قصيرة متعددة على التوالي، بأسلوب getopt(3) المعتاد. يُفسر أول وسيط ليس خياراً على أنه أمر. إذا كان أمر قد يبدأ بـ '-'، استخدم '--' لفصله عن وسائط pipesz. في سكربتات الصدفة (shell)، من الممارسات الجيدة استخدام '--' عند توسيع المعاملات. لا يقرأ pipesz نفسه من المدخل القياسي ولا يكتب إلى المخرج القياسي إلا إذا حُدد --get أو --help أو --version.

الخيارات

-g، --get
    الإبلاغ عن حجم خبيئات الأنابيب إلى المخرج القياسي والخروج. كسلوك خاص، إذا لم يُحدد لا --file ولا --fd، يُفحص المدخل القياسي. يُعد تحديد هذا الخيار مع --set خطأً.

-s، --set الحجم
    ضبط حجم خبيئات الأنابيب، بالبايت. يمكن إلحاق هذا الخيار بـ K أو M أو G أو KiB أو MiB أو GiB للإشارة إلى مضاعفات 1024. تُدعم القيم الكسرية في هذه الحالة. كما تُدعم لواحق إضافية ولكن من غير المرجح أن تكون مفيدة. وإذا لم يُحدد هذا الخيار، تُستخدم قيمة مبدئية كما هو موضح أعلاه. وفي حال تكرار هذا الخيار عدة مرات، يصدر تحذير ويُستخدم آخر حجم محدد فقط. كسلوك خاص، إذا لم يُحدد --file ولا --fd، يُعدل المخرج القياسي. ويُعد تحديد هذا الخيار مع --get خطأً.

-f، --file مسار
    ضبط حجم خبيئة FIFO أو الأنبوب عند مسار، نسبةً إلى دليل العمل الحالي. يمكنك تحديد هذا الخيار عدة مرات للتأثير على ملفات مختلفة، ويمكنك القيام بذلك مع --fd. عموماً، يُستخدم هذا الخيار مع FIFOs، ولكنه سيعمل أيضاً على الأنابيب المجهولة مثل تلك الموجودة في /proc/PID/fd. لا تُحفظ التغييرات في حجم خبيئة FIFOs عبر عمليات إعادة تشغيل النظام.

-n، --fd الرقم
    ضبط حجم الخبيئة للأنبوب أو FIFO المقابل لواصف الملف الرقم. يمكن تحديد هذا الخيار عدة مرات للتأثير على واصفات ملفات مختلفة، ويمكن القيام بذلك بالاشتراك مع --file. تتوفر خيارات مختصرة للحالات الشائعة: fd 0 (المدخل القياسي)، و fd 1 (المخرج القياسي)، و fd 2 (الخطأ القياسي). وينبغي أن تكون هذه كافية في معظم الحالات.

-i، --stdin
    اختصار لـ --fd 0.

-o، --stdout
    اختصار لـ --fd 1.

-e، --stderr
    اختصار لـ --fd 2.

-c، --check
    الخروج، دون تنفيذ أمر، في حال حدوث أي خطأ أثناء معالجة ملف أو واصف ملف. السلوك المبدئي إذا لم يُحدد هذا هو إصدار تحذير للخطأ القياسي والاستمرار.

-q، --quiet
    عدم الإبلاغ عن الأخطاء غير القاتلة في الخطأ القياسي. لا يؤثر هذا الخيار على المخرج العادي لـ --get أو --verbose أو --help أو --version.

-v، --verbose
    إذا حُدد مع --get، سيخرج pipesz ترويسة وصفية فوق الجدول. خلاف ذلك، إذا حُدد، سيطبع pipesz أحجام الخبيئة الفعلية التي ضبطتها النواة إلى الخطأ القياسي.

-h، --help
    اعرض نص المساعدة ثم اخرج.

-V، --version
    اعرض الإصدار واخرج.

أمثلة

pipesz dd if=ملف bs=1M | ...
    يُشغل dd(1) مع أنبوب مخرج قياسي موسّع، مما يسمح له بتجنب تبديلات السياق عند توجيه كتل كبيرة عبر الأنابيب.

pipesz -s1M -cf /run/my-service.fifo
    يضبط حجم مخبئية الأنبوب لـ FIFO الخاص بالخدمة على 1,048,576 بايت. وإذا تعذر ضبط حجم المخبئية، يخرج pipesz مع خطأ.

echo hello | pipesz -g
    يطبع حجم الأنبوب المستخدم من قبل الصدفة لتمرير الدخل إلى pipesz. وبما أن pipesz لا يقرأ الدخل القياسي، فقد يبلغ أيضاً عن 6 بايتات غير مقروءة في الأنبوب، اعتماداً على التوقيتات النسبية.

find /proc/PID/fd -exec pipesz -gqf '{}' ';'
    يطبع حجم وعدد البايتات غير المقروءة لجميع الأنابيب المستخدمة من قبل معرّف-العملية. إذا كانت بعض الأنابيب ممتلئة بشكل روتيني، فقد يتمكن pipesz من تخفيف عنق زجاجة المعالجة.

ملاحظات

يدعم لينكس ضبط حجم مخازن الأنابيب المؤقتة (pipe buffers) منذ النواة 2.6.35. قدّم هذا الإصدار أيضًا /proc/sys/fs/pipe-max-size.

يستخدم هذا البرنامج fcntl(2) F_GETPIPE_SZ/F_SETPIPE_SZ لجلب وضبط أحجام مخازن الأنابيب المؤقتة.

يستخدم هذا البرنامج ioctl(2) FIONREAD للإبلاغ عن كمية البيانات غير المقروءة في الأنابيب. إذا فشل هذا لسبب ما، يُبلغ عن كمية البيانات غير المقروءة بأنها 0.

العلل

قبل لينكس 4.9، أثرت بعض العيوب البرمجية في كيفية فرض حدود موارد معينة عند ضبط أحجام مخازن الأنابيب المؤقتة. راجع pipe(7) لمزيد من التفاصيل.

المؤلفين

انظر أيضاً

pipe(7)

التبليغ عن الأخطاء

لتقارير العِلل، استخدم

التوفر

الأمر pipesz جزء من حزمة util-linux التي يمكن تنزيلها من