С Солярисом 10, Вы могли бы судить Беспризорника, который имеет порт Solaris здесь.
С Солярисом 11 и более новый, существует собственное и более эффективное БОЛОТО (Уведомление о Событии файла).
Если по некоторым причинам, природа опроса Беспризорника не удовлетворяет Вашим потребностям, и Вы хотите остаться на Солярисе 10, существует по крайней мере несколько альтернативных путей, которые могли бы быть исследованы:
В последнем случае Вы могли бы даже отодвинуть конечные файлы от каталога в самом dtrace сценарии.
Этот ответ строит на ответе, предложенном от @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 сейчас
самый быстрый способ Ваш компьютер
Этот скрипт 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 система отключается.