salt okunur TMOUT değişkeni - etkinlik olmadığında otomatik olarak kabuktan çıkmayı devre dışı bırakmak için geçici çözüm


10

Burada salt okunur bir Bash değişkenimiz var. Bu değişkeni ayarlamama izin verilmiyor.

$ echo $TMOUT
1800

Geçici bir çözüm olarak bu satırları yazdım (oturumumdan çıkmıyor)

#!/usr/bin/perl

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

CentOS7 / RHEL7 deposunda benzer olan (Perl kodunun üstünde) resmi bir paket (rpm) var mı? Bir vim editörü açmak istemiyorum, bir komut diliyorum.


4
Bunun olağan çözümü sadece catseansınızdan uzaklaştığınızda çalışır . Ve sonra ^ C dönüşünüzde.
steve

Benzer bir kural uyguladım çünkü ekibimde terminalleri üst üste haftalarca açık bırakan insanlar vardı. 1800'ün biraz düşük olduğunu kabul etsem de, bir nedenden dolayı orada olmalı. İnsanlar her zamanki gibi sapmalar fark etme eğilimindedir ... oturumlarınız ağrılı bir başparmak gibi göze çarpacaktır.
Rui F Ribeiro

salt okunur olduğunda şunu yazın:exec env TMOUT=0 bash
nightshift

Yanıtlar:


5

Komut satırından perl komutları verebilirsiniz ...

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

veya aynısını kabukta da yapabilirsiniz (a sh/ bashexample):

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

Veya şunları kullanabilirsiniz watch:

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


nedir printf '\33[0n'? komut satırının ne olduğunu biliyorum printf. ama ne basılıyor?
Trevor Boyd Smith

1
\33kaçış anahtarı <esc>[0niçin bilinen bir ANSI kaçış kodu değil, ben bir yazım hatası olduğunu ve <esc>[0mANSI kaçış kodlarını destekleyen uygulamalar / terminaller / tty's için terminal rengini sıfırlayan olması gerektiğini hayal ediyorum .
Drav Sloan

12

Bunu .bash_profile dosyanızın başına eklensin mi?

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

Zaman aşımı kararlarını yenmenin bir sonucu olarak bir milyon eski oturumdan ayrılırsanız sistem yöneticilerinin gazabına dikkat edin.


Bu gerçekten kötü!
Ahi Tuna

1
-İ argümanı çevreyi siler. Daha açık olmak ve sadece bu gibi tek bir değişken unset yapabilirsiniz: ~ / .bash_profile env -u TMOUT bash --init dosya
Dave Richardson

4

İşte,
oturum değişkeni "Salt Okunur" olduğunda, geçerli kabuk işlemini "exec" komutuyla değiştirmeniz gerekir.
Yani, sorunuzun cevabı:

$> exec env TMOUT=0 bash

Ancak daha yüksek bir zaman aşımı değeri ayarlamanızı öneririm

$> exec env TMOUT=3600 bash

0

Neden etkileşimli olmayan oturuma geçmiyorsunuz?

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

0

Benim durumumda, /etc/profile.d/bash_autologout.sh içinde tanımlanmıştır:

TMOUT=1800
readonly TMOUT
export TMOUT

Bulmak için yaptım:

sudo find /etc/ -name "*" | xargs sudo grep "TMOUT" 2>&1 | grep -v "filter..."
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.