दिलचस्प पोस्ट
पायथन: विशिष्ट अपवाद को पकड़ने पायथन बेस 64 डेटा डीकोड जीसीसी में स्ट्रैंट स्थिरांक से 'चार *' `चेतावनियों से नापसंद रूपांतरण से छुटकारा कैसे करें? AngularJS: $ evalAsync vs $ टाइमआउट कैसे एक git दूरस्थ टैग को हटाने के लिए? डेटा फ्रेम में एनए के साथ चरित्र मानों की जगह द्विदिश पुनरावर्ती रिश्तों को हटाने का सबसे आसान तरीका है? JSONP की सेवा करने के लिए सर्वश्रेष्ठ सामग्री प्रकार? दिनांक सीमा के माध्यम से मैं कैसे लूप कर सकता हूं? जावा में स्ट्रिंग से पहला शब्द निकालने का सबसे अच्छा तरीका क्या है? सी # में एक फ़ाइल का नाम बदलें सरल सी ++। नेट आवरण बनाना क्रमशः उत्तरदायी डिजाइन में निचले भाग के ऊपर एक तत्व को स्थानांतरित करने का सबसे अच्छा तरीका क्या है मैं दो कोशिकाओं को संदर्भित करके स्वचालित रूप से एक स्प्रैडशीट कैसे नाम कर सकता हूं? गिट SSH त्रुटि: "मेजबान से कनेक्ट करें: खराब फ़ाइल संख्या"

बैश कमांड: () {: |: और} ;: कर्नेल मौत के लिए प्रक्रियाएं पैदा करेगा क्या आप सिंटैक्स की व्याख्या कर सकते हैं?

मैं इस पृष्ठ पर ठोकर खाई और समझ में नहीं आया कि यह कैसे काम करता है।

यह आदेश "जब तक आपका बॉक्स लॉक नहीं करता है, तब तक उप-प्रोसेसस का तेजी से उत्पादन होता है"।

पर क्यों? क्या मैं कम grok बृहदान्त्र हैं

user@host$ :(){ :|:& };:

Solutions Collecting From Web of "बैश कमांड: () {: |: और} ;: कर्नेल मौत के लिए प्रक्रियाएं पैदा करेगा क्या आप सिंटैक्स की व्याख्या कर सकते हैं?"

यह एक फ़ंक्शन को परिभाषित करता है : जो खुद को दो बार कॉल करता है (कोड : | : 🙂 यह पृष्ठभूमि ( & ) में करता है के बाद ; फ़ंक्शन परिभाषा की गई और फ़ंक्शन : आरंभ हो जाता है

तो के हर उदाहरण: दो नए शुरू होता है: और इसी तरह … प्रक्रियाओं के द्विआधारी पेड़ की तरह …

सादे सी में लिखा है:

 while(1) { fork(); } 
 :(){ :|:& };: 

.. नाम की एक समारोह को परिभाषित करता है, जो स्वतः ही पैदा होता है (दो बार, दूसरे में एक पाइप), और खुद पृष्ठभूमि।

लाइन ब्रेक के साथ:

 :() { :|:& }; : 

का नाम बदलना : forkbomb लिए फ़ंक्शन:

 forkbomb() { forkbomb | forkbomb & }; forkbomb 

आप इस तरह के हमलों को प्रक्रियाओं की संख्या को प्रति-उपयोगकर्ता सीमित करने के लिए ulimit का उपयोग करके रोका जा सकता है:

 $ ulimit -u 50 $ :(){ :|:& };: -bash: fork: Resource temporarily unavailable $ 

अधिक स्थायी रूप से, आप /etc/security/limits.conf (डेबियन और अन्य पर, कम से कम) का उपयोग कर सकते हैं, उदाहरण के लिए:

 * hard nproc 50 

बेशक इसका मतलब है कि आप केवल 50 प्रक्रियाओं को चला सकते हैं, आप मशीन में क्या कर रहे हैं इस पर निर्भर करते हुए इसे बढ़ा सकते हैं!

इस पर कोशिश करते समय मेरे प्रभाव में भिन्नता होती है I प्रक्रियाओं और सीपीयू शक्ति की संख्या के लिए कॉन्फ़िगर की ऊपरी सीमा पर निर्भर (मेरा मानना ​​है), यह पूरी तरह से दूसरों को ठंडा करने के दौरान कुछ सिस्टम पर एक टक्कर का कारण था।