3

Freebsd で cron からシェル スクリプトを実行しようとしています。

まったく機能しているかどうかをテストするためcrontabに、次の行を書きました

  * * * * * echo "Hello" > /home/myuser/logile  

そしてそれはうまくいきます。

しかし、スクリプトを実行しようとしても何も実行されず、エラーも発生しません。(私が実行しようとしたスクリプトでは、まったく同じ echo コマンドです)以下の出力は次のcrontab -lとおりです。

SHELL=/bin/sh  
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin  
HOME=/home/myuser  
MAILTO=myuser  
* * * * * /home/myuser/shellscript.sh > /home/myuser/logfile  

crontab明らかに実行されているにもかかわらず、スクリプトが実行されないのはなぜですか? すべてのファイルのアクセス許可は に設定されていrwxr-xr-xます。

4

6 に答える 6

3

コマンドラインの行末に改行/CRがあることを確認しましたか?crontab -eを使用してcronジョブを編集したときに、行の最後でEnterキーを押さなかっただけで、cronでphpスクリプトが実行されない理由を見つけるのに何時間も苦労しました:-)

于 2011-12-07T19:08:03.877 に答える
2
* * * * * /bin/sh /home/myuser/shellscript.sh

また

* * * * * /bin/bash /home/myuser/shellscript.sh

rootuserとしてMacosx 10.6で私のために働いた

于 2010-11-16T11:41:37.207 に答える
2

/var/log/cron手がかりを確認しましたか?

于 2010-03-19T19:19:19.737 に答える
1

cron は、電子メールを介して crontab ファイルの所有者にエラーを送信します (多くの場合、「root」なので、そのアカウントの電子メールを確認できます)。エラーを「crontabOnFreebsd」にメールで送信するには、次のように入力します。

MAILTO=crontabOnFreebsd

あなたのcrontab(上部近く)にあります。

詳細については、次のコマンドを発行します。

man 5 crontab
于 2010-03-18T03:30:23.073 に答える
1

やってみました

* * * * * /bin/sh /home/myuser/shellscript.sh > /home/myuser/logfile 
于 2010-01-12T16:30:32.813 に答える
0

エラーが発生している場合、ログファイルがそれをキャプチャしていない可能性があります。これを試してください:

* * * * * /home/myuser/shellscript.sh > /home/myuser/logfile 2> /home/myuser/errorfile

私がcronのことをしてからしばらく経ちました。しかし、いつも私を惹きつけていたもの:

  1. 環境変数が設定されていません: 通常、すべてのコマンドへのフル パス (「cat」などへのパスも含む) を設定する必要があることがわかりました [または、少なくともスクリプト自体に ENV 変数を設定する]。

  2. スクリプトなどを所有するユーザーが実際にスクリプトを実行しているユーザーであることを確認してください。対話型シェルからテストする場合、これは同じユーザーではない可能性があります。スクリプトが書き込む可能性のあるディレクトリ/ファイルについても同じことが言えます。

  3. また、root ユーザーの電子メールを確認してください。エラーが受信トレイに転送されていることがわかる場合があります。これは、これをさらにトラブルシューティングするのに役立つ場合があります。

于 2010-01-12T16:46:24.570 に答える