クローンジョブをどのユーザーとして作成して実行する必要がありますか? Apache?根?私?

クローンジョブをどのユーザーとして作成して実行する必要がありますか? Apache?根?私?

新しいWebサーバーを設定していますが、cronが期待どおりに機能するようにすることはできません。私はクローンジョブを作成し、.tmp/crontab.txtそれを/var/spool/cronユーザー「Apache」の下に移動するスクリプトを使用しています。私が知っている限り、これらのApacheエントリは実行されません。

/var/spool/cron:3つのユーザーファイルがあります:

  • ルート0バイト

  • Apache 344バイト(良好に見えるが性能が悪い)

  • JLee 3514バイト(ここではすべての手動入力が行われます)

スケジュールされた手動ジョブが正常に実行されています。しかし、手動操作はApacheの作業である「サブクローン」を生成します。私は何が間違っていましたか?

私はこのサーバーの管理者で唯一のユーザーなので、すべてのcronジョブを1人のユーザーとして作成したいと思います。

答え1

新しいファイルをコピーするだけで、cronデーモンはそのファイルを読み込みません。新しいcrontabファイルをインストールするには、crontabコマンドを使用する必要があります。また、cronデーモンにファイルを読み込むようにシグナルを送信します。

crontabのマニュアルページから:

...and though these are files in /var, they are not  intended  to  be
   edited directly.

答え2

のようにキスの答え/var/spool/cron、ファイルは表示されないため、ファイルを直接挿入しないでくださいcrond

次のコマンドを使用して、独自のユーザーcrontabファイルインスタンスとシグナルの変更を維持する必要があります。crontabcrond

echo '* * * * * date >>/tmp/output' | crontab

複数のアイテムを作成できる場合は、各アイテムを独自のファイルに書き込んでから、cat結果を1つだけcrontab

mkdir .crondir
...
echo '* * * * * echo job1 >> /tmp/output.1' > .crondir/job1
echo '* * * * * echo job2 >> /tmp/output.2' > .crondir/job2
echo '* * * * * echo job3 >> /tmp/output.3' > .crondir/job3
cat .crondir/job* | crontab

明らかに、コマンドを実行するユーザーには、そのcrontabコマンドを使用する権限が必要です。アプリケーションの権限スキームを設定する方法によっては、独自のユーザーアカウントになることがあります。それ以外の場合は、Webサーバーのユーザー(apache)または必要がありますroot

関連情報