2009-04-03 14 views
5

これは私のcrontabファイルは、次のようになります。debianのcrontabを使ってPythonスクリプトを実行しながらナッツを実行しよう!

* * * * * root /usr/bin/python /root/test.py >> /root/classwatch.log 2>&1 

これは以下のように私のPythonスクリプトが見えるものです:cronジョブは、ログファイルを作成します

#!/usr/bin/python 
print "hello" 

。しかしそれは空です。私はまた、Pythonファイルが実行されていないことをかなり確信しています。

ありがとうございました!私は運がなかった過去4時間の間それと遊んできた。

更新
+0

0 1 * * */home/me/myscript は有効なcrontabエントリとして表示されます – ojblass

+0

"whence root"、 "which root"、 "find/-name root 2"/dev /ヌル"? Debianはcrontabでユーザを指定することを許可していないので、rootが呼び出されるコマンドであると仮定する必要があります(私の答えを参照)。 – paxdiablo

+0

ユーザーセクションを削除する必要があります。むしろsu - 、ユーザ名を残してrootとしてcrontabを編集すると、そのユーザの下で実行されます。 –

答えて

1

...

* * * * * date >> /tmp/foo 

と内容の置き換えこのlink助けていますか?

作成するファイルを削除します。それは戻ってきますか? 私は各ユーザが自分のcrontabファイルを持っていると思っていたので、その行のユーザはsuspsectです。
DId誰かがあなたに冗談を言って、Pythonバイナリをno opで置き換えますか?

エコーが機能しないので、私はcronが正しく動作していないと思っています。エコーで出力ディレクトリを/ tmpに変更したことを確認しましたか?

ファイルのod(8進ダンプ)を実行して、制御文字またはタブをcronファイルに入れることができますか?

+0

1.スターのものはかなり標準です。すべての星は毎分実行することを意味します。 3.大きなスクリプトはPythonにあるためです。ここのpythonスクリプトの内容は、抽象概念のためのものです。 4.それを試してください。運がない。ログファイルがエコーから "hi"を表示しなくても、問題はcronにあります。 –

0

他の場所にスクリプトを置こうとしましたか(例:/ usr/local/bin /)?

+0

シンプルな "echo hi"もログファイルに記録されていないので、問題はcronコマンド自体にあると思います。 –

0

これは私のRHES 4 Linuxボックスで表示されているとおりに正しく動作します(注:crontabの 'root'ユーザー名を削除しました)。

私は、あなたのcronジョブをインストールしているか、またはあなたのシステムにcronの設定が間違っていると思われます。どのようにこれをインストールしていますか? crontab -eやその他の方法を使用していますか? rootの他のcronジョブを正常に実行できますか?

+0

ルートとして良いポイント... – ojblass

0

構文エラーのために以前に失敗したと宣言されたジョブが原因である可能性があります。 crontab全体を貼り付けることはできますか?あなたの線は私が見る限り良好に見えます。あなたは、通常のユーザのcrontab(すなわちのcrontab -e、crontabのcrontabfle、など) ルートエントリが構文的に間違っているを使用して だがあれば -

0

crontabエントリは、あなたが編集している場合は/ etc/crontabの正しいです。

0

は、だけではなく、標準エラー出力とスタウトの両方で、ログファイルに標準出力を送信してみてください:
は/ usr/binに/ pythonの/root/test.py>

4

/root/classwatch.logには2つの方法があります。ユーザーごとに、またはグローバルにcrontabを作成します。経由を実行するPythonスクリプトを取得するには

[email protected]:~$ crontab -l 
0 * * * * /home/aj/bin/update-foobar 

# m h dom mon dow user command 
17 * * * * root  cd/&& run-parts --report /etc/cron.hourly 

ユーザーの場合などごとに、あなたがいないcrontabファイル:ごとのようにグローバルのcrontab(は/ etc/crontabの)のためには、ユーザーを指定します#!あなたが経由でそれを実行することができ、あなたがそれを行うにしたくない場合

/root/test.py 

:表記は、あなただけのスクリプトを実行可能に(chmodの755 /root/test.py)を作り、そして、直接のようなものを、それを呼び出します手でPythonの通訳は、のように:

/usr/bin/python /root/test.py 

これは(は/ etc/crontabのか、などのcrontab -eを実行しているユーザーで、すなわちユーザ)が表示する権限を持っているとして、あなたが実行している方のユーザーを前提としていPythonスクリプト -/rootは、通常のユーザーがアクセスできない場合があります。

あなたのスクリプトが追加することによって、まったく実行されているかどうかの良いアイデアを得ることができます。

import time 
time.sleep(20) # pause for 20 seconds 

をしてから、実際にPythonのかどうかを確認するために、「トップ」や「PSのAUX」または「pstreeコマンド」にチェックをランニング。

1
chmod 755 /root/test.py 

、その後

* * * * * /root/test.py >> /root/classwatch.log 2>&1 

動作するはずです。

関連する問題