Система блокировки после не спящий приостанавливает (включая систему принудительных завершений работы после обратного отсчета)?

  • С Солярисом 10, Вы могли бы судить Беспризорника, который имеет порт Solaris здесь.

  • С Солярисом 11 и более новый, существует собственное и более эффективное БОЛОТО (Уведомление о Событии файла).

  • Если по некоторым причинам, природа опроса Беспризорника не удовлетворяет Вашим потребностям, и Вы хотите остаться на Солярисе 10, существует по крайней мере несколько альтернативных путей, которые могли бы быть исследованы:

    • включение BSM контролирует и отслеживает событие ФК (файл создают).
    • использование Dtrace для реакции, когда файл создается на каталоге для контроля.

    В последнем случае Вы могли бы даже отодвинуть конечные файлы от каталога в самом dtrace сценарии.

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

Этот ответ строит на ответе, предложенном от @GNP. Разница в том, что для снижения риска блокировки блокировки виртуального консоли / переключения терминала, воздействующего обычным PM-Supend ETC, взломает этот такковик с консолями.

Подобное ответ @gnp нам нужны два файла

/etc/pm/sleep.d/20_lock_with_countdown (с разрешением файла + X)

#!/bin/sh

case "$1" in
    hibernate|suspend)

       # generate a kernel/console keymap that has no Console_1 .... Console7
       # and no Incr_Console and no Decr_Console keymappings
       dumpkeys -f |\
       tee /tmp/oldkeymap |\
       sed 's/Console_[0-9]*/VoidSymbol/g' |\
       sed 's/Incr_Console/VoidSymbol/g' |\
       sed 's/Decr_Console/VoidSymbol/g' > /tmp/keymap.with.chvtkeys.disabled

       #set the new "castrated" keymap
       loadkeys /tmp/keymap.with.chvtkeys.disabled
       ;;
    thaw|resume)
       USER=<username> /usr/bin/vlock -ans &
       echo $! > /var/run/vlock.pid
       /opt/bin/timeout_vlock.sh &
       ;;
    *) exit $NA
       ;;
esac

, а затем скрипт для разблокировки обратного отката /opt/bin/timeout_vlock.sh :

#!/bin/bash

TIMEOUT=<timeout>

while kill -0 $(< /var/run/vlock.pid); do
    [ $TIMEOUT -le 0 ] && break
    sleep 1
    let TIMEOUT--
done

rm /var/run/vlock.pid
# restore keymap with previous "chvt enabled" keys enabled
loadkeys /tmp/oldkeymap
[ $TIMEOUT -le 0 ] && shutdown -h now

Как и в другом ответе, поле и <имя пользователя> должно быть отрегулировано в скриптах Отказ

Последнее, но не менее важное, можно переключить последнюю строку /opt/bin/timeout_vlock.sh

< [ $TIMEOUT -le 0 ] && shutdown -h now
----
> [ $TIMEOUT -le 0 ] &&  echo u > /proc/sysrq-trigger `
> [ $TIMEOUT -le 0 ] &&  echo o > /proc/sysrq-trigger

`

Чтобы избежать другого короткого взаимодействия окна злонамеренности, как не всегда это Shutdown -H сейчас самый быстрый способ Ваш компьютер

0
27.01.2020, 21:31

Этот скрипт sleep.d должен работать (замените <твой пользователь> на пользователя, для которого у вас есть пароль. Я запустил его с root в первый раз и не смог вернуться):

#!/bin/sh

case "$1" in
    hibernate|suspend)
       ;;
    thaw|resume)
       USER=<youruser> /usr/bin/vlock -ans &
       echo $! > /var/run/vlock.pid
       /opt/bin/timeout_vlock.sh &
       ;;
    *) exit $NA
       ;;
esac

Содержимое /opt/bin/timeout_vlock.sh:

#!/bin/bash

TIMEOUT=10

while kill -0 $(< /var/run/vlock.pid); do
    [ $TIMEOUT -le 0 ] && break
    sleep 1
    let TIMEOUT--
done

rm /var/run/vlock.pid
[ $TIMEOUT -le 0 ] && shutdown -h now

Настройте TIMEOUT на нужное значение и убедитесь, что вы дали ему разрешение на выполнение: `chmod +x /opt/bin/timeout_vlock.sh'.

Скрипт sleep.d использует vlock для блокировки всех ttys (даже с X), отключения sysrq и запроса пароля пользователя для разблокировки. Он сохраняет pid vlock для последующего использования.

Скрипт timeout_vlock.sh ждет завершения блокировки (что происходит при вводе пароля). При достижении TIMEOUT система отключается.

1
27.01.2020, 21:31

Теги

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