سؤال لماذا كان الأمر ": () {: |: &} ؛:" جعل نظامي متخلفًا للغاية لدرجة أنني اضطررت إلى إعادة التشغيل؟


خطر!

لا تقم بتشغيل هذا الأمر ليقوم "باختباره" ما لم تكن مستعدًا لتحطم الطائرة و / أو إعادة تشغيل النظام.

كنت في بلدي Virtualbox تشغيل 12.04 في محاولة لتجميع التطبيق ، وبينما كنت تنتظر صدفة في منتدى حيث قال تعليق:

محاولة :(){ :|: & };:
  المتعة أيضًا ، ولا تحتاج إلى الجذر.

دون تفكير ، ركضت في محطة جنوم. جعلت بلدي 12.04 (في فيرتثلبوإكس) متخلفا للغاية ، واضطررت الى اغلاقه.

سؤالي هو ماذا يفعل هذا الأمر؟

:(){ :|: & };:

273
2017-07-04 11:29


الأصل


ذات صلة كيفية حماية أوبونتو من قنبلة شوكة - Sathya
انظر أيضا موضوع قديم: ubuntuforums.org/showthread.php؟t=1392511 - Paddy Landau
ذات صلة: كيف تعمل قنبلة شوكة؟ و أين الشوكة () على القنبلة الشوكة: () {: |: &}؛:؟ - terdon♦
ممكن عبر موقع مكرر من: stackoverflow.com/questions/515844/... - Ciro Santilli 新疆改造中心 六四事件 法轮功
"التأخر بشدة" هو متفائل جدا. - pstadler


الأجوبة:


هذا ما يسمى قنبلة شوكة.

:() يعني أنك تقوم بتعريف وظيفة تسمى :

{:|: &} يعني تشغيل الوظيفة : وإرسال انتاجها إلى : وظيفة مرة أخرى وتشغيل ذلك في الخلفية.

ال ; هو فاصل الأوامر ، مثل &&.

: يدير وظيفة في المرة الأولى.

أساسا أنت تقوم بإنشاء وظيفة تطلق على نفسها مرتين كل مكالمة وليس لديها أي طريقة لإنهاء نفسها. سيبقى مضاعفة حتى نفاد موارد النظام.

كان التشغيل في Virtualbox معقولًا حقًا ، وإلا لكان عليك إعادة تشغيل الكمبيوتر.


346
2017-07-04 11:34



يبدو أن هذه الإجابة تشير إلى أن إعادة التشغيل هي فقط لجوء، ملاذ. ولكن في الواقع ، يمكن قتل هذه القنبلة دون إعادة تشغيل ، ولقد لاحظت في الواقع أنها لا تعمل بشكل صحيح على بعض الأنظمة على أي حال (لأن حد تفرخها محدد بشكل معقول). - Konrad Rudolph
في الواقع ، لشرح كامل ربما ينبغي ذكر ذلك ; هو فاصل الأوامر. ال { ... } جزء هو ببساطة محتوى الوظيفة. - Michael Kjörling
@ MichaelKjörling +1 لم أفهم حتى بناء الجملة حتى أخذت في الاعتبار تعليقاتك. - jumpnett
SuperMatt لا أعرف ما إذا كان هذا السؤال لا يزال نشطًا ، ولكن على أي حال أردت معرفة ما يفعله | و & فعل. أتفهم أنك قدمت عمل الوظيفة ولكني أردت أن أعرف ما يفعله هذان الشخصان - Noober
Noober إذا كان لا يزال يتساءل (كما أنا في هذا الثقب الأسود من الوثائق مقتضبة ومشفرة وهذا هو لينكس) وأنا أعلم! | هو توجيه يتم وضعه بعد أمر لإرسال إخراج الأوامر كإدخال إلى الأمر التالي. & مفترق أنه ينشئ مؤشر ترابط جديد للأمر السابق ترك مؤشر الترابط الحالي لمتابعة تنفيذ أوامر أكثر - flurbius


هذا ما يسمى قنبلة شوكة نفذت في قذيفة.

من ويكيبيديا:

:(){ :|:& };:
\_/| |||| ||\- ... the function ':', initiating a chain-reaction: each ':' will start    two more.
 | | |||| |\- Definition ends now, to be able to run ...
 | | |||| \- End of function-block
 | | |||\- disown the functions (make them a background process), so that the children    of a parent
 | | |||   will not be killed when the parent gets auto-killed
 | | ||\- ... another copy of the ':'-function, which has to be loaded into memory.
 | | ||   So, ':|:' simply loads two copies of the function, whenever ':' is called
 | | |\- ... and pipe its output to ...
 | | \- Load a copy of the function ':' into memory ...
 | \- Begin of function-definition
 \- Define the function ':' without any parameters '()' as follows:

162
2017-07-04 11:35



على الرغم من كونه نقطة عرضية وقد يكون عبء مصطلح "مزعج" مفرطًا ، فنحن لا نتبرأ من عملية وضعتها في الخلفية ويمكن دائمًا وضعها في المقدمة باستخدام الأمر "fg" ، وسيتم إنهاء العملية (العمليات) إذا تسجيل خروج المستخدم (إذا كان لا يزال هناك موارد متوفرة لإنجاز خروج) .... ما لم وحتى "يتبرأ" واحد على العملية أو jobid. بعد ذلك ، يتم التخلي عنها حقًا: لن يتم إنهاء تسجيل الخروج ولن يكون هناك أي تأثير. - Rondo
على الرغم من أنها ليست سوى نقطة ثانوية ، فإن الأقواس لا تعني عدم وجود معلمات في أصداف شبيهة باش ، بل هي مجرد زخرفة متبقية من لغة النمط C. - Charlie Harding


هذا الأمر هو نسخة معروفة من قنبلة شوكة

fork bomb pic from wikipedia

يؤدي إلى نفاد الذاكرة من جهاز الكمبيوتر الخاص بك عن طريق إجراء عملية لا نهائية. توجد بعض الضمانات التي يمكنك استخدامها ضدها أيضًا:

عادةً ما تكون أنظمة نمط Unix ذات حد عملية ، يتم التحكم فيها بواسطة أمر shell ulimit أو خلفه ، setrlimit. تقوم نواة لينكس بتعيين وتنفيذ RLIMIT_NPROC rlimit ("حد الموارد") لعملية ما. إذا حاولت عملية تنفيذ شوكة والمستخدم الذي يملك هذه العملية بالفعل RLIMIT_NPROC العمليات ، ثم فشل الشوكة. بالإضافة إلى ذلك ، على لينكس أو * BSD ، يمكن للمرء تحرير pam_limits ملف التكوين /etc/security/limits.conf لنفس التأثير. ومع ذلك ، ليس كل توزيعات لينكس لديها pam_limits الوحدة النمطية المثبتة افتراضيا.


71
2017-07-04 11:37





بالنسبة الى هذه  :(){ :|: & };: يسمى

Forkbomb هو نوع من المبدع الشعري للفيروس

... البرنامج الصغير الخادع يأمره بعمل نسخ متعددة من   نفسها، بدء رد فعل تسلسلي وبالتالي استنفاد بسرعة   موارد النظام ...

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

يشرح رابط آخر من خلال لقطات الشاشة هنا.


18
2017-07-04 11:35



إذا تسببت قنبلة شوكة تلف الأجهزةإذاً لديك مشكلة أكبر وأعمق. - Michael Kjörling
ربما كان يتحدث عن قنبلة ذات شكل شوكة يمكن أن تنفجر بالقرب من جهاز الكمبيوتر الخاص بك؟ - dysoco
رابط لقطة الشاشة مكسور. - IMustBeSomeone