
新しい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
ファイルインスタンスとシグナルの変更を維持する必要があります。crontab
crond
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
。