終了・停止時に認証が必要(下記時間予定)

終了・停止時に認証が必要(下記時間予定)

以下を使ってラップトップを一時停止したいと思います。at:

echo "systemctl suspend" | at now + 5 minutes

at一時停止は発生せず、代わりに次のメールが見つかりました/var/spool/mail/me

Failed to set wall message, ignoring: Interactive authentication required.
Failed to suspend system via logind: Interactive authentication required.
Failed to start suspend.target: Interactive authentication required.
See system logs and 'systemctl status suspend.target' for details.

わかりました。logind実行時に認証が必要です。直接実行すると、認証を必要とせず、コンピュータが一時停止状態になるため、これは面白いです。atsystemctl suspendsystemctl suspendat

atを使用して、直接実行するコマンドと同じ非ルートユーザーが実行を使用するコマンドを実行していることを確認しましたecho "echo $(who) > who.txt" | at now

at起動後に実行したコマンド(bashのエイリアス)を介してコマンドを実行するため、疑わしい認証が必要です。停止は認証なしですぐに発生し、入れ子になったシェルが停止失敗の原因ではないことを示します。/bin/shsystemctl suspend/bin/shat

echo "reboot" | at now実行すると、同じ動作と非常によく似たメッセージが表示されますecho "shutdown now" | at now

私の質問は:コンピュータを一時停止、再起動、またはシャットダウンしようとしていることをどのように知り、logind認証なしでそのコマンドを実行できるかをどうやって知ることができますか?atlogindat


私はArch Linux 4.18.1、atバージョン3.1.19を使用しています。

ベストアンサー1

おそらく実行中のコマンドはat他の環境にあり、ttyデバイスやdbus設定などにアクセスできません。

Systemdには独自のatバージョンのコマンドがあります。これを使用して、他のシステムコマンドが実行されているように見える環境でコマンドを実行できます。したがって、同等のコマンドを使用してください。

systemd-run --user --on-active=5min /bin/systemctl suspend

5分の待ち時間を完全かつ正確に実装するには、オプションを追加する必要があります--timer-property=AccuracySec=1

おすすめ記事