केवल TMOUT चर पढ़ें - जब कोई गतिविधि न हो तो स्वचालित रूप से निकास शेल को अक्षम करने के लिए समाधान


10

हमारे यहाँ केवल बैश वेरिएबल पढ़ा जाता है। मुझे उस वेरिएबल को अनसेट करने की अनुमति नहीं है।

$ echo $TMOUT
1800

वर्कअराउंड के रूप में मैंने उन पंक्तियों को लिखा है (कि मेरा सत्र बाहर नहीं निकलता है)

#!/usr/bin/perl

$|++;
while (1) { print "\e[0n"; sleep 120; }

क्या एक आधिकारिक पैकेज (आरपीएम) है जो सेंटोस 7 / आरएचईएल 7 रिपॉजिटरी में समान (पर्ल कोड से ऊपर) समान है? मैं एक विम संपादक खोलना पसंद नहीं करता, मैं एक आदेश चाहता हूं।


4
catजब आप अपने सत्र से आगे बढ़ते हैं तो इसका केवल समाधान ही चलाया जाता है । और फिर ^ अपनी वापसी पर इसे सी।
स्टीव

मैंने एक समान नियम लागू किया क्योंकि मेरी टीम में ऐसे लोग थे जो लगातार कई हफ्तों तक खुले रहते थे। जबकि मैं मानता हूं कि 1800 कम है, यह किसी कारण से होना चाहिए। लोग सामान्य रूप से विचलन को नोटिस करते हैं ... आपके सत्र एक गले में अंगूठे की तरह बाहर खड़े होंगे।
रुई एफ रिबेरो

जब यह केवल पढ़ने के लिए है, टाइप करें:exec env TMOUT=0 bash
nightshift

जवाबों:


5

आप कमांड लाइन से पर्ल कमांड जारी कर सकते हैं ...

perl -e '$|++; while (1) { print "\e[0n"; sleep 120; }'

या आप शेल ( sh/ a bash) में भी ऐसा कर सकते हैं :

while sleep 120; do printf '\33[0n'; done

या आप उपयोग कर सकते हैं watch:

watch -n 120 printf '\33[0n'


क्या है printf '\33[0n'? मुझे पता है कि कमांड लाइन क्या printfहै। लेकिन क्या छप रहा है?
ट्रेवर बॉयड स्मिथ

1
\33भागने की कुंजी के लिए शॉर्टहैंड <esc>[0nएक ज्ञात एएनएसआई एस्केप कोड नहीं है, मुझे लगता है कि यह एक टाइपो था और होना चाहिए <esc>[0mजो एप्स / टर्मिनलों / टैटी के लिए टर्मिनल रंग को रीसेट करता है जो एएनएसआई एस्केप कोड का समर्थन करता है।
Drav Sloan

12

इसे अपने .bash_profile के प्रारंभ में जोड़ें?

if [ ! -z "$TMOUT" ]; then
  env -i bash --init-file ~/.bash_profile
fi

यदि आप अपने समयबाह्य शासकों को हराने के परिणामस्वरूप चल रहे एक गजिलियन पुराने सत्र को छोड़ देते हैं, तो सिस्मडिन्स के प्रकोप से सावधान रहें।


यह वास्तव में EVIL है!
ऐही तूना

1
-इ तर्क पर्यावरण को मिटा देता है। आप अधिक विशिष्ट हो सकते हैं और केवल एक ही चर को परेशान कर सकते हैं जैसे: env -u TMOUT bash --init-file ~ / .bash_profile
डेव रिचर्डसन

4

यहाँ बात है,
जब सत्र चर "रीड ओनली" है, तो आपको वर्तमान शेल प्रक्रिया को "निष्पादित" द्वारा कमांड के साथ बदलना होगा
, इसलिए, आपके प्रश्न का उत्तर है:

$> exec env TMOUT=0 bash

लेकिन मैं एक उच्च टाइमआउट मान सेट करने की सलाह देता हूं

$> exec env TMOUT=3600 bash

0

आप गैर-संवादात्मक सत्र में स्विच क्यों नहीं कर रहे हैं?

# TMOUT=0
-bash: TMOUT: readonly variable
# unset TMOUT
-bash: unset: TMOUT: cannot unset: readonly variable
# su
# export TMOUT=10
# unset TMOUT
# 

0

मेरा मामला है, इसे /etc/profile.d/bash_autologout.sh में परिभाषित किया गया है:

TMOUT=1800
readonly TMOUT
export TMOUT

इसे खोजने के लिए, मैंने किया:

sudo find /etc/ -name "*" | xargs sudo grep "TMOUT" 2>&1 | grep -v "filter..."
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.