ログインしたユーザーがいない場合、コンピュータをどのようにシャットダウンしますか?

ログインしたユーザーがいない場合、コンピュータをどのようにシャットダウンしますか?

既存の回答や解決策を見逃した場合は申し訳ありません。検索結果 まだ実行可能なソリューションが出ていません。

質問:

私のコンピュータには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-userswho -q

他の人がログインしてログアウトしてから再開するのを防ぎたい場合タイマーが動作する前にこのようにしてare-users-logged.timerブロックを試すことができます。しかし、ユーザーがrootでない場合は、パスワードの要求によって問題がある可能性があると思います。/etc/profile.d/somescript.shsudo systemctl stop are-users-logged.timer

/tmp からechofrom を使用して、/etc/profile.d/somescript.sh誰かがログインしたことを示すファイルを生成し、script_to_check_logged_usersそのファイルが存在することを確認してからシャットダウンをスキップすることをお勧めします。

おすすめ記事