भौतिक स्विच / सॉकेट का उपयोग किए बिना तुरंत कंप्यूटर (1 से 5 सेकंड) को कैसे बंद करें?


17

क्या कोई आदेश / कार्यक्रम है जिसके माध्यम से मैं अपने सिस्टम को तुरंत बंद कर सकता हूं (1 से 5 सेकंड)?

अद्यतन (2015): उन लोगों को धन्यवाद जिन्होंने पावर सॉकेट का उपयोग बंद करने का सुझाव दिया है। : डी

अपडेट (2016): @technophile ने सुझाव दिया कि मुझे समस्या की प्रकृति का वर्णन करने वाले प्रश्न में कुछ जानकारी जोड़नी चाहिए - मुख्य रूप से मैं किस परिदृश्य को हल करने की कोशिश कर रहा था। यहाँ वह परिदृश्य है जिसके लिए यह प्रश्न कुछ साल पहले पूछा गया था।

हम सार्वजनिक स्थानों (जैसे एयरपोर्ट, होटल आदि) में तैनात होने के लिए एक प्रणाली का निर्माण कर रहे थे। लोग इंटरनेट सर्फिंग के लिए उस प्रणाली का उपयोग कर सकते हैं, अपने क्रेडिट कार्ड का उपयोग करके अपने ईमेल या बुकिंग आदि की जांच कर सकते हैं। सिस्टम का निर्माण यह सुनिश्चित कर रहा था कि दूसरा उपयोगकर्ता किसी भी तरह से उस सिस्टम के पिछले उपयोगकर्ता की जानकारी (ईमेल, क्रेडिट कार्ड) प्राप्त नहीं कर सकता है, भले ही कीगलर्स तरह के सॉफ्टवेर किसी भी तरह से स्थापित हो। सिस्टम कैसे सुनिश्चित कर रहा था? खैर, विवरण साझा नहीं किया जा सकता क्योंकि यह सार्वजनिक जानकारी नहीं है। लेकिन हमने हमेशा नए ऑपरेटिंग सिस्टम के लिए एक तरीका विकसित किया है (जैसे कि यह नया स्थापित किया गया था) सिस्टम के नए उपयोगकर्ता के लिए। केवल समस्या यह थी कि हमें मशीन को बंद करना पड़ा और जैसे ही पहला उपयोगकर्ता मशीन को छोड़ता है, उसे फिर से ऊपर लाना पड़ता है।

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


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

2
@ सैम 152 कौन सी दीवार?
उस्मान

क्या आप "मेरे सिस्टम को नुकसान पहुँचाए बिना" भी निर्दिष्ट करना चाहते थे, या यह चिंता का विषय नहीं है?
टेक्नोफाइल

@Technophile मेरी प्रणाली के लिए एक स्थायी क्षति नहीं है। लेकिन आपके मन में क्या है?
उस्मान

मेरा उद्देश्य स्पष्ट करना है कि आप क्या पूछ रहे हैं और आप क्या करने की कोशिश कर रहे हैं। मैं इलेक्ट्रॉनिक्स में काम करता हूं; "तुरन्त" का अर्थ 1 सेकंड है? 1ms? 1us? 1ns? क्या आप बस अधीर हैं, या कुछ विशिष्ट आवश्यकता है? 6 सेकंड शटडाउन समय (उदाहरण के लिए) के परिणाम क्या हैं? मैं एक एम्बेडेड सिस्टम के साथ काम कर रहा हूं जो पावर बटन डाउन होने पर शटडाउन 5 सेकंड से अधिक होने पर उसके एसडी कार्ड को दूषित कर देता है। तुम क्या कर रहे हो?
टेक्नोफाइल

जवाबों:


32
sudo shutdown -h now

9
यह एक सिस्टम को तुरंत बंद नहीं करेगा । ;)
मार्सेल कोर्पेल

14
@ मार्सेल कोर्पेल: जैसे ही किसी को अपने सिस्टम को नुकसान पहुंचाए बिना करना चाहिए;)
फेलिक्स

@ फेलिक्स - मैं यह सुनता रहता हूँ कि लिनक्स एक बहुत ही मजबूत प्रणाली है, और यह मेरे विंडोज के रूप में "हार्ड रिबूट" को संभाल नहीं सकता है? आश्चर्य होगा;)
Gnoupi

2
@ ग्नौपी: अचानक बंद होने के कारण कोई ओएस बिना किसी भेद्यता के नहीं बनाया जा सकता है। अन्यथा, सबसे तेज़ शटडाउन विधि का जवाब पावर कॉर्ड को यैंक करना होगा।
harrymc

1
कुछ संस्करण वाक्य रचना अलग है। "सुडो शटडाउन -g0 -y -i5" (सोलारिस)। और हां, इसे मुश्किल बनाने के लिए, अलग-अलग सिस्टम पर शटडाउन के लिए "i" का सही मान अलग-अलग हो सकता है। मेरा मानना ​​है कि शटडाउन के लिए बहुत सारे अन्य सिस्टम पर यह 0 है। आह। होगा प्यार मानकों, इतने सारे से चुनने के लिए!
ब्रायन नोब्लुक

14

यदि आप वास्तव में विशेष कारणों से मजबूर नहीं हैं तो मैं निम्नलिखित करने का सुझाव नहीं देता:

kill -SEGV 1   # should generate a core dumps and kernel panic
kill -ABRT 1   # should generate a core dumps and kernel panic
kill -9 1      # On old systems worked nowadays not

यह मोटा, क्रूर है और इसे पावर कॉर्ड को अनप्लग करने के करीब के बराबर माना जा सकता है ...

सही तरीका है shutdown -h nowके साथ sudoपहले जब जरूरत।
शायद मुझे विधिपूर्वक कहना चाहिए ; नीचे देखें या बेहतर tl; डॉ।


कुछ शब्द और , उर्फ कहानी, अध्याय I
शुरुआत में ही अंत था और यह अंत तक रहेगा।

पूरे लिनक्स से निर्भर करता है प्यार ध्यान की init [ 1 ] [ 2 ] । फिर भी और निश्चित मात्रा में कृतघ्नता के बिना नहीं, एक समय था जब अच्छा लॉर्ड रूट उपयोगकर्ता इस प्रेम को धोखा दे सकता है और अचानक killएक असंगत ( -9) आदेश के साथ इनिट कर सकता है ।
( शिष्टाचार की पुस्तक, काउंट्स, ड्यूक्स के लिए निर्धारित करती है और उपयोगकर्ताओं को पहले आमंत्रित करने के लिए marquisessudo )।

फिर कुछ जादूगरों ने इनिट (बुक ऑफ से man 2 init) की रक्षा के लिए एक आकर्षण बनाया

केवल संकेत जो कि प्रक्रिया 1, init प्रक्रिया को भेजे जा सकते हैं, वे हैं जिनके लिए init ने संकेत संचालकों को स्पष्ट रूप से स्थापित किया है। यह आश्वासन देने के लिए किया जाता है कि सिस्टम को गलती से नीचे नहीं लाया गया है।

(हमारी जासूसी रिपोर्ट [ U1 ] कि init 1 HUP 6 ABRT 11 SEGV 15 TERM 30 PWR 2 INT 10 USR1 14 ALRM 17 CHLD 32 संभाल लेगी)
तो अच्छा प्रभु रूट उपयोगकर्ता समाचार सीखते हैं और कमांड को बदलते हैं kill -ABRT 1या kill -SEGV 1जो आमतौर पर उत्पन्न करते हैं। कर्नेल घबराहट और एक कोर डंप।

यह काम करता है क्योंकि init पीआईडी ​​नंबर 1 [ 2b ] को चलाने और लेने की पहली प्रक्रिया है ।

यह असुरक्षित है, नासमझ है और आपको लगता है कि यह बुरे शगुन का अभिशाप है और अभिशाप है, लेकिन अगर आप भौतिक रूप से हाथ नहीं डाल सकते हैं और इसे अनप्लग कर सकते हैं ...

शाप : यह लॉग पर नहीं लिखेगा, यह सभी प्रक्रियाओं को नहीं मारेगा और उनके समाप्त होने की प्रतीक्षा करेगा, यह एचडीडी पर ठीक से इनोड को अपडेट नहीं करेगा और न ही यह फाइल सिस्टम को अनमाउंट करेगा; यह भी मन में नहीं है कि यह ग्राफिकल विंडो और शेल हिस्टरी के विकल्पों को बचाएगा, और हमारी कल्पना से परे कई अन्य ... जैसा कि हमने कहा कि पावर कॉर्ड को अनप्लग करने के करीब बराबर, या लैपटॉप अगर बैटरी।


सही तरीका
"नॉन नोबिस, डोमिन, नॉन नोबिस, सेड नॉमिनी तुओ दा ग्लोरियम।", टेम्पलर नाइट्स मोटो। वैध (सही) जिस तरह से उपयोग करने के लिए है [ 3 ]
shutdown

sudo shutdown -h now

शटडाउन प्रणाली को सुरक्षित तरीके से नीचे लाने की व्यवस्था करता है। सभी लॉग-इन उपयोगकर्ताओं को सूचित किया जाता है कि सिस्टम नीचे जा रहा है और ...

लेकिन -h nowउनके पास इतना करने के लिए पर्याप्त समय नहीं होगा ...


कुछ शब्द और , उर्फ कहानी, अध्याय II
एक बार जब कुछ तर्क कदम आसमान से यूनिक्स के लोगों को महसूस हुए:

एक बार जब सिस्टम प्रक्रियाएं मार दी जाती हैं और फाइल सिस्टम अनमाउंट हो गए हैं, तो सिस्टम स्वचालित रूप से बंद या रिबूट हो जाता है। यह हॉल्ट या रिबूट कमांड का उपयोग करके किया जाता है, जो डिस्क में परिवर्तन को सिंक करता है और फिर वास्तविक हॉल्ट / पावर ऑफ या रिबूट का प्रदर्शन करता है। [ ]

दरअसल, आजकल, हम किसी भी अधिक तीन Moirai के अस्तित्व में विश्वास नहीं करते हैं [ 5 ] का लिनक्स दुनिया , reboot, poweroffऔर halt[ 6 ] : आधुनिक विज्ञान की ls -l $(which poweroff halt reboot)और से एक man reboot, इस अंधेरे उम्र पर फैलता नया प्रकाश और हमें पता चलता है यह केवल एक ही सही आदेश मौजूद है जो उनके सभी विकल्पों को पार्स करता है ताकि हम अंततः अपने कमांड नामों के विपरीत कार्यों के लिए पूछने के लिए स्वतंत्र हों! ( halt -pया reboot -pके लिए poweroff, shutdown -rके लिए reboot...)

अब जब कि सब स्पष्ट और सभी के लिए आरामदायक लग रहा था, अफवाहें का दावा [ 7 ] कि में अंडरवर्ल्ड की systemd टूलसेट [ 8 ] एक क्रांति अनजान पूरे छोड़ने प्रदर्शन किया गया था overworld । की एक सेना के लिए धन्यवाद पश्च संगतता की परतें हम सब पर ध्यान नहीं दिया कि रिबूट, poweroff, पड़ाव [ 6 ] और यहां तक कि telinit [ 9 ] और शट डाउन [ 3 ] सब पहले से ही नए राजा systemctl घिरा रहे हैं [ 10 ]। कृपया जेडीबीपी द बार्ड [ 9 ] की मूल आवाज से पूरी कहानी सुनें क्योंकि मेरे पास और कोई सांस नहीं है।

यदि आप उबंटू पंथ के अनुयायी हैं, तो आप अभी भी उन सभी दावों [ 11 ] के कुछ समय के लिए जागरूक रह सकते हैं ।


मध्य पृथ्वी halt -f, के init, telinitsystemctlसही एक से तेजी से समाधान के लिए खोज ,
लेकिन इसी तरह बुद्धिमान।

systemctl --force --force poweroff  # the most close to kill -9 1 
systemctl --force poweroff          # rough but still safe
sudo halt -f                                       # rough
sudo telinit 0        # or 6                       # safe
kill -SIGINT 1        # cause reboot   as the reboot command
kill -SIGRTMIN+4 1    # cause shutdown as the halt command

कि आप सिस्टमड के अधीन हैं या नहीं, आपको सभी सही शडाउन प्रक्रियाओं को लागू किए बिना कंप्यूटर को बंद करने में सक्षम होना चाहिए या नहीं (और इसलिए बहुत तेजी से):

  1. halt -f: विकल्प को निर्दिष्ट करना-f (ध्यान दें कि आपको -fउपरोक्त प्रक्रिया के साथ शटडाउन प्रक्रिया से बचने की आवश्यकता है) sudo poweroff -fया इसके साथ भी sudo reboot -f -h। दरअसल हम शटडाउन से बचने के लिए man rebootविकल्प -fको निर्दिष्ट करने की आवश्यकता के बारे में (और समतुल्य) से पढ़ सकते हैं :

    जब --force के साथ या रनलेवल 0 या 6 में कॉल किया जाता है , तो यह टूल रिबूट (2) सिस्टम को स्वयं कॉल करता है (REBOOTCOMMAND के तर्क के साथ) और सीधे सिस्टम को रिबूट करता है

    अन्यथा यह केवल REBOOTCOMMAND तर्क को पारित किए बिना उपयुक्त तर्कों के साथ शटडाउन (8) टूल को आमंत्रित करता है।

    -f, --force
    शटडाउन (8) को लागू नहीं करता है और इसके बजाय वास्तविक कार्रवाई करता है जिसे आप नाम से उम्मीद करेंगे

  2. इसके अलावा आप telinit [ 2b ] (या initसीधे) का उपयोग कर सकते हैं

    sudo telinit 0    # or 6
    

    रनवेवल बदलने के लिए init बताने के लिए ... लेकिन अगर ऐसा है तो सीधे इसे क्यों नहीं मारेंगे?

  3. सिस्टमड के तहत आप नासमझ डबल विकल्प का उपयोग कर सकते हैं --force --force

    systemctl --force --force poweroff  
    

    व्यवस्थित मैनुअल से पढ़ना [ 10 ]

    -f, --force
    जब सक्षम के साथ प्रयोग किया जाता है, तो किसी भी मौजूदा परस्पर विरोधी समन को ओवरराइट करें।
    जब , या kexec के साथ उपयोग किया जाता है halt, तोpoweroffreboot सभी इकाइयों को बंद किए बिना चयनित ऑपरेशन को निष्पादित करें। हालाँकि, सभी प्रक्रियाओं को जबरन मार दिया जाएगा और सभी फ़ाइल सिस्टम केवल पढ़ने या हटाने योग्य नहीं हैं। यह इसलिए तत्काल रिबूट का अनुरोध करने के लिए एक कठोर लेकिन अपेक्षाकृत सुरक्षित विकल्प है। अगर - ऑपरेशन के लिए दो बार निर्दिष्ट किया जाता है, तो उन्हें किसी भी प्रक्रिया को समाप्त किए बिना या किसी भी फाइल सिस्टम को अनमाउंट किए बिना तुरंत निष्पादित किया जाएगा। चेतावनी: निर्दिष्ट करना - इनमें से किसी भी ऑपरेशन के साथ दो बार लागू करने से डेटा हानि हो सकती है।

Ps> टेल JdeBP द बार्ड [ 7 ] से वेरिएंट के बारे में प्रेरणा लें ।


9

आप मूल के रूप में "ओ" को / proc / sysrq- ट्रिगर लिखकर डिस्क को सिंक्रनाइज़ किए बिना तुरंत मशीन को बंद कर सकते हैं।

एक शेल स्क्रिप्ट के रूप में यह कुछ ऐसा दिखेगा

#!/bin/sh
echo o >/proc/sysrq-trigger

यदि आपके पास / proc / sysrq-ट्रिगर पर अनुमति है, तो आपको इसे sysctl के माध्यम से सक्षम करने की आवश्यकता नहीं है। वह विकल्प केवल कीबोर्ड द्वारा ट्रिगर को प्रभावित करता है।

मैं किसी भी फाइल सिस्टम के साथ मशीन पर ऐसा करने की अनुशंसा नहीं करता जिसे आप बाद में पढ़ना चाहते हैं।

मैं इसका उपयोग Google कंप्यूट इंजन पर टेंपर्ड जॉब्स की लागत प्रभावशीलता को अधिकतम करने के लिए दस मिनट के निशान से ठीक पहले टेम्पर्ड उदाहरणों को मारने के लिए करता हूं, यह बहुत अच्छा काम करता है।


5
यह इस सवाल का सबसे अच्छा जवाब है। ओपी स्पष्ट रूप से कहता है कि वह सिस्टम को उसी तरह से बंद करना चाहता है जैसे कि बिजली से अनप्लग किया जाता है, वे क्षति या "ठीक से काम नहीं कर रहे हैं"। मुझे समझ नहीं आता कि कोई भी क्यों नहीं समझ सकता है।
पेट्र

1
boरिबूट के बजाय (प्रश्न के बाद से प्रासंगिक था)।
कामिल मैकियोरोव्स्की

7

आपको मैजिक SysRq कुंजी संयोजन का उपयोग करने के लिए मिला है REISUB

मेरे बाद दोहराएं: " राइजिंग एलीफेंट्स इज सो यूटरली बोरिंग ... "


2
नहीं। REISUB इसे पुनः आरंभ करेगा। REISUO बंद होगा या बस O.
बेनोइट

5
poweroff

यह सबसे आम distros पर काम करना चाहिए। इसके विपरीत shutdown, कई प्रणालियों पर आप इसे सामान्य उपयोगकर्ता के रूप में निष्पादित कर सकते हैं (कोई sudo की जरूरत नहीं)।

संपादित करें: आगे पढ़ने:


3

दूसरी SE साइट से लिया गया:

Alt+ SysRq+ Bतत्काल रिबूट है, और Alt+ SysRq+ Oतत्काल बंद है।


संदर्भ: यहाँ


2
लगता है कि आप संदर्भ से चूक गए हैं, और अपने उत्तर को उद्धृत करते हैं, तो मैं अपने वोट को उलट दूंगा
फ्रांसिस्को तापिया

यह मूल उत्तर है: askubuntu.com/a/56072
cst1992

2

लगभग 4 सेकंड के लिए बिजली की कुंजी पकड़ो, यह काफी तेज है।


1
यदि ऐसा करना है, तो पावर स्विच को फ्लिप करना वास्तव में तेज़ है;)
Gnoupi

यह किसी भी अन्य शटडाउन विधि के समान है, यह मानते हुए कि ओएस बिजली प्रबंधन करता है।
हैरी

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

शटडाउन करने के एक गैर-प्रोग्रामेटिक / गैर-सॉफ़्टवेयर तरीके की तलाश नहीं है अन्यथा @Gnoupi का सुझाव तेज़ है। ;)
उस्मान

2

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


2

मैंने सिस्टम को बंद करने के लिए इस छोटी स्क्रिप्ट का उपयोग किया। वास्तव में इसका उपयोग "प्रोटोटाइप" मशीन पर एक प्रैंक के लिए किया जाता है: "अरे यार, देखते हैं कि यह क्या कमाल करता है!"

#!/bin/bash
echo 1 > /proc/sys/kernel/sysrq-trigger; #enables sysrq triggers
echo u > /proc/sysrq-trigger # remount the system as ready only
#edited# echo s > /proc/sysrq-trigger # sync all write-pending data to disk
sync
echo o > /proc/sysrq-trigger # shut off the system power.

(यह स्क्रिप्ट हिटिंग Alt+ SysRq+ u/ s/ oजैसा कि पहले समझाया गया है) की नकल करता है । बेशक मैं एक असामान्य प्रणाली समाप्ति का कारण नहीं बन सकता (mysql टेबल, आदि क्रैश हो सकता है), इसलिए केवल डमी मशीनों पर उपयोग करें। नोट: सिंक में कुछ समय लग सकता है। मैंने देखा है कि अगर सिस्टम में बहुत सारी मेमोरी होती है (कैश के लिए) और आप एक फाइल को एक पेन ड्राइव पर कॉपी कर लेते हैं, तो सिंक-इन करने में अधिक समय लगता है, लेकिन मैं इसे प्रैंक के लिए भी सुझाता हूं।

संपादित करें: sync's' लिखने के बजाय इसका उपयोग करना बेहतर है sysrq-trigger: 's' लिखना स्क्रिप्ट निष्पादन को अवरुद्ध नहीं करेगा, इसलिए कैश को डिस्क में लिखे जाने का अनुरोध करने के बाद, मशीन तुरंत बंद हो जाएगी। syncकमांड के विपरीत , syncलेखन प्रक्रिया पूरी होने के बाद वापस आ जाएगा। इसलिए स्क्रिप्ट का निष्पादन अवरुद्ध हो जाएगा, जब तक कैश फ्लशिंग नहीं हो जाती।


1
क्या आपको 'u' से पहले 's' नहीं होना चाहिए? इसके अलावा, लूप के रूप में:SEQUENCE=(s u o); for i in "${SEQUENCE[@]}"; do sleep 3; printf "${i}" > /proc/sysrq-trigger; done
Que Quotion
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.