既存の回答や解決策を見逃した場合は申し訳ありません。検索結果 まだ実行可能なソリューションが出ていません。
質問:
私のコンピュータにはWindowsとLinuxが含まれており、Linuxはデフォルトのオペレーティングシステムです。 Windowsは時々使用され、シャットダウン時に再起動し、いくつかのアップデートをインストールしてから実際にシャットダウンする傾向があります。ただし、Linuxはデフォルトの起動先なので、この再起動とシャットダウンはLinuxで起動し、ログイン時にLinuxに無期限に残ります。ログインせずに終了してから5〜10分後にタイムアウトが発生するようにしたいと思います。
回避策/試み:
私が出会った/etc/systemd/login.confでタイムアウトを設定する
IdleAction=poweroff
IdleActionSec=10min
しかし、積極的にタイピングしているにもかかわらず、10分後にセッションが終了します。
私もそれに気づいた。この投稿、定期的にユーザーがログインしているかどうかを確認して終了する方法について説明します。残念ながら、私はbashスクリプトを書いたりシステムタイマーを設定したことがありません。だから、この答えについて少し理解できません。
私の設定:私はArch Linuxを実行しており、ログインはコンソールベースのttyログインです。
ヒントや提案をありがとうございます。
答え1
2つのシステムデバイスとスクリプトを作成します。
最初の単位:
/etc/systemd/system/are-users-logged.timer
[Unit]
Description=Start check for logged users
[Timer]
OnBootSec=15min
Unit=shutdown-ifno-logged-users
[Install]
WantedBy=timers.target
shutdown-ifno-logged-users.service
起動後15分に1回実行します。
2番目の単位:
/etc/systemd/system/shutdown-ifno-logged-users.service
[Unit]
Description=Shutdown if there are no logged users
[Service]
Type=oneshot
User=root
ExecStart=script_to_check_logged_users
ログインしたユーザーを確認するスクリプトを起動します。
スクリプトにログインしているユーザーがいない場合、出力は解析または閉じられますloginctl --no-pager list-users
。who -q
他の人がログインしてログアウトしてから再開するのを防ぎたい場合タイマーが動作する前にこのようにしてare-users-logged.timer
ブロックを試すことができます。しかし、ユーザーがrootでない場合は、パスワードの要求によって問題がある可能性があると思います。/etc/profile.d/somescript.sh
sudo systemctl stop are-users-logged.timer
/tmp からecho
from を使用して、/etc/profile.d/somescript.sh
誰かがログインしたことを示すファイルを生成し、script_to_check_logged_users
そのファイルが存在することを確認してからシャットダウンをスキップすることをお勧めします。
答え2
ログインせずに終了してから5〜10分後にタイムアウトが発生するようにしたいと思います。
おそらくgrubタイムアウト機能はあなたの要件を満たしているでしょう。
grub設定に停止コマンドを使用してカスタムメニュー項目を追加し、それをデフォルト値に設定します。 grub タイムアウトを希望の値に設定します。電源を入れたり再起動した後、grubはデフォルトの項目を選択し、タイムアウト後にユーザーアクティビティがないとコンピュータをシャットダウンします。
オペレーティングシステムを起動するには、メニュー項目を手動で選択して実行する必要があります。
アーチ用に追加/etc/grub.d/40_custom
menuentry "System shutdown" {
echo "System shutting down..."
halt
}
デフォルト選択した項目を変更するには、/etc/default/grub
値を編集して変更しますGRUB_DEFAULT
。
GRUB_DEFAULT='System shutdown'
それから
sudo grub-mkconfig -o /boot/grub/grub.cfg