次のように、atコマンドを使用してコンピュータのシャットダウンをスケジュールしようとしています。
echo "systemctl poweroff" | at -M now +1 minute
または次のようになります。
echo "sudo systemctl poweroff" | at -M now +1 minute
しかし、何も起こりませんでした。なぜ?
atd
実行したら、次のコマンドが正しく機能していることを確認するだけです。
echo "echo Hello 2>&1 > /home/<user_name>/at-test.txt" | at -M now +1 minute
予約済みの閉鎖を使用することが可能であることを知っていますshutdown -P TIME
。しかし、他の選択肢を指摘するのではなく、まず私の質問に答えてください。それでは、私が何を間違っているのでしょうか?
答え1
ポリシーツールキットは、ログインしたセッションのコンテキストshutdown
で実行されているルールに適用するのとは異なる操作で、非ログインセッション(別名のプログラム)のコンテキストで実行されるルールにルールを適用できます。poweroff
systemctl
at
shutdown
sudo
このプディングには卵が多すぎて、不必要に複雑さが追加されました。システムはすでに権限のないユーザーと、どのコンテキストでシャットダウンを正常にトリガーできるかを決定するルールを適用します。sudo
追加メカニズムの追加最も重要なことこれは単にアクセスルールセットの数を2倍にし、問題を診断するときに考慮する必要がある可能性のあるシナリオの数を増やします。
追加読書
- https://unix.stackexchange.com/a/465337/5132
- https://unix.stackexchange.com/a/196014/5132
- Lennart Petlinget al。 (2014).
systemd-logind.service
。システムのマニュアルページ。 freedesktop.org. - 終了・停止時に認証が必要(下記時間予定)
- Ubuntuで「終了」および「電源オフ」コマンドを無効にする
- https://askubuntu.com/questions/536591/