私はこの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が停止する
これは私に次の可能性を与えます。
他のユーザーがログインしています。たぶんtty経由でログインしているかもしれません。
cron
コマンドを使用して実行します/bin/sh
。基本的に、これはArchのシンボリックリンクです/bin/bash
。これはcron
、非対話型bashシェルを起動し、他のユーザーセッションが実行中であることを検出し、ユーザーとして実行しても実行する権限がないことを意味しますsystemctl
。
cron
したがって、すでにログインしているため実行できない問題がある場合は、systemctl
この問題を解決してプレイしてください。ポルキットところが経験がなくてできることはありません。