क्या आप वास्तव में अपने कंप्यूटर को क्रैश करने के लिए टर्मिनल का उपयोग कर सकते हैं?


48

जो लोग टर्मिनल को नहीं समझते हैं, वे अक्सर इस डर से इसका उपयोग करने से डरते हैं कि वे अपने आदेश को गड़बड़ कर सकते हैं और अपने कंप्यूटर को क्रैश कर सकते हैं। जो लोग टर्मिनल को बेहतर जानते हैं वे जानते हैं कि ऐसा नहीं है - आमतौर पर टर्मिनल सिर्फ एक त्रुटि का उत्पादन करेगा। लेकिन क्या वास्तव में कमांड हैं जो आपके कंप्यूटर को क्रैश करेंगे?

चेतावनी: आप डेटा खो सकते हैं यदि आप ये टाइप करते हैं या पेस्ट पेस्ट करते हैं, विशेष रूप से sudoऔर rmकमांड।


किसी व्यक्ति ने गलती से अपनी कंपनी के सभी कंप्यूटरों को एक पंक्ति में मिटा दिया, मैंने इसे कुछ साल पहले इस साइट पर देखा था, यह नकली था लेकिन, यह अभी भी आसानी से हो सकता है। अगर मुझे मिल जाए तो मैं लिंक कर दूंगा।
नूह क्रिस्टीनो

7
टर्मिनल केवल प्रोग्राम चलाने के लिए एक कमांड-लाइन इंटरफ़ेस है। यह एक ग्राफिकल यूजर इंटरफेस का विकल्प है । आप किसी एक से मनमाना कार्यक्रम चला सकते हैं। इसलिए आपका सवाल वास्तव में बहुत मायने नहीं रखता है; इसके बजाय आपको पूछना चाहिए: क्या आप एक प्रोग्राम चलाकर अपने कंप्यूटर को क्रैश कर सकते हैं?
jamesdlin

"क्रैश" से आपका क्या मतलब है? अधिकांश मैक ओएस एक्स जीयूआई कमांड के विपरीत, टर्मिनल में चलने वाले कमांड अक्सर शक्तिशाली हो सकते हैं और "आप जो कहते हैं, वह करते हैं और न कि आपके मतलब के बिना" करते हैं। लेकिन जब तक आप जानबूझकर प्रयास नहीं करते हैं, आप मशीन को दुर्घटनाग्रस्त होने की संभावना नहीं रखते हैं । (मैं जानबूझकर हालांकि ऐसा करने के लिए कुछ तरीके सोच सकता हूं)
जोश

1
वेब से चिपकाने वाले कमांड बहुत खतरनाक हो सकते हैं । अपनी मशीन को लटकाए जाने की संभावना के बावजूद। टाइपिंग कमांड जो आप समझते हैं कि कम से कम अस्पष्ट हालांकि खतरनाक नहीं होनी चाहिए। अन्यथा आपके कंप्यूटर को खराब करने के कई तरीके। यह जीयूआई में यादृच्छिक सिस्टम कॉन्फ़िगरेशन सेटिंग्स पर क्लिक करने जैसा है लेकिन जीयूआई में कम से कम संभावनाएं अधिक सीमित हैं। कमांड चिपकाने का खतरा - जिस पाठ को आप कॉपी करते हुए देखते हैं, वह कॉपी किए गए वास्तविक टेक्स्ट से अलग हो सकता है, इस प्रकार इसमें दुर्भावनापूर्ण कमांड शामिल हो सकते हैं।
अकोस्टैडिनोव

@ и @αнcяişтiп server शायद serverfault.com/questions/769357/recovering-from-a-rm-rf
wythagoras

जवाबों:


51

कंप्यूटर को क्रैश करने का एक तरीका तथाकथित फोर्क-बम को अंजाम देना है ।

आप इसे यूनिक्स-साइटम द्वारा निष्पादित कर सकते हैं:

:(){ :|: & };:

यह एक कमांड है जो पुनरावर्ती स्पॉन प्रक्रियाओं को तब तक करेगा जब तक कि ओएस इतना व्यस्त न हो कि वह किसी भी कार्रवाई का जवाब नहीं देगा।


49
@bunyaCloven अगर मैं आपकी कमांड को सही ढंग से समझता हूं, तो यह बिना किसी प्रॉम्प्ट के सभी फ़ोल्डरों को हटाने के लिए एक कमांड है , जो काम करता है तो बहुत खतरनाक है । काश आपने इसके लिए चेतावनी नोटिस लिखा होता।
एंड्रयू टी।

80
@AndrewT। लोग इंटरनेट पर पाए जाने वाले रैंडम कमांडों को सिर्फ लिखना नहीं चाहते हैं। (विशेष रूप से एक धागे में "जिसे आप टर्मिनल के माध्यम से अपने कंप्यूटर को क्रैश कर सकते हैं"
जॉन हैमिल्टन

34
ओपी ने टर्मिनल से दुर्घटनाग्रस्त होने के लिए कहा, न कि पोंछा।
piersb

16
कांटा बम वास्तव में मैक ओएस एक्स पर कम से कम नुकसान करेगा क्योंकि इसमें प्रक्रियाओं की संख्या के लिए ऊपरी सीमा है।
जीडीपी 2

7
@bunyaCloven ;एक के साथ प्रतिस्थापित करता है &और आप एक ही समय में सभी फ़ाइलों और फोर्क बम को हटाने के लिए मिलते हैं, और देखते हैं कि पहले सिस्टम को कौन तोड़ता है!
मुजेर

41

यकीन नहीं होता कि आप 'कंप्यूटर को क्रैश करने' के बारे में क्या कहते हैं - अगर आप इसे 'अनुपयोगी कंप्यूटर को प्रस्तुत करना' कहेंगे, तो हाँ। निश्चित रूप से यह सब एक एकल आवारा आदेश है - बस एक पल जहां आप स्पष्ट रूप से नहीं सोच रहे हैं कि आप क्या कर रहे हैं, उसी तरह जब आप बिना सोचे-समझे बोलते हैं, और क्षति अपार और लगभग तत्काल हो सकती है। क्लासिक उदाहरण:

$ sudo rm -rf /

यदि आप उस आदेश को केवल एक सेकंड के लिए भी चलाते हैं, तो यह आपके सिस्टम को पर्याप्त रूप से मिटा देने के लिए इसे अनबूटे, और संभवतः अपरिवर्तनीय डेटा हानि का कारण बना सकता है। यह मत करो।


2
और बस साझा करने के लिए कि मैं री-कॉन्टैसिंग को स्पष्ट क्यों करना चाहता था .. पारंपरिक अर्थों में कंप्यूटर को 'क्रैश' करने के लिए - इसे लॉक करने के लिए - आपको सीपीयू को इतना काम देने की आवश्यकता होगी कि वह प्रतिक्रिया न दे सके। अन्य नौकरियों के लिए एक समय पर फैशन में .. जैसे ग्राफिक्स को अपडेट करना और उदाहरण के लिए कर्सर को स्थानांतरित करना। मुझे यकीन है कि कमांड-लाइन से ऐसा करने का एक तरीका है।
हार्व

6
@DonielF का -rअर्थ है किसी निर्देशिका में फ़ाइलों को पुन: हटाना। -f"बल" का अर्थ है कि किसी भी फ़ाइल की अनुमति की परवाह किए बिना पुष्टि न करें। /फाइलसिस्टम की रूट डाइरेक्टरी है, जिसका अर्थ है कि यह कुछ भी और सभी चीजों को नष्ट कर देगा, सिवाय शायद कुछ विशेष फाइलें जो विशिष्ट फाइलों के रूप में व्यवहार नहीं करती हैं। इसके अलावा, आपके पास एक संक्षिप्त कमांड खोजने में बहुत कठिन समय होगा जो आपके सिस्टम को रूट / व्यवस्थापक अनुमतियों के बिना क्रैश कर देगा।
जीडीपी 2

11
मैंने rm -rf /कुछ समय पहले कोशिश की , और rmकहा कि यदि आप जड़ को हटाना चाहते हैं, तो इस तरह के और इस तरह के झंडे का उपयोग करें। कोई डेटा नहीं खो गया था। ऐसा लगता है कि आँख बंद करके चलने से अब सुरक्षा सुरक्षा है rm -rf /
एलेयर्क जूल

27
- इस उद्देश्य के लिए काम करने के लिए 2006 के बाद से-संरक्षित-मूल ध्वज की आवश्यकता है
एंकेटर

6
यहाँ एक वास्तविक दुनिया का मामला है जिसमें यह वास्तव में हुआ है - rm -rf वास्तव में एक कानूनी के समान है, जो वास्तव में गलत हो गया है: /
मर्गेसिसेया

30

मान लीजिए कि आपको नहीं पता कि आपका क्या करना है और कुछ हार्ड ड्राइव का बैकअप लेने का प्रयास करना है

dd if=/dev/disk1 of=/dev/disk2 

यदि आप उन लोगों को मिलाते हैं (स्विच यदि और), तो यह पुराने डेटा के साथ ताज़ा डेटा को अधिलेखित कर देगा, कोई सवाल नहीं पूछा गया।

इसी तरह के मिश्रण अप संग्रह के बर्तनों के साथ हो सकते हैं। और स्पष्ट रूप से अधिकांश कमांड लाइन उपयोगिताओं के साथ।

यदि आप किसी एक पात्र के मिश्रण का उदाहरण चाहते हैं जो आपके सिस्टम को क्रैश कर देगा, तो इस परिदृश्य पर एक नज़र डालेंगे: आप वर्तमान निर्देशिका की सभी फ़ाइलों को एक दूसरे में ले जाना चाहते हैं:

 mv -f ./* /path/to/other/dir

आइए इस तथ्य को स्वीकार करें कि आपने ./वर्तमान निर्देशिका को निरूपित करने के लिए उपयोग करना सीखा । (I do) यदि आप डॉट को छोड़ देते हैं, तो यह आपकी सभी फाइलों को स्थानांतरित करना शुरू कर देगा । अपने सिस्टम फ़ाइलों सहित। आप भाग्यशाली हैं कि आपने यह सूद नहीं लिया। लेकिन अगर आप कहीं पढ़ते हैं कि 'sudo -i' के साथ आपको फिर से sudo में लिखना नहीं पड़ेगा, तो आप अभी रूट के रूप में लॉग इन हैं। और अब आपका सिस्टम आपकी आंखों के सामने खुद खा रहा है।

लेकिन फिर से मुझे लगता है कि कचरा के साथ मेरी कीमती कोड फ़ाइलों को अधिलेखित करने जैसा सामान है, क्योंकि मैंने एक चरित्र को गड़बड़ कर दिया है या क्योंकि मैंने मापदंडों के क्रम को मिलाया है, अधिक परेशानी है।

मान लीजिए कि मैं कोडांतरक कोड की जाँच करना चाहता हूँ जो gcc उत्पन्न कर रहा है:

gcc -S program.c > program.s

मान लीजिए कि मेरे पास पहले से ही एक कार्यक्रम है। मैं टीएबी पूरा करने का उपयोग करता हूं। मैं जल्दी में हूं और दो बार TAB को भूल जाऊंगा:

gcc -S program.c > program.c

अब मेरे पास अपने program.c में कोडांतरक कोड है और अब कोई c कोड नहीं है। जो कम से कम कुछ के लिए एक वास्तविक झटका है, लेकिन दूसरों के लिए यह शुरू-से-खरोंच-समय है।

मुझे लगता है कि ये वही हैं जो असली "नुकसान" का कारण बनेंगे। अगर मेरा सिस्टम क्रैश होता है तो मुझे वास्तव में परवाह नहीं है। मुझे अपने डेटा के खो जाने की परवाह होगी।

दुर्भाग्य से ये गलतियां हैं जिन्हें तब तक करना होगा जब तक आप उचित सावधानी के साथ टर्मिनल का उपयोग करना नहीं सीखते।


16
आपका अंतिम बिंदु कई कारणों में से एक है कि हर किसी को संस्करण नियंत्रण का उपयोग क्यों करना चाहिए
डैरेन एच।

4
मैंने एक बार एक कार्यक्रम को नष्ट कर दिया था जो मैं gcc program.c -o program.cटैब पूर्णता के लिए धन्यवाद के उपयोग पर काम कर रहा था । मैंने उसके बाद संस्करण नियंत्रण का धार्मिक रूप से उपयोग करना सीखा।
nneonneo

2
सर्वश्रेष्ठ उत्तर अब तक, वैध तरीके से दिखने वाले आदेशों पोस्टिंग सकता है एक सरल टाइपो के परिणाम हो सकता है और अभी तक एक प्रमुख क्षति हो सकती है।
गज़कम

1
"अब मेरे प्रोग्राम कोड में कोडांतरक कोड है।" नहींं। तुुम्हारे पास कुछ नही है। पुनर्निर्देशन ने फ़ाइल को जीसीसी से पहले ही खोल दिया।
मूरू

1
ओह यार, मैं वास्तव में बहुत खुश हूं कि उन्होंने जीसीसी में उपयोगकर्ता-इंटरफ़ेस सुधार को जोड़ा। मेरी पिछली गड़गड़ाहट के बाद से कुछ समय हो गया है, लेकिन यह देखना अच्छा है कि मुझे अगली बार उससे थोड़ी सुरक्षा मिलेगी।
nnonneo

28

कर्नेल घबराहट के कारण दुर्घटनाग्रस्त होने वाले अन्य उत्तरों की तुलना में दुर्घटनाग्रस्त होने का एक और अधिक कारण है:

sudo dtrace -w -n "BEGIN{ panic();}"

( यहां से लिया गया कोड और Apple के अपने दस्तावेज में भी पाया गया )

आप भी कोशिश कर सकते हैं:

sudo killall kernel_task

मैंने यह सत्यापित नहीं किया है कि दूसरा वास्तव में काम करता है (और मेरा इरादा नहीं है क्योंकि मेरे पास वास्तव में अभी कुछ काम खुला है)।


2
बस 10.12.3 वीएम में दूसरे की कोशिश की, और यह सिर्फ कहता है:No matching processes were found
अलेक्जेंडर ओ'मैरा

3
इसके अलावा, पहला काम करने के लिए नहीं लगता है, कम से कम अगर एसआईपी सक्षम है,dtrace: system integrity protection is on, some features will not be available dtrace: description 'BEGIN' matched 1 probe dtrace: could not enable tracing: Permission denied
अलेक्जेंडर ओ'मैरा

@ अलेक्जेंडरओमारा दूसरे आदेश पर आपके परिणामों से बहुत आश्चर्यचकित नहीं हैं; मुझे लगा कि मैक ओएस एक्स आपको कर्नेल प्रक्रिया को इस तरह से नीचे ले जाने की अनुमति नहीं देगा। पहले आदेश के परिणामों की भी उम्मीद की जा रही है, जैसा dtraceकि एसआईपी द्वारा प्रभावी ढंग से किया गया था।
जीडीपी 2

1
kernel_taskयह एक सामान्य प्रक्रिया नहीं है। यह अमर है; इसे स्वयं की एक त्रुटि के माध्यम से नहीं मारा जा सकता है (और इसे केपी कहा जाएगा और पूरी मशीन को नीचे लाया जाएगा)। kernel_task's PID नाममात्र 0 है, लेकिन यदि आप उस kill(pid, sig)syscall को सप्लाई करते हैं , तो मैन पेज कहता है कि यदि pid0 0 के बराबर है, तो sigकॉलिंग प्रोसेस के प्रोसेस ग्रुप में हर प्रोसेस को भेजा जाता है। । तो आप बस kernel_taskएक संकेत भेजने में असमर्थ हैं ।
इविलनोटिक्सिस्ट इदोनोटेक्ज़िस्ट

@IwillnotexistIdonotexist हाँ, मुझे लगा कि जितना मामला होगा; हालांकि जानकारी के लिए धन्यवाद। मन में अच्छा करने के लिए सामान।
जीडीपी 2

19

आधुनिक macOS आपकी मशीन को एक अनप्रोविलेड यूजर (यानी बिना उपयोग के ) के रूप में क्रैश करने के लिए वास्तव में कठिन बनाता है sudo, क्योंकि UNIX सिस्टम हजारों उपयोगकर्ताओं को संभालने के लिए हैं, जिनमें से कोई भी पूरे सिस्टम को तोड़ने की अनुमति नहीं देता है। इसलिए, शुक्र है, आमतौर पर आपको कुछ करने से पहले संकेत देना होगा कि आप अपनी मशीन को नष्ट कर देते हैं।

दुर्भाग्य से, यह सुरक्षा केवल सिस्टम पर ही लागू होती है। जैसा कि xkcd दिखाता है, बहुत सारी चीजें हैं जिनकी आप परवाह करते हैं कि सिस्टम इंटीग्रिटी प्रोटेक्शन, रूट विशेषाधिकार या पासवर्ड प्रोमोटर्स द्वारा संरक्षित नहीं है:

XKCD 1200

यदि आप सावधान नहीं हैं, तो, आपके द्वारा टाइप किए जा सकने वाले सामानों का टन बस आपके उपयोगकर्ता खाते और आपकी सभी फ़ाइलों को बर्बाद कर देगा। कुछ उदाहरण:

  • rm -rf ${TEMPDIR}/*। यह पूरी तरह से उचित लगता है, जब तक आपको एहसास नहीं होता है कि पर्यावरण चर वर्तनी है TMPDIRTEMPDIRआमतौर पर अपरिभाषित होता है, जो इसे बनाता है rm -rf /। इसके बिना भी sudo, यह आपके द्वारा हटाए गए अनुमतियों को खुशी से हटा देगा, जिसमें आमतौर पर आपका संपूर्ण होम फ़ोल्डर शामिल होगा। यदि आप इसे लंबे समय तक चलने देते हैं, तो यह आपकी मशीन से जुड़ी किसी भी ड्राइव को भी कर देगा, क्योंकि आपके पास आमतौर पर उन लोगों के पास लिखने की अनुमति है।
  • find ~ -name "TEMP*" -o -print | xargs rmfindआम तौर पर कुछ मानदंडों से मेल खाती फ़ाइलों का पता लगाएगा और उन्हें प्रिंट करेगा। इसके बिना -oआप क्या चाहते हैं और आपके द्वारा शुरू की गई प्रत्येक फ़ाइल को हटा देगा TEMP*( जब तक आपके पास पथ में स्थान नहीं है )। लेकिन, -oइसका मतलब "या" ("आउटपुट" नहीं है जैसा कि यह कई अन्य कमांड के लिए करता है!), जिससे यह कमांड वास्तव में आपकी सभी फाइलों को डिलीट कर देता है। ओह।
  • ln -sf link_name /some/important/file। मुझे इस कमांड के लिए कभी-कभी गलत सिंटैक्स मिलता है, और यह बेकार की प्रतीकात्मक लिंक के साथ आपकी महत्वपूर्ण फ़ाइल को खुशी से लिख देगा।
  • kill -9 -1 आपके हर एक प्रोग्राम को मार देगा, आपको जल्दी से लॉग आउट करेगा और संभवतः डेटा हानि का कारण होगा।

3
FYI करें (इसे पढ़ने वाले अन्य लोगों के लिए) findएक -deleteतर्क है जो पाइपिंग की तुलना में बहुत अधिक सुरक्षित हैxargs rm
जोश

क्या आधुनिक मैकओएस वास्तव में अधिक क्रैशप्रूफ है? इनमें से अधिकांश प्रणालियां एकल उपयोगकर्ता के लिए हैं। क्या वास्तव में उनके पास अधिकतम मैक्सप्रोक्स / कैपुलिमिट्स हैं? क्या आप एक संदर्भ प्रदान कर सकते हैं?
user2497

1
आप सभी लोग, अच्छी तरह से जानते हैं कि नुकसान ln -sfक्या कर सकता है ... और इससे कैसे उबरना है :-)
Iwillnotexist Idonotexist

1
@ जोश: इस ओर इशारा करने के लिए धन्यवाद। और, सामान्य स्थिति में, किसी को find -print0 | xargs -0फ़ाइल नाम में अजीब पात्रों को सुरक्षित रूप से संभालने के लिए उपयोग करना चाहिए ।
nnonneo

1
माना। अधिक उपयोगी xargs सलाह: <whatever> | xargs echo <something>पहले उपयोग करें , पूर्वावलोकन करने के लिए कि xargs वास्तव में क्या कमांड चलाएगा। xargs इस बात का एक बड़ा उदाहरण है कि सीएलआई इतना शक्तिशाली क्यों है: आप एक साथ कई वस्तुओं, कई वस्तुओं पर एक ही बार में पास्करी पुष्टि और हाथ पकड़े बिना काम कर सकते हैं ... बस सुनिश्चित करें कि आप इसे वही करना चाहते हैं जो आप चाहते हैं।
जोश

16

एक और जो आप कर सकते हैं (जो मैंने पहले गलती से किया है) है:

sudo chmod 0 /

यह आपके पूरे फाइल सिस्टम (जो सभी कमांड और प्रोग्राम का अर्थ है) को अस्वीकार्य करेगा ... रूट यूजर को छोड़कर। इसका मतलब है कि आपको सीधे रूट उपयोगकर्ता के रूप में लॉग इन करना होगा और फ़ाइल सिस्टम को पुनर्स्थापित करना होगा, लेकिन क्या आप उस sudoचीज़ के लिए कमांड (या किसी अन्य कमांड) तक पहुंचने में असमर्थ हैं । आप एकल-उपयोगकर्ता मोड में बूट करके, फ़ाइल सिस्टम को माउंट करने और पुनर्स्थापित करने से कमांड और फ़ाइलों तक पहुंच बहाल कर सकते हैं chmod 755 /

यदि इसके साथ पुनरावृत्ति की जाती है chmod -R 0 /तो यह प्रणाली को अनुपयोगी बना देगा। उस बिंदु पर उचित फिक्स डिस्क अनुमतियों की मरम्मत के लिए रिकवरी विभाजन से डिस्क उपयोगिता का उपयोग करना है । यदि यह पुनरावर्ती रूप से चलाया गया था, तो आपके स्नैपशॉट या बैकअप फ़ाइल सिस्टम को पुनर्स्थापित करने के लिए बेहतर हो सकता है।


8
"आप इसे ठीक कर सकते हैं ... chmod 755 /" - नहीं, आप नहीं कर सकते। कई फ़ाइलों को सुरक्षा के लिए या सभी पर काम करने के लिए 755 से अलग-अलग अनुमति की आवश्यकता होती है। chmod 755 /आपके सिस्टम को असुरक्षित छोड़ देगा और सूक्ष्म तरीकों से टूट जाएगा। केवल पूर्ण पुनर्प्राप्ति chmod 0 /स्नैपशॉट पुनर्स्थापना, बैकअप पुनर्स्थापना और / या पुनर्स्थापित के माध्यम से है।
मार्सेल

2
@marcelm अच्छी बात है। मेरा सुझाव केवल आदेशों तक पहुंच बहाल करना था, न कि एक स्थायी समाधान के रूप में। मैंने अपना उत्तर अपडेट कर दिया है। जहाँ तक मुझे पता है, जब तक आप -Rध्वज का उपयोग नहीं करते हैं तब तक chmod पुनरावर्ती नहीं है - तो मैंने सोचा कि उपनिर्देशिका की अनुमतियां प्रभावित नहीं होंगी?
संगीतज्ञ ५२३

5
@marcelm आप सही हैं, लेकिन दिखाया गया आदेश पुनरावर्ती नहीं है, इसलिए केवल /प्रभावित होता है।
एंड्रिया लाज़रज़ोत्तो

sudo chmod -R 700 /अगर मैं ऐसा कर लेता हूं, तो मुझे एक बार एक नया कंप्यूटर मिल जाएगा। हैरानी की बात है, यह एक खाली menubar और रिक्त डेस्कटॉप के साथ बूट हुआ, और समाप्त हुआ। कुछ और काम नहीं किया, लेकिन रिकवरी पार्टीशन की डिस्क यूटिलिटी रिस्टोर अनुमतियाँ वास्तव में लगभग सब कुछ सही सेट करने में कामयाब रहीं!
nnonneo

2
@marcelm डिस्क उपयोगिता में एक "फिक्स अनुमतियाँ" विकल्प है, जिसे बिना पूर्ण सिस्टम रिस्टोर के इसे ठीक करना चाहिए
जोश

10

उत्तर जो कॉल sudoको अमान्य माना जाना चाहिए। ये पहले से ही सिस्टम के लिए प्रशासनिक पहुंच मानते हैं।

कोशिश करो perl -e 'exit if fork;for(;;){fork;}'। OSX के पास अब इससे बचाव हो सकता है। यदि आप टर्मिनल ऐप और सबप्रोसेस को समाप्त करना चाहते हैं, तो एक सेब का बुलबुला प्रस्तुत करता है, तो आप (लगभग) अच्छे हैं।

while true ; do cat /dev/zero > /dev/null & doneयह भी बहुत उपयोगी है, esp। आप नहीं है, तो perl

for i in 1 2 3 4 ; do cat /dev/zero > /dev/null & doneबस एक अजीब सा सीपीयू लोड परीक्षण करेंगे। यह जांचने के लिए बहुत अच्छा है कि क्या आपके हीट और पंखे बराबर हैं।


इसे फोर्क बम के रूप में जाना जाता है और यह संभवत: सिस्टम को अनुपयोगी बना देगा (इसे "क्रैश" माना जा सकता है), लेकिन इसके स्थायी नुकसान की संभावना नहीं होगी। लेकिन यह बुरा है!
जोश

@ जोश "लेकिन किसी भी तरह के स्थायी नुकसान की संभावना नहीं होगी" किसी भी वर्तमान में खुले बिना सहेजे गए काम के लिए।
14 अक्टूबर को

@reirab जोश ने अपने बयान में कैच-ऑल 'संभावना' को जोड़ा। लेकिन MacOS अब फ़ोटो और वीडियो को संपादित करने के लिए है। क्या Adobe प्रोग्राम में स्वचालित ऑटो-सेव नहीं है?
user2497

1
इसके अलावा, सहेजे नहीं गए कार्य हमेशा जोखिम में होते हैं जब तक कि इसे सहेजा नहीं जाता है। यदि आपका कंप्यूटर अनुपयोगी है, तो आप अपने पास मौजूद कुछ भी नहीं बचा सकते हैं :)
जोश

@Josh MacOS में सामान बचाना इतना आसान है। यह हमेशा is-S है। आपको
user2497

7

ज़रूर, सुनिश्चित करें कि आपके पास एक बैकअप है और आपके द्वारा परवाह की गई किसी भी फ़ाइल को सहेजें, फिर टाइप करें halt

मान लें कि आप sudoरूट होने के लिए उपयोग करते हैं, तो मैक क्रैश हो जाएगा।

कमांड लाइन से सबसे बड़ा जोखिम डेटा हानि है। MacOS इंटरफ़ेस दशकों से लोगों को आश्चर्यचकित करने और उनके डेटा या सेटिंग्स या एप्लिकेशन को न दिखाने के लिए डिज़ाइन किया गया है। MacOS ग्राफिकल इंटरफ़ेस भी सीखने की अवस्था (एक खड़ी) को हटाने के लिए मौजूद है जो सुरक्षित और माहिर शेल स्क्रिप्टिंग है।

आप उन सुरक्षाओं को खो देते हैं जिसके कारण मैं टर्मिनल ऐप या ssh से शुरू होने वाले लोगों को सावधान करता हूँ। यदि आपके पास एक बैकअप है जो आप जानते हैं कि काम करता है और एक प्रदर्शन करने के लिए समय और आत्मविश्वास / कौशल है, तो आपको गोता लगाना चाहिए और सीखना चाहिए और चीजों को तोड़ना भी चाहिए।


3
आपने कहा, "... और यहां तक ​​कि चीजों को तोड़ना।", जो एक आभासी मशीन में जोखिम भरा सामान करने के लिए एक अच्छा उपयोग मामला है। :)
user3439894

1
कैसे होगा यह हादसा? यह सिस्टम को तुरंत बंद कर देता है। यह कर्नेल बफ़र्स को भी फ्लश करता है इसलिए डेटा हानि नहीं (सहेजा गया) है। डेवलपर
जोश

7
sudo kill -9 -1  

मैंने आकस्मिक रूप kill -9 -1से एक पर्ल-स्क्रिप्ट में प्रदर्शन किया , जो रूट के रूप में चल रहा था। वह उतना ही तेज था, जितना कि शक्ति-तार को खींचना। रिबूट पर, सर्वर ने एक फाइलसिस्टम-जांच की और ठीक से चलना जारी रखा।

मैंने sudo kill -9 -1कमांड पर उस कमांड को कभी नहीं आजमाया । यह काम नहीं कर सकता है, क्योंकि प्रक्रिया-आईडी "-1" का अर्थ है "सभी प्रक्रियाओं को मारें जो कि कॉलर के प्रक्रिया-समूह से संबंधित हैं"।

यकीन नहीं होता, अगर सूदो के साथ, इसका मतलब है कि init और सभी कर्नेल-सामान ... लेकिन अगर आप जड़ हैं, kill -9 -1तो निश्चित रूप से एक तत्काल रोक लगाएगा - ठीक वैसे ही जैसे पावर-कॉर्ड को खींचना। वैसे - लॉगफाइल्स में कुछ भी दिखाई नहीं देगा, क्योंकि वह कमांड पश्चिम में सबसे तेज हत्यारा है!

वास्तव में, ठीक होने के लिए, मैं हमारे सीसडिन्स के पास गया और उन्हें बताया, कि मैंने क्या किया है। उन्होंने एक हार्ड रिबूट किया, क्योंकि उस सर्वर (आरएचईएल 6) पर लॉग इन करने का कोई तरीका नहीं था।

एक kill -9 -1जड़ हर प्रक्रिया को मारती है, जो जड़ के रूप में चलती है। यानी sshd। इसने मुझे तुरंत लॉग आउट किया और किसी को भी दोबारा लॉग इन करने से रोका। Init द्वारा शुरू की गई कोई भी प्रक्रिया - init सहित, को मार दिया गया है, जब तक कि उन्होंने UID या GID को बदल नहीं दिया। यहां तक ​​कि सीरियल कंसोल के माध्यम से प्रवेश करना किसी भी अधिक संभव नहीं था। ps -eaf | grep rootकुछ फैंसी प्रक्रियाओं को दिखाता है, जो कि यदि वे डिफ़ॉल्ट रूप से एक SIGKILL पर प्रतिक्रिया करते हैं, तो HD के लिए बुनियादी लेखन को बहुत अधिक रोक देगा।

मैं अपने लैपटॉप पर अब यह कोशिश नहीं करूंगा :-) मैं यह जानने के लिए पर्याप्त उत्सुक नहीं हूं, अगर एक kill -9 165([ext4-rsv-Convert]) वास्तव में HD को लिखना बंद कर देगा।


आप कर्नेल को "मार" नहीं सकते हैं, और इससे एक फाइलसिस्टम की जाँच नहीं होनी चाहिए। आप स्थिति से कैसे उबर गए? क्या आपने एक कठिन रिबूट किया था? क्योंकि शायद यही कारण है कि फाइलसिस्टम चेक :)
जोश

आपका संपादित उत्तर समझ में आता है। आप वास्तव में initसामान्य रूप से नहीं मार सकते हैं , लेकिन आप सभी गेटी और एसएसएच सत्रों को मार सकते हैं और मशीन को अनुपयोगी बना सकते हैं। एक मैजिक SysRq को एक साफ रिबूट के लिए अनुमति दी जानी चाहिए, लेकिन यह अक्सर केवल शक्ति-चक्र के लिए आसान होता है और एफएस पत्रिका पर भरोसा करता है :)
जोश

5

हां, आप अपने सिस्टम को पूरी तरह से नष्ट कर सकते हैं। sudoविशेष रूप से विशेषाधिकारों के साथ कुछ करना एक उदाहरण है जिसे पोस्ट किया गया है, चाहे वह कुछ वर्णों को भूल रहा हो जो टर्मिनल को आपके उद्देश्य से कुछ पूरी तरह से अलग करने का निर्देश देता है। इसके बजाय rmआईएनजी केवल 5 वर्ण का अंतर है। गलत जगह पर जगह बनाने से कुछ अलग भी हो सकता है। अन्य बार, प्रतीत होता है कि अच्छी तरह से अर्थ निर्देश इसमें दुर्भावनापूर्ण कोड हो सकता है। इंटरनेट पर कुछ लोग ओफ़्फ़सेटिंग कोड पर बहुत अच्छे हैं।//tmp/\*

ऐसे आदेश भी हैं जो html का उपयोग करके, फ़ॉन्ट आकार शून्य बनाया जा सकता है, इसलिए क्लिपबोर्ड पर कॉपी किए जाने पर कुछ पूरी तरह से सहज दिखने वाला, वास्तव में किसी के git रेपो को एक विश्वसनीय स्रोत के रूप में स्थापित कर सकता है और मैलवेयर डाउनलोड कर सकता है।

और ऐसे कमांड हैं जो आप शोषण करने के लिए खोल सकते हैं, या जो पूरी तरह से अच्छी तरह से इरादा हो सकता है, लेकिन महत्वपूर्ण फाइलों या कार्यक्रमों को हटा देता है या आपकी डिस्क को दूषित कर देता है। वास्तव में, गलत तरीके से टूल का उपयोग करना गलती से आपके बूट सेक्टर, या आपकी डिस्क के प्रमुख, या बहुत सारे अन्य मुद्दों के रूप में बुनियादी रूप से लिख सकता है।

कुछ कम विनाशकारी का एक उदाहरण जो पोस्ट नहीं किया गया है वह बाइनरी फ़ाइलों को खोल रहा है vi। यदि आपने कभी इसकी कोशिश की है, तो आप जानेंगे कि यह आपके टर्मिनल को उस बिंदु तक गड़बड़ कर सकता है जब तक कि यह अनुपयोगी न हो reset

वैकल्पिक रूप से, ऐसे कमांड होते हैं जो आपकी मशीन को बंद कर देंगे, जैसे:

yes >> /dev/null & yes >> /dev/null & yes >> /dev/null & yes >> /dev/null & 

आप कोशिश कर सकते हैं कि एक, यह नुकसान करने वाला नहीं है, लेकिन यह आपके प्रोसेसर को तोड़ देगा, और आपको प्रत्येक प्रक्रिया को मारना होगा जिसे आपने देखा है।

कहा जा रहा है, कंप्यूटिंग में यह आमतौर पर लिया जाता है कि आप कुछ अंडे को तोड़ने के बिना एक आमलेट नहीं बना सकते। आपको टर्मिनल पर सतर्क रहना चाहिए, लेकिन एक ही तरीका है कि ओएस सीखने और अभ्यास करने से बेहतर हो सकता है।


आपका पहला उदाहरण शायद ही हानिकारक हो। द्विआधारी फ़ाइलों को संपादित करते समय विम वास्तव में काफी समझदार है। और सबसे खराब स्थिति में आप बस खिड़की बंद कर सकते हैं। "हां" के साथ दूसरा उदाहरण कष्टप्रद है और उपयोगकर्ता सीपीयू के एक उचित बिट का उपयोग करेगा, लेकिन सिस्टम उत्तरदायी रहेगा और आप आसानी से मूल टर्मिनल विंडो को मार सकते हैं।
nnonneo

1
मैं आपके टर्मिनल को उस बिंदु पर असहमति देता हूं जो आपके पुनरारंभ होने तक अनुपयोगी है "- कोशिश करें reset, कि एक टर्मिनल को साफ कर देना चाहिए जिसमें बाइनरी आउटपुट प्रिंट किया गया है। या, बस एक नया TTY
जोश

1
कूल, एनवी @ जेएफए। यह वास्तव में मुझे resetचाल सीखने में नाय साल लग गए ! अधिक जानकारी के लिए: unix.stackexchange.com/questions/79684
Josh

1
@ जोश इसके लिए धन्यवाद, यह एक बड़ी मदद थी। मेरे लिए वास्तव में कई साल हो गए हैं: पी
जेएफए

1
@ जोश फिर 'स्टाइट साने ^ एम' और 'टट्टी रीसेट' भी आपके लिए रोमांचक होना चाहिए।
user2497

4

मैं केवल बैश शुरुआती हूं, लेकिन आप थोड़ी देर के लिए सही हो सकते हैं; COMMAND करें; किया हुआ; अधिकांश लोग Ctrl + C की कोशिश करेंगे जो कमांड को रोक देगा, न कि बाहरी प्रक्रिया (ctrl + Z, जिसे तब मारना होगा)। मुझे लगता है कि अगर कमांड कुछ भारी ऑपरेशन है जैसे कि बड़ी संख्या को अपनी शक्ति से गुणा करना, जो आपके प्रतिद्वंद्वियों के साथ गड़बड़ कर सकता है। लेकिन वास्तव में, आधुनिक ओएस आमतौर पर इस तरह की गंदगी से बचाते हैं।


2
यह वास्तव में तेजी से चलता है, यह कुछ भी दुर्घटना नहीं करेगा। आपको बस कुछ गहन गणनाओं का कांटा मिल गया है ताकि कर्नेल मैक्सप्रोक्स आपको दुखी न करें। कोशिश करेंwhile true do cat /dev/zero > /dev/null & done
user2497

धन्यवाद। मैंने कंप्यूटर को धीमा करने के लिए बड़ी संख्या को संभालने की उम्मीद की होगी, यह कभी-कभी मशीन सीखने के लिए उपयोग किए जाने वाले बहुत ही सरल जावा / पायथन कार्यक्रमों के साथ हुआ।
एंडो जुराई

1
शून्य से शून्य तक की बिल्ली एक बड़ी संख्या में ऑपरेशन है, I / O में कम से कम। मैं थर्मल टेस्ट करने के लिए सीपीयू के प्रति कोर में से एक का उपयोग करता हूं।
14:24 पर user2497

1
और लूप को भी मार ^C देगा , लेकिन यह पकड़े जाने में रुकावट के लिए बहुत तेजी से दोहराता है। नीचे पकड़े ^Cजाने से लूप टूट सकता है। टर्मिनल को बंद करना भी :)
जोश

2
@ जोश-गहन कार्य के बाद, INT को पकड़ना आसान है, यदि नींद की तरह छोटा-सा ठहराव 0.1 है।
user2497

3

निश्चित रूप से आप अभी भी टर्मिनल के साथ दर्ज किए गए कमांड का उपयोग करके सिस्टम क्रैश का कारण बन सकते हैं।

वर्षों से यह शायद सभी प्रकार की सीमाओं और सुरक्षात्मक उपायों के कारण लागू हो रहा है लेकिन मर्फी के समान कानून कहता है: "कुछ भी पर्याप्त रूप से सक्षम मूर्ख के लिए मूर्ख नहीं है।"

"कांटा बम" और वह सब rm -rfस्क्रिप्ट किडिज़ सामान यूनिक्स के लिए पूर्व में ज्ञात बातें हैं। मैक ओएस एक्स के साथ आप इसके जीयूआई उप-सिस्टम भागों ( WindowServerउल्लेख करने के लिए) या ओपनबीएसडी फ़ायरवॉल उर्फ ​​की तरह कुछ और मज़ेदार हो सकते हैं PFजो कि ऐप्पल के इंजीनियर लाए थे, लेकिन 2008 की अपनी चीजों के बाद से अपडेट करने में कभी कामयाब नहीं हुए। PFकर्नेल में काम करता है इसलिए जब यह एक विचित्रता पकड़ता है तो समय आ जाता है कि Apple आपको बताए कि " आप घबराहट के कारण कंप्यूटर को पुनः आरंभ करें" या इस तरह से सामान।

इसका सबसे बुरा हिस्सा यह है कि आप कभी भी इस बात का अंदाजा नहीं लगा सकते हैं कि यह कहां-कहां-क्यों-कैसे घबराता है - क्योंकि Apple कोई सार्थक स्टैक नहीं देता है; आपके पास स्टैक फ्रेम के रिटर्न एड्रेस के केवल हेक्स नंबर हो सकते हैं।


अच्छा जवाब, और उत्कृष्ट अंक। मैं डांस फ्लोर पर घबराने के लिए ओएस एक्स को प्राप्त करने के लिए अपने व्यक्तिगत पसंदीदा तरीकों की सूची में जोड़ना चाहूंगा, फिर भी स्क्रिप्ट किडी मूर्खता से बचने के लिए स्पष्ट शब्दों के बिना। मैं NFC के लिए प्रासंगिक कर्नेल एक्सटेंशन को अनलोड करता हूं। हर बार, तुरन्त काम करता है। इसे 5 मिनट की एक विभाज्य संख्या पर शेड्यूल करके आसानी से DOS में शामिल किया जा सकता है। इसलिए यह बूट होगा फिर हंस गोता। यह ओएस के एक पुनर्स्थापना की आवश्यकता देता है, जो कि सबसे अधिक सराहा जाता है और यहां तक ​​कि तकनीक भी याद आती है ....
फ्रांसिस रिस्पांसबैस से

3

यह थोड़ा अस्पष्ट है कि आप अपने कंप्यूटर को "क्रैश" से क्या मतलब है ... और उसके लिए कोई निश्चित सही उत्तर नहीं है, हालांकि अन्य उत्तरों में कुछ उपयोगी उदाहरण हैं। चूंकि आपका प्रश्न अधिक अस्पष्ट और सामान्य है, इसलिए मैं प्रश्न की प्रकृति पर ध्यान केंद्रित करना चाहता हूं और अधिक सामान्य उत्तर देना चाहता हूं।

जो लोग टर्मिनल को नहीं समझते हैं, वे अक्सर इस डर से इसका उपयोग करने से डरते हैं कि वे अपने आदेश को गड़बड़ कर सकते हैं और अपने कंप्यूटर को क्रैश कर सकते हैं

मुझे लगता है कि कमांड लाइन एक दोधारी तलवार है, और अक्सर बहुत तेज होती है। इसकी सबसे बड़ी ताकत नए उपयोगकर्ताओं के लिए इसकी सबसे बड़ी कमजोरी भी है: सीएलआई कार्यक्रम वही करते हैं जो आप कहते हैं, यह पूछे बिना कि क्या वास्तव में आपका मतलब है। वे अक्सर पुष्टि के लिए नहीं पूछते हैं, वे हाथ से पकड़े जाने या इंटरैक्टिव मदद नहीं देते हैं, और उनके विकल्प कम होते हैं, अक्सर उलट होते हैं, कभी-कभी पाठ-आधारित स्ट्रिंग्स को भ्रमित करते हैं। ध्यान दें कि वे कर रहे हैं आम तौर पर बहुत अच्छी तरह से प्रलेखित, एक बस के मैनुअल (जो लगभग हमेशा पढ़ने के लिए man <command you are about to run>) और समझने के लिए कि वे क्या आदेश पंक्ति क्या करेंगे चलाने के लिए जा रहे हैं समय लगता है।

ऑपरेशन का यह तरीका शक्तिशाली है - इसका मतलब है कि अनुभवी सीएलआई उपयोगकर्ता लंबी कमांड "पाइपलाइन" को तैयार कर सकते हैं जो एकल कमांड के साथ जटिल कार्य करते हैं। ऐसा इसलिए है क्योंकि कार्य यह नहीं पूछेगा कि "क्या आप निश्चित हैं?" हर कदम पर, यह वही करता है जो इसे बताया जाता है। लेकिन इस मोड से अपरिचित उपयोगकर्ता के लिए, और एक GUI के लिए उपयोग किया जाता है जहां ऑनलाइन मदद एक क्लिक दूर है, यह अपरिचित और डरावना है।

लेकिन क्या वास्तव में कमांड हैं जो आपके कंप्यूटर को क्रैश करेंगे?

क्या आप CLI का उपयोग करके अपने कंप्यूटर को "क्रैश" कर सकते हैं? शायद। यदि आप विनाशकारी आदेश का गलत तरीके से उपयोग करते हैं तो आप निश्चित रूप से डेटा हानि का कारण बन सकते हैं। ईजी के कई जवाब यहां दिए गए हैं rm, एक कमांड जो फाइलों को हटा देती है। जाहिर है, आप उस आदेश के साथ डेटा हानि का कारण बन सकते हैं, यह वही है जो कमांड को करने के लिए डिज़ाइन किया गया था।

जैसा कि अन्य उत्तरों में बताया गया है, आप अपनी मशीन को रेंडर करने के लिए कमांड लाइन का उपयोग कर सकते हैं। यह लगभग समय की अवधि के लिए अनुपयोगी है: आप पुष्टि के बिना बंद कर सकते हैं, बिना पुष्टि के अपने उपलब्ध संसाधनों का 100% उपयोग करने की प्रक्रिया का कारण बन सकते हैं, अपने सभी कार्यक्रमों को मार सकते हैं। या अपने फाइल सिस्टम को नष्ट कर। यदि आप वास्तव में चाहते थे, तो आप एक कर्नेल एक्सटेंशन को तैयार करने के लिए सीएलआई का उपयोग कर सकते हैं जो कर्नेल को घबराहट का कारण बनता है (जो कि "क्रैश" मैं सोच सकता हूं) के सबसे करीब है।

कमांड लाइन (टर्मिनल के माध्यम से पहुँचा) एक शक्तिशाली उपकरण है। अक्सर GUI की तुलना में टर्मिनल का उपयोग करके किसी समस्या को हल करना अधिक तेज़ होता है। कुछ समाधान केवल टर्मिनल कमांड का उपयोग करके उपलब्ध हैं। हालांकि, सीएलआई की कुंजी समझ है । यादृच्छिक कमांड निष्पादित न करें जो आप ऑनलाइन देखते हैं। मैन पेज पढ़ें और समझें कि कमांड क्या करते हैं। यदि आप अनिश्चित हैं, तो किसी से पूछें या उसे चलाने से पहले एक कमांड के बारे में अधिक जानें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.