लिनक्स कंसोल स्क्रीन को बदलने वाला व्यवहार बदलें


38

मैं लिनक्स वर्चुअल टर्मिनलों पर स्क्रीन ब्लैंकिंग व्यवहार को कैसे बदलूं?

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

ज्यादातर मैं सिर्फ टाइमआउट बदलना चाहता हूं, लेकिन मुझे अन्य सेटिंग्स में भी दिलचस्पी है।

यदि यह मदद करता है, तो मेरा एक सिस्टम Ubuntu 10.04 स्टॉक ग्राफिक्स ड्राइवरों के साथ चल रहा है। फ़्रेमबफ़र डिवाइस fbsetका उपयोग करके कंसोल को दिखाता radeondrmfbहै।


2
आशा है कि यह आपकी मदद करता है, मुझे यह तब मिला जब मैं एक ही सवाल पूछ रहा था askubuntu.com/questions/138918/…

जवाबों:


42

settermसे @ है whitequark जवाब एक उचित यूज़रस्पेस उपकरण है, लेकिन यह पूरी कहानी नहीं है।

डिफ़ॉल्ट कंसोल ब्लैंकिंग व्यवहार को संकलन समय पर कर्नेल में बेक किया जाता है। यह पैरामाटर कंसोलब्लैंक = के साथ बूट समय पर विन्यास योग्य है , या इसके साथ यूजरस्पेस में setterm। कर्नेल डॉक्यूमेंटेशन ( कर्नेल-पैरामीटर.टैक्स ) से:

consoleblank=  [KNL] The console blank (screen saver) timeout in
               seconds. Defaults to 10*60 = 10mins. A value of 0
               disables the blank timer.

यहां मेरे उबंटू प्रणाली के विकल्प, उनकी चूक और उनके प्रभाव क्षेत्र हैं:

  • setterm -blank [0-60]; हमेशा 0 की सूचना देता है; एक वास्तविक वीटी पर चलने पर प्रभावी; सभी वास्तविक TTYs को प्रभावित करता है; एक वीटी पर स्क्रीन सत्र में चलाने पर प्रभावी नहीं।
  • setterm -powerdown [0-60]; हमेशा "3]" (??) की रिपोर्ट करता है; कोई प्रभाव नहीं लगता है। Ubuntu kernels APM_DISPLAY_BLANK सक्षम नहीं करता है , और यह संबंधित हो सकता है।
  • consoleblank=N; 600 (10 मिनट) तक चूक; सभी वास्तविक VT को प्रभावित करता है; एक वीटी में स्क्रीन सत्र को प्रभावित करता है; दौड़ते समय सेट करने का कोई तरीका नहीं।

तो डिफ़ॉल्ट बदलने के लिए मेरे विकल्प निम्न में से एक है:

  1. .Bashrcsetterm -blank X जैसे शेल इनिट फ़ाइल में जोड़ें (एक्स मिनटों में, 0 अक्षम करने के लिए) ।
  2. जोड़े setterm -blank Xको /etc/rc.local
  3. जोड़े consoleblank=Y(वाई सेकंड में अक्षम करने के लिए, 0) में पैरामीटर सूचियों में जोड़कर गिरी कमांडलाइन को / etc / default / grub , या तो GRUB_CMDLINE_LINUX या GRUB_CMDLINE_LINUX_DEFAULT । (मत भूलना update-grub।)

4
मैं ध्यान देना चाहूंगा कि tmux केsetterm -blank X भीतर से मेरे लिए काम नहीं किया गया था , लेकिन कमांड चलाने से पहले जब मैं tmux से बाहर निकला तो पूरी तरह से काम किया ।
कोड़ी हेस

1
यदि आप grub2 को बूटलोडर के रूप में उपयोग कर रहे हैं, तो आप इस कर्नेल पैरामीटर को / etc / default / grub में जोड़ सकते हैं GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=0"और फिर अपने grub config के साथ अपडेट कर सकते हैं grub[2]-mkconfig -o /boot/grub/grub.cfg
user3132194

3]के लिए setterm -powerdownकेवल आधा सच है: setterm -powerdown 3 | hexdump -cरिटर्न 033 [ 1 4 ; 3 ]। इस भागने के क्रम की व्याख्या क्या करनी चाहिए ...
डैनियल एल्डर

1
आपके वितरण पर निर्भर करता है और जहाँ आप परिवर्तन करना चाहते हैं, इनमें से कुछ विकल्प काम नहीं कर सकते हैं। मैंने पाया कि आरटीओलोक में सेटर आरएचईएल 5 और 6 के लिए बहुत अच्छा काम करता है, लेकिन 7. नहीं।
डेविड सी।

9

प्रयास करें setterm -blank $minutes(या निष्क्रिय करने के लिए 0 पास); -powersaveविकल्प भी संबंधित हो सकता है। settermबहुत सारे अन्य उपयोगी विकल्प भी हैं।

यदि आप सिस्टम स्टार्टअप पर इन विशेषताओं को सेट करना चाहते हैं, तो एक इनस्क्रिप्ट को लिखने पर विचार करें। यह सिर्फ /etc/init.dडायरेक्टरी में रखी गई स्क्रिप्ट है । इसे बुलाया जाए setterm:

#!/bin/sh
[ "$1" == "start" ] || exit 0 # only initialize everything when called as /etc/init.d/setterm start
for term in /dev/tty[0-9]*; do # select all ttyNN, but skip ttyS*
    setterm -blank 0 >$term <$term
    setterm -powersave off >$term <$term
done

फिर इसे निष्पादन योग्य बनाएं:

# chmod +x /etc/init.d/setterm

और अंत में, /etc/rcX.d symlinks (Debian तरीका) बनाएं:

# update-rc.d setterm defaults

(यदि आप उस व्यवहार से थक जाएंगे, तो # update-rc.d -f setterm removeध्यान दें कि -fपहले तर्क होना चाहिए)।


मानव संसाधन विकास मंत्री। ऑन-द-फ्लाई के लिए उपयोगी लगता है, यह मेरे परीक्षण पर लगता है उबंटू प्रणाली यह वास्तव में -powerdownसेटिंग है जो प्रभाव में है। ऑन-बूट, सिस्टम-वाइड डिफॉल्ट सेट करने के बारे में क्या? चल रहा है setterm -blank Xया setterm -powerdown Yमें /etc/rc.local (या ~ / .bashrc ) उचित?
क्विकोट

1
हां, लेकिन केवल अगर rc.localवास्तव में काम करता है। (हाल के upstartप्रवास ने कुछ चीजों को खराब कर दिया, इसके माध्यम से यह स्पष्ट रूप से मौजूद है और मेरे सिस्टम पर काम करता है।) अन्यथा आपको एक इनस्क्रिप्ट तैयार करना चाहिए। यह आसान है: हमारे मामले में, इसे startपहले तर्क के रूप में पारित होने पर सब कुछ इनिशियलाइज़ करना होगा और अन्यथा कुछ भी नहीं करना चाहिए। मैं अपने उत्तर में इसका वर्णन करूँगा।
व्हाइटवार्क

कमांड setterm -blank X >/dev/ttyNकाम नहीं करता है, इसलिए मुझे नहीं लगता कि इनस्क्रिप्ट अवधारणा काम करेगी। एक बूटटाइम पैरामीटर tho पर चला गया और कुछ और शोध किया। मुझे लगता है के बारे में गलत हो -powerdownऔर -powersave; पूरी तरह से परीक्षण नहीं किया है, लेकिन वे मेरे सिस्टम पर काम नहीं कर रहे हैं। setterm -blank Xकेवल एक वास्तविक VT से काम करता है, और सभी VT को प्रभावित करता है, इसलिए एक बार /etc/rc.local के माध्यम से चलना उचित है। ( Upstart दूर rc.local , सिर्फ /etc/rcX.d सामान नहीं लेता है ।)
quix quixote

1
अहम। ऐसा लगता है कि settermभागने के दृश्यों पर निकलता है stdout, लेकिन TTY प्रकार की जाँच करता है stdin: मैं अभी जाँच setterm ... >/dev/ttyN </dev/ttyNकरता हूँ , और जैसा इरादा करता है।
श्वेतार्क

यह समझ में आता है, और यह काम करता है (एक असली TTY से), लेकिन उस वाक्य रचना का उपयोग करने का क्या मतलब है? (1) अभी भी स्क्रीन (या संभावित रूप से अन्य PTYs) के भीतर से काम नहीं करता है , जो कि जहां एक / dev / ttyN को निर्दिष्ट करना उपयोगी होगा; (2) एक वीटी सेट करने से सभी प्रभावित होते हैं, इसलिए इनस्क्रिप्टस्क्रिप्ट लूप की कोई आवश्यकता नहीं है।
क्वैक

3

अगर किसी को डेबियन के लिए एक और संभावित समाधान की तलाश है (संभवतः उबंटू नहीं):

में /etc/kbd/config, एक सेटिंग "BLANK_TIME" कहा जाता है के लिए देखो:

# screen blanking timeout.  monitor remains on, but the screen is cleared to
# range: 0-60 min (0==never)  kernels I've looked at default to 10 minutes.
# (see linux/drivers/char/console.c)
BLANK_TIME=30

इसे 0 पर बदलें, इससे यह अक्षम हो जाएगा:

BLANK_TIME=0

डेबियन 6 और 7 पर परीक्षण किया गया।


2

यदि आप एक नया Ubuntu चला रहे हैं जो अपस्टार्ट का उपयोग करता है, तो आप उपयोग कर सकते हैं:

for file in /etc/init/tty*.conf; do tty="/dev/`basename $file .conf`"; echo "post-start exec setterm -blank 0 -powersave off >$tty <$tty" | sudo tee -a "$file"; done

यहाँ क्या हो रहा है, इसकी थोड़ी व्याख्या:

नए उबंटू संस्करण सिस्टम स्टार्टअप के लिए अपस्टार्ट का उपयोग करते हैं। अपस्टार्ट के साथ, लिनक्स कंसोल को / etc / init में संग्रहीत कॉन्फिग फाइलों के साथ सेटअप किया गया है। ऊपर दी गई कमांड उन सभी कॉन्फिग फाइलों पर पुनरावृति करके शुरू होती है:

for file in /etc/init/tty*.conf;

$ फ़ाइल में tty के अपस्टार्ट कॉन्फिग फ़ाइल का नाम tty डिवाइस के नाम को बनाने के लिए उपयोग किया जाता है:

tty="/dev/`basename $file .conf`";

एक अपस्टार्ट "पोस्ट-स्टार्ट" कमांड बनाया गया है जो स्क्रीन सेटिंग और पावर सेविंग को निष्क्रिय करने के लिए "सेटरम" रन करता है।

echo "post-start exec setterm -blank 0 -powersave off >$tty <$tty"

और अंत में उस कमांड को upstart config फाइल में जोड़ा जाता है:

| sudo tee -a "$file";

2

मेरे सिस्टम (RedHat Enterprise Linux के विभिन्न रिलीज़) पर, मैंने पाया है कि विभिन्न तरीकों की आवश्यकता है।

मेरे आरएचईएल 5 और 6 सिस्टम के लिए, मैं लाइन जोड़ने में सक्षम हूं

/bin/setterm -blank 0 -powerdown 0 -powersave off

को /etc/rc.local। यह सिस्टम स्टार्टअप पर कंसोल स्क्रीन ब्लैंकिंग को निष्क्रिय कर देता है।

मैंने पाया कि यह आरएचईएल 7 सिस्टम पर काम नहीं करता है। RHEL7 पर, r.local से सेटरम रन करने से एक त्रुटि उत्पन्न होती है:

setterm: $TERM is not defined.

कमांड एक इंटरेक्टिव शेल से काम करता है, जहां $ TERM परिभाषित होता है (as linux)। अगर मैं इसका उपयोग करने के लिए सेटर को मजबूर करता हूं:

/bin/setterm -term linux -blank 0 -powerdown 0 -powersave off

फिर मुझे एक अलग त्रुटि मिलती है:

setterm: cannot (un)set powersave mode: Inappropriate ioctl for device

हालांकि एक ही कमांड एक इंटरैक्टिव सत्र से ठीक काम करता है। consoleblankकर्नेल पैरामीटर सेट करना काम किया।

RHEL7 पर, संपादित करें /etc/default/grubऔर पैरामीटर consoleblank=0को जोड़ें GRUB_CMDLINE_LINUX। फिर दौड़कर grub2-mkconfig -o /boot/grub2/grub.cfgरिबूट करें।

मैंने consoleblankRHEL5 या 6 पर सेटिंग की कोशिश नहीं की है ।


2
RHEL7 सिस्टमड का उपयोग करता है; r.local डिफ़ॉल्ट रूप से एक टर्मिनल से जुड़ा नहीं है। मुझे लगता है कि आप </dev/tty1 >/dev/tty1इसे काम करने के लिए जोड़ सकते हैं या कुछ कर सकते हैं
sourcejedi

1

लिनक्स कंसोल निजी सीएसआई अनुक्रम

sleep mode/screensaverप्रवेश करने का समय निर्धारित करने के लिए (जहाँ X मिनट में एक समय है; 0 = कभी नहीं):

(सीरियल कंसोल से)

echo -e '\033[9;X]' > /dev/tty1    

या (फ्रेम बफ़र कंसोल से)

echo -e '\033[9;X]'    

या इसे प्रत्येक बूट पर सेट करने के लिए, उपयोग करें /etc/inittab:

tty1::sysinit:echo -e '\033[9;X]'

refs:


0

gnome-screensaver-command --exitमेरी .profileफाइल में जोड़ना मेरे लिए डेबियन लिनक्स (व्हीजी) पर इस समस्या को तय करता है।

सोचा कि मैं इसे उन लोगों की मदद करने के लिए जोड़ूंगा, जो स्क्रीन-ब्लैंकिंग को रोकने के लिए अपने बालों को खींच रहे हैं।

"बिजली बचाने के लिए डिम स्क्रीन" नामक एक चेकबॉक्स खराबी है। यहां तक ​​कि अनियंत्रित भी, यह चयनित निष्क्रियता समय के अनुसार स्क्रीन को खाली कर देगा।

अद्यतन: मुझे वास्तव में sleep 30 && /usr/bin/gnome-screensaver-command --exit &इसे ठीक से काम करने की आवश्यकता है। GNOME स्क्रीनसेवर लंबे समय के बाद शुरू होता है।


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