Я могу установить тайм-аут удара только для виртуальных консолей (ctrl+alt + {f1-f6})

Я не уверен в Корице (GNOME3), но в XFCE у Вас может быть несколько панелей, которые помнят, где они должны появиться. Я ожидал бы, что Корица сможет сделать то же. Если не я предложил бы пробовать XFCE или использовать xfce4-panel на Коричной сессии (возможно как замена для ее собственной панели).

Единственный протест, о котором я знаю, состоит в том, что некоторые элементы панели (например, область уведомлений искажают systray) не могут появиться на нескольких панелях сразу. Это означает, что при разъединении одного монитора панели перемещаются в остающуюся, и необходимо удостовериться те, Вы хотите, находятся на вершине.

7
13.04.2017, 15:36
3 ответа

Вы могли проверить, работаете ли Вы в графическом терминале и только наборе TMOUT если Вы не. Простой способ сделать это tty команда:

   tty - print the file name of the terminal connected to standard input

Когда выполнено от эмулятора терминала GUI:

$ tty
/dev/pts/5

Когда выполнено от виртуальной консоли:

$ tty
/dev/tty2

Так, добавляя эти строки к Вашему ~/.profile должен уничтожить Вашу сессию удара после десяти минут:

tty | grep tty >/dev/null && TMOUT=600
8
27.01.2020, 20:17
  • 1
    , который Вы не хотите экспортировать TMOUT. Это влияло бы read встроенный из всего удара или ksh93 сценария, запущенного с Вашей сессии входа в систему. –  Stéphane Chazelas 24.05.2016, 19:25
  • 2
    @StéphaneChazelas да, не это, что хочет OP? Если они хотят, чтобы их сессия вышла после 10 минут, они также, по-видимому, хотят, чтобы их сценарии вышли также. Они будут уничтожены, когда сессия закончится в любом случае, в конце концов. –  terdon♦ 25.05.2016, 12:23
  • 3
    TMOUT на read не заставляет сценарии заканчиваться, это вызывает read перестать работать после тайм-аута, который мог сделать сбой сценариев каждым возможным способом. Это вряд ли вызовет проблемы, поскольку это было бы редко для read для зависания в течение 10 минут но все еще неправильно экспортировать TMOUT (также обратите внимание, что когда-то экспортировал, если сценарий делает TMOUT=1 это будет влиять на все сценарии, названные из того сценария вместо просто сценария самого). –  Stéphane Chazelas 25.05.2016, 12:50
  • 4
    @StéphaneChazelas OK. Просто установка это было бы в порядке и должно все еще сделать то, в чем OP нуждается хотя, правильно? –  terdon♦ 25.05.2016, 12:55
  • 5
    Да, хотя затем я, вероятно, выполнил бы в нем ~/.bashrc таким образом, это влияет на все интерактивные оболочки, не только вход в систему один (и принятие ~/.profile или ~/.bash_profile источники ~/.bashrc как одна потребность сделать для работы вокруг той ошибки удара). tty | grep -q 'tty[0-9]' постараться не рассматривать ttyUSB3 или ttyS1. –  Stéphane Chazelas 25.05.2016, 13:18

Это хороший случай для pam_env.so PAM модуль. Для входа в виртуальную консоль используется программа login , поэтому вы можете открыть /etc/pam.d/login и добавить строку, например следующую:

session  required  pam_env.so  readenv=1 envfile=/etc/vc-environment user_readenv=0

С сопутствующим новым файлом, / etc / vc-environment :

TMOUT=600

Два преимущества использования PAM для этого:

  • Это применимо к любому пользователю, который входит в виртуальную консоль (хотя это не мешает им изменить TMOUT позже).
  • Тайм-аут также может применяться к другим конкретным службам, например sudo .

Подробнее об этом модуле читайте здесь .

1
27.01.2020, 20:17

Мне никогда не нравилось решение TMOUT. Во-первых, потому что это работает только в том случае, если вы покидаете сеанс по подсказке; если вы оставите его внутри Vim или даже в запросе пароля sudo, время ожидания не истечет. А во-вторых, я не хочу, чтобы сессия была закрыта, я хочу, чтобы она была заблокирована, как это делают графические среды.

Экран GNU может блокироваться после периода бездействия, поэтому я сделал следующее. В самом начале моего ~/.bashrcя добавил это:

if [ "$TERM" = "linux" ] && tty | egrep -q '^/dev/tty[[:digit:]]+$'
then
    exec screen -c ~/.ttyscreenrc
fi

execважен, потому что он гарантирует, что screenзаменит Bash, и когда он завершится, сеанс TTY будет закрыт.

И в ~/.ttyscreenrcя поместил это:

startup_message off
idle 180 lockscreen

Чтобы пропустить экран приветствия и заблокировать экран через 3 минуты бездействия.

2
27.01.2020, 20:17

Теги

Похожие вопросы