1

crontab によって自動的に実行されるファイルを取得しようとしています。次のような内容です。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

*/5 * * * * php /path/to/script

prod.cron呼び出されたこのファイルを/etc/cron.dフォルダーに入れましたが、単独で実行するようには見えません。コマンドラインからスクリプトを直接実行すると、正常に動作することが示されますが、cron.d 内のファイルが自動検出されるかどうか、またはそれらを初期化するために何か他のことを行う必要があるかどうかはわかりませんか?

4

2 に答える 2

0

cron ファイルには 2 つのフレーバーがあります。

以下にインストールされるファイル/etc/cron.dは、システムcron ファイルです。各行の 6 番目のフィールドは、コマンドの実行に使用されるユーザー アカウントである必要があります。例については、以下の他のファイルを参照してください/etc/cron.d

非システム cron ファイルには、ジョブの実行時に指定する通常の 5 つのフィールドと、実行するコマンドが続くだけです。これらはコマンドによってインストールされ、crontabコマンドを実行するユーザー アカウントによって実行されます。これはおそらくあなたが使いたいものです。

root関連する行の 6 番目のフィールドとして追加するかcrontab prod.cron、root として (またはコマンドを実行するアカウントとして) 実行します。

そしてもちろん、phpコマンドが指定された.xml にあることを確認して$PATHください。

于 2012-12-12T19:58:54.023 に答える
0

ディレクトリ/etc/cron.dはパッケージで使用するためのものであり、crontab はユーザーの crontab にインストールする必要があることに注意してください。そうは言っても、次のCron の問題を確認してください。

  1. スクリプトに実行権限がありません。chmod a+x を使用して権限を付与します。
  2. php、perl などのスクリプト言語の場合、インタープリターまたはプログラムへのパスが正しくありません。cron で実行するコマンドを定義する際は、常にインタープリターへの実際のパスを指定してください。プログラムの場所を調べるには、whereis コマンドを使用します。たとえば、php の場合、ここで php. perl、whereis php などの場合。
  3. スクリプトの実行に必要な環境変数が利用できません。cron は、ユーザーの同じ環境を使用しません。コマンドの実行中に独自の環境を使用します。したがって、.login または .profile で定義された変数は、彼には見えません。最も一般的な問題は、類似していない PATH 変数に関連しています。
于 2012-12-12T19:41:56.287 に答える