0

まず、私は:

 sudo crontab -e -u adrian

次に、次のように追加します。

 * * * * * cd /home/adrian/app/; perl -I /home/adrian/app/lib/ script/db/log_to_db.pl

これにより、スクリプトが毎分実行されるようになります。このスクリプトは、データベースを新しいデータで変更します。そのため、毎分データベースをチェックしています。データなし。「最終更新」時間列も変更されません。ログをチェックします。毎分、次のログが表示されます。

 Jul  9 13:32:01 dev1 CROND[28658]: (adrian) CMD (cd /home/adrian/app/; perl -I   /home/adrian/app/lib/ script/db/log_to_db.pl)

成功したログのように見えます。ただし、データベースは変更されないため、スクリプトは実行されません。さらに、コマンドラインで手動で行を実行すると、次のようになります。

  cd /home/adrian/app/; perl -I /home/adrian/app/lib/ script/db/log_to_db.pl

データベースが変更され、スクリプトは問題なく実行されます。ここで何が間違っていますか?

4

1 に答える 1

2

コマンドはコマンド ラインから正常に実行されるため、環境変数が欠落していることが問題である可能性が高くなります。cron ジョブから直接 perl を実行する代わりに、環境をセットアップしてから perl を実行するラッパー スクリプトを実行します。次のように動作するはずです (bash でログインすると仮定します。必要に応じて調整してください)。

#!/bin/bash

source /home/adrian/.bash_profile
cd /home/adrian/app/
perl -I /home/adrian/app/lib/ script/db/log_to_db.pl
于 2013-07-09T04:50:39.090 に答える