читати лише змінну TMOUT - вирішення для відключення автоматичного виходу з оболонки, коли немає активності


10

У нас тут є змінна Bash лише для читання. Мені заборонено знімати цю змінну.

$ echo $TMOUT
1800

Як вирішення, я написав ці рядки (щоб мій сеанс не виходив)

#!/usr/bin/perl

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

Чи є офіційний пакет (rpm), який робить схожий (як вище код Perl) у сховищі CentOS7 / RHEL7? Мені не подобається відкривати редактор vim, я хочу команду.


4
Звичайне рішення для цього - просто запуститись, catвідходячи від сеансу. А потім ^ C це при поверненні.
steve

Я наклав подібне правило, тому що в моїй команді були люди, які залишали термінали відкритими тижнів поспіль. Хоча я погоджуюся, що 1800 р. Дещо низький, він мусить бути там чомусь. Люди, як правило, помічають відхилення від звичних ... ваші сеанси будуть виділятися, як біль.
Rui F Ribeiro

коли це лише для читання, введіть:exec env TMOUT=0 bash
нічна зміна

Відповіді:


5

Ви можете видавати команди Perl з командного рядка ...

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

або ви можете зробити те ж саме в оболонці (a sh/ bashexample):

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

Або ви можете використовувати watch:

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


що таке printf '\33[0n'? я знаю, що таке командний рядок printf. але що друкується?
Тревор Бойд Сміт

1
\33це скорочене слово ключа, <esc>[0nце не відомий код аварійного відхилення ANSI, я думаю, це був друкарський помилок і повинен був би <esc>[0mскидати колір термінала для додатків / терміналів / tty, які підтримують ANSI-коди виходу.
Драв Слоун

12

Додати це до початку вашого .bash_profile?

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

Остерігайтеся гніву сисадмінів, якщо ви залишите тривалість сеансів у газільйон в результаті перемоги в їхніх рішеннях про час очікування.


Це справді ЗЛИВО!
Ахі Туна

1
Аргумент -i знищує середовище. Ви можете бути більш конкретними і видалити лише одну змінну, як-от так: env -u TMOUT bash --init-file ~ / .bash_profile
Дейв Річардсон

4

Ось справа в тому, що
коли змінна сеансу "Тільки для читання", ви повинні замінити поточний процес оболонки командою на "exec".
Отже, відповідь на ваше запитання:

$> 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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.