read only TMOUT variable - solução alternativa para desativar a saída automática do shell quando não há atividade

8

Temos aqui uma variável Bash somente de leitura. Eu não estou autorizado a desconfigurar essa variável.

$ echo $TMOUT
1800

Como solução, escrevi essas linhas (que minha sessão não saia)

#!/usr/bin/perl

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

Existe um pacote oficial (rpm) que faz semelhante (como acima no código Perl) em um repositório do CentOS7 / RHEL7? Eu não gosto de abrir um editor vim, desejo um comando.

    
por Ivanov 10.08.2015 / 14:31

4 respostas

5

Você pode emitir comandos perl a partir da linha de comando ...

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

ou você poderia fazer o mesmo no shell (a sh / bash example):

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

Ou você pode usar watch :

watch -n 120 printf '[0n'

    
por 10.08.2015 / 14:42
7

Adicione isto ao início do seu .bash_profile?

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

Cuidado com a ira dos sysadmins se você deixar um zilhão de velhas sessões rodando como resultado de derrotar suas regras de timeout.

    
por 10.08.2015 / 17:21
0

Por que você não está mudando para uma sessão não interativa?

# TMOUT=0
-bash: TMOUT: readonly variable
# unset TMOUT
-bash: unset: TMOUT: cannot unset: readonly variable
# su
# export TMOUT=10
# unset TMOUT
# 
    
por 29.01.2016 / 09:27
0

Aqui está a coisa,
Quando a variável de sessão é "Read Only" você tem que substituir o processo de shell atual com o comando por "exec"
Assim, a Resposta ao seu pergunta é:

$> exec env TMOUT=0 bash

Mas recomendo definir um valor de tempo limite maior

$> exec env TMOUT=3600 bash
    
por 01.09.2018 / 23:11