읽기 전용 TMOUT 변수 – 활동이 없을 때 쉘 자동 종료를 사용하지 않는 해결 방법


10

여기에는 읽기 전용 Bash 변수가 있습니다. 해당 변수를 설정 해제 할 수 없습니다.

$ echo $TMOUT
1800

해결 방법으로 해당 줄을 작성했습니다 (세션이 종료되지 않음).

#!/usr/bin/perl

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

CentOS7 / RHEL7 저장소에 유사한 Perl 코드와 같은 공식 패키지 (rpm)가 있습니까? vim 편집기를 열고 싶지 않습니다. 명령을 원합니다.


4
이것에 대한 일반적인 해결책은 cat세션에서 벗어날 때 실행 됩니다. 그리고 ^ C 당신의 반환에.
steve

팀에 몇 주 동안 터미널을 연속적으로 열어 놓은 사람들이 있었기 때문에 비슷한 규칙을 적용했습니다. 1800이 다소 낮다는 데 동의하지만 어떤 이유로 든 있어야합니다. 사람들은 평소와의 편차를 느끼는 경향이 있습니다 ... 세션은 아픈 엄지처럼 보입니다.
Rui F Ribeiro

읽기 전용 인 경우 다음을 입력하십시오.exec env TMOUT=0 bash
nightshift

답변:


5

명령 행에서 perl 명령을 실행할 수 있습니다 ...

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

또는 쉘에서 동일한 작업을 수행 할 수 있습니다 ( 예 sh/ bash예).

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

또는 다음을 사용할 수 있습니다 watch.

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


무엇 printf '\33[0n'입니까? 나는 커맨드 라인 printf이 무엇인지 안다 . 그러나 무엇을 인쇄하고 있습니까?
Trevor Boyd Smith

1
\33이스케이프 키의 줄임말 <esc>[0n은 알려진 ANSI 이스케이프 코드가 아니며 오타라고 생각하며 <esc>[0mANSI 이스케이프 코드를 지원하는 앱 / 터미널 / tty의 터미널 색상을 재설정 해야합니다 .
Drav Sloan

12

이것을 .bash_profile의 시작 부분에 추가 하시겠습니까?

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

타임 아웃 판결에서 패배 한 결과로 오래된 오래된 세션을 남겨두면 시스템 관리자의 분노를 조심하십시오.


이건 정말 사악합니다!
Ahi Tuna

1
-i 인수는 환경을 지 웁니다. 다음과 같이보다 구체적이고 단일 변수 만 설정 해제 할 수 있습니다. env -u TMOUT bash --init-file ~ / .bash_profile
Dave Richardson

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..."
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.