": (:) Command: |: &} ;::" কমান্ডটি আমার সিস্টেমে এত খারাপভাবে পিছিয়ে পড়েছিল যে আমাকে পুনরায় বুট করতে হয়েছিল?


286

বিপদ!

আপনি যদি আপনার সিস্টেম ক্রাশ এবং / অথবা জোর করে রিবুট করার জন্য প্রস্তুত না হন তবে এই আদেশটি এটি 'পরীক্ষা' করতে চালাবেন না run

আমি আমার ভার্চুয়ালবক্সে একটি অ্যাপ সংকলন করার চেষ্টা করছি 12.04, এবং অপেক্ষা করার সময় আমি এমন একটি ফোরামে সুযোগ পেয়েছি যেখানে একটি মন্তব্য বলেছিল:

:(){ :|: & };:
মজাদার চেষ্টাও করুন এবং মূলের দরকার নেই।

চিন্তা না করেই আমি এটিকে আমার জিনোম-টার্মিনালে চালিয়েছি। এটি আমার 12.04 (ভার্চুয়ালবক্সে) এত খারাপভাবে পিছিয়ে গেছে, আমাকে এটি বন্ধ করে দিতে হয়েছিল।

আমার প্রশ্ন এই আদেশটি কি করে?

: () {: |: &} ;:



1
এছাড়াও একটি পুরানো থ্রেড দেখুন: উবুন্টুফর্মস.org
ধানের ল্যান্ডউ



9
"এত খারাপভাবে পিছিয়ে" বেশ আশাবাদী।
pstadler

উত্তর:


372

একে ফর্ক বোমা বলা হয় ।

:() মানে আপনি একটি ফাংশন সংজ্ঞায়িত করছেন :

{:|: &}মানে ফাংশনটি চালান :এবং তার :ফাংশনটি আবার ফাংশনে প্রেরণ করুন এবং ব্যাকগ্রাউন্ডে চালান।

;কমান্ড বিভাজক হয়।

: প্রথমবার ফাংশন চালায়।

মূলত আপনি এমন একটি ফাংশন তৈরি করছেন যা প্রতি কলটিতে নিজেকে দু'বার কল করে এবং নিজেকে শেষ করার কোনও উপায় নেই। আপনার সিস্টেমের সংস্থান শেষ না হওয়া পর্যন্ত এটি দ্বিগুণ হবে।

ভার্চুয়ালবক্সে চালানো যথেষ্ট বুদ্ধিমান ছিল অন্যথায় আপনাকে আপনার পিসি পুনরায় চালু করতে হবে।


27
এই উত্তরটি মনে হচ্ছে যে রিবুট করা একমাত্র আশ্রয়। তবে প্রকৃতপক্ষে এই কাঁটাচামচ বোমাটি পুনরায় চালু না করেই হত্যা করা যেতে পারে এবং আমি সত্যিই দেখেছি যে এটি কোনও সিস্টেমে সঠিকভাবে কাজ করে না (কারণ তাদের স্পন সীমাটি সংজ্ঞাগতভাবে সেট করা হয়েছে)।
কনরাড রুডলফ

27
প্রকৃতপক্ষে, সম্পূর্ণ ব্যাখ্যার জন্য সম্ভবত এটি উল্লেখ করা উচিত যে ;কমান্ড বিভাজক। { ... }অংশ কেবল ফাংশনের কন্টেন্ট।
একটি সিভিএন

@ মাইকেলKjörling +1 আমি আপনার মন্তব্যগুলি বিবেচনা না করা অবধি সিনট্যাক্সটি বুঝতে পারি নি।
জাম্পনেট

1
@ সুপারম্যাট এই প্রশ্নটি এখনও সক্রিয় কিনা তা আমি জানি না তবে যাই হোক আমি কী করতে চাই |এবং কী করতে চাই তা জানতে চাই &। আমি বুঝতে পেরেছি আপনি ফাংশনের কাজটি সরবরাহ করেছেন তবে আমি জানতে চেয়েছিলাম এই দুজন কী করেন
নুবার

1
@ নুবার যদি আপনি এখনও ভাবছেন (আমি যেমন লারাক্সের টর্স এবং ক্রিপ্টিক ডকুমেন্টেশনের এই ব্ল্যাকহোলের মধ্যে আছি) আমি জানি! | এটি একটি পাইপ যা কমান্ডের পরে এই আদেশটি আউটপুট প্রেরণ করার জন্য নিম্নলিখিত আদেশের ইনপুট হিসাবে প্রেরণ করা হয়। এবং এটি একটি কাঁটাচামচ যা এটি পূর্ববর্তী কমান্ডের জন্য একটি নতুন থ্রেড তৈরি করে বর্তমান থ্রেডকে আরও কমান্ড কার্যকর করতে চালিয়ে যায়
ফ্লার্বিয়াস

179

এটি শেল প্রয়োগ করা একটি তথাকথিত কাঁটাচামচ বোমা

উইকিপিডিয়া থেকে:

:(){ :|:& };:
\_/| |||| ||\- ... 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:

3
যদিও এটি একটি স্পর্শকাতর বিন্দু এবং 'অস্বীকার' শব্দটি অতিরিক্ত বোঝা হয়ে উঠতে পারে, প্রযুক্তিগতভাবে, পটভূমিতে রাখা একটি প্রক্রিয়াটি অস্বীকার করা হয় না এবং সর্বদা 'fg' কমান্ডের সাথে অগ্রভাগে আনা যেতে পারে, এবং প্রক্রিয়াটি (এস) সমাপ্ত হবে যদি ব্যবহারকারী লগ আউট করে (যদি এখনও লগআউট সম্পন্ন করার জন্য উত্স উপস্থিত থাকে) .... যদি না এবং কেউ প্রক্রিয়া বা জোবিডে 'অস্বীকার' না চালায়। এর পরে এটি প্রকৃতপক্ষে অস্বীকার করা হবে: লগ আউট করা শেষ হবে না এবং fg এর কোনও প্রভাব নেই।
রোন্ডো

1
যদিও এটি কেবল একটি সামান্য বিন্দু, প্রথম বন্ধনী মানে বাশ-জাতীয় শেলগুলির কোনও পরামিতি নেই, সেগুলি কেবল সি-স্টাইলের ভাষা থেকে সজ্জিত।
চার্লি হার্ডিং

75

এই কমান্ডটি কাঁটাচামচ বোমার একটি সুপরিচিত সংস্করণ

উইকিপিডিয়া থেকে কাঁটাচামচ বোমা ছবি

এটি আপনার কম্পিউটারকে অসীমভাবে একটি প্রক্রিয়া জোর করে স্মৃতি থেকে সরিয়ে দেয়। এর বিরুদ্ধে আপনি ব্যবহার করতে পারেন এমন কয়েকটি সুরক্ষা রয়েছে:

ইউনিক্স-টাইপ সিস্টেমে সাধারণত একটি প্রসেস-সীমা থাকে, একটি ইউলিমিট শেল কমান্ড বা এর উত্তরসূরি, সেট্রলিমিট দ্বারা নিয়ন্ত্রিত হয়। লিনাক্স কার্নেলগুলি একটি প্রক্রিয়ার RLIMIT_NPROC রিলিমিট ("রিসোর্স সীমা") সেট করে প্রয়োগ করে। যদি কোনও প্রক্রিয়া একটি কাঁটাচামচ করার চেষ্টা করে এবং ব্যবহারকারী যে প্রক্রিয়াটির মালিকানাধীন ইতিমধ্যে প্রক্রিয়াগুলির মালিক RLIMIT_NPROCহয়, তবে কাঁটাটি ব্যর্থ হয়। তদ্ব্যতীত, লিনাক্স বা * BSD- এ, একইরূপে pam_limitsকনফিগার ফাইলটি সম্পাদনা করা যায় /etc/security/limits.conf। তবে লিনাক্সের সমস্ত ডিস্ট্রিবিউশনে pam_limitsমডিউলটি ডিফল্টরূপে ইনস্টল করা হয় না।


18

এই অনুযায়ী :(){ :|: & };:বলা হয়

ফর্কবম্ব এক ধরণের কাব্যিক ভাইরাস স্রষ্টা

... কৌতুকপূর্ণ ছোট্ট প্রোগ্রাম এটিকে নিজের একাধিক অনুলিপি তৈরি করার নির্দেশ দেয়, একটি শৃঙ্খল প্রতিক্রিয়া স্থাপন করে এবং দ্রুত সিস্টেমের সংস্থানগুলি ক্লান্ত করে দেয় ...

সুতরাং এটি চালনা না করার পরামর্শ দেওয়া হয়েছে, হার্ডওয়্যারটির ক্ষতি হতে পারে যেহেতু এটি লুপওয়াইজ এক্সিকিউশনের কারণ, ল্যাপটপগুলিতে সহজেই গরম করার কারণ হতে পারে।

অন্য লিঙ্কটি এখানে স্ক্রিন শটগুলির মাধ্যমে ব্যাখ্যা করে ।


59
যদি একটি কাঁটাচামচ বোমার কারণে হার্ডওয়্যার ক্ষতি হয় , তবে আপনার আরও অনেক বড় এবং গভীর সমস্যা রয়েছে।
একটি সিভিএন

38
হতে পারে তিনি কাঁটা আকারের এমন একটি বোমার কথা বলছিলেন যা আপনার পিসির কাছে বিস্ফোরিত হতে পারে?
ডিসকো

2
স্ক্রিনশটের লিঙ্কটি নষ্ট হয়ে গেছে।
IMustBeSomeone

0

উপরে বর্ণিত হিসাবে একে " কাঁটাচামচ " বলা হয় এবং এটি করার আরেকটি উপায় হ'ল পাইপিংয়ের পরিবর্তে ব্যাকগ্রাউন্ড এক্সিকিউশন ব্যবহার করা:

:(){ :&:;};:
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.