速度と利便性のために数分間席を空にしたときにシステムをシャットダウンするのではなく、システムをシャットダウンしますpm-suspend
。システムが「中断解除」/再開されたとき(Xおよび他のすべての端末で)(画面)ロックを設定し、しばらくログインが発生しない場合は強制終了を開始する必要があります。
いくつかの方法が私に指摘されました。この質問で求める具体的な側面は次のとおりです。
- すべての仮想端末(tty1-tty6)にアクセスできないはずです。
- Xにはアクセスできないはずです。
- また、回復/覚醒後しばらくして再度ログインしたいと思います。それ以外の場合は、システムを「自己破壊」する必要があります。
1つの重要な理由/背景は、ロック解除されたLUKSパーティションが公開されるリスクを制限したいことです。ディスクは起動時に保護されますが、システムを一時停止状態にしても保護されません。
ベストアンサー1
このsleep.d
スクリプトは機能する必要があります(<youruser>
パスワードを持つユーザーに置き換えてください。最初は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を使用してすべてのtty(Xがある場合も含む)をロックし、sysrqを無効にしてロック解除するユーザーパスワードを求めるメッセージを表示します。後で使用するためにvlockのpidを保存します。
vlockが完了するのを待ちますtimeout_vlock.sh
(パスワードを入力すると発生します)。タイムアウトに達すると、システムはシャットダウンします。