cronでコマンドが実行されない(systemctl停止)

cronでコマンドが実行されない(systemctl停止)

私はこのcronjobを設定しました。

* * * * * /usr/bin/systemctl suspend

しかし、うまくいきません。しかし、シェルで実行でき、動作します。私は何がうまくいかないのか理解していません。

編集する エラー出力を/tmp/error次にリダイレクトします。

Failed to issue method call: Access denied
Failed to issue method call: Access denied

私の質問は:cronjobsが特別なユーザーとして実行されます(cron例:私のユーザーはコマンドを実行できますが、それcron自体は実行できません)。

追加情報:

  • 以下は、私のスクリプトで発生した問題を示す最小限の例です(ここで提供されている個々のコマンドよりも意味があります)。

  • systemctlそれの一部ですsystemd。私は、再起動、終了、停止がrootではなくユーザーと作業していると思いますsystemd。とにかく私のシステムで動作します。

  • 最後に、私はArch Linuxを使用しています、、、と/binはすべてへのシンボリックリンクです。/usr/sbin/sbin/usr/bin

ベストアンサー1

回答することはできませんが、正しい方向を知ることはできるようです。 Arch Wikiでこれを見つけました。ページsystemd

ポルキット電源管理に必要です。ローカルのsystemd-logindユーザーセッションにあり、アクティブな他のセッションがない場合は、次のコマンドを実行するためにroot権限は必要ありません。そうでない場合(たとえば、他のユーザーがttyにログインしているため)、systemdは自動的にrootパスワードを要求します。

[各種systemctl命令一覧]

systemctlが停止する

これは私に次の可能性を与えます。

  1. 他のユーザーがログインしています。たぶんtty経由でログインしているかもしれません。

  2. cronコマンドを使用して実行します/bin/sh基本的に、これはArchのシンボリックリンクです/bin/bash。これはcron、非対話型bashシェルを起動し、他のユーザーセッションが実行中であることを検出し、ユーザーとして実行しても実行する権限がないことを意味しますsystemctl

cronしたがって、すでにログインしているため実行できない問題がある場合は、systemctlこの問題を解決してプレイしてください。ポルキットところが経験がなくてできることはありません。

おすすめ記事