2016-07-04 10 views
0

私は端末/コマンドラインからうまく動作するPythonファイルを持っています。 Pythonファイルは、pipを使用してインポートされたモジュールを使用します。私は午後1時15分で、平日を実行するようにように私のcrontabファイルを設定している:モジュールをインポートするPythonを実行するcrontabの実装方法

15 13 * * 1-5 python ~/Personal/Code/Python/HelloWorld.py

私の問題は二つあります。まず、pythonファイルの出力は、コマンドラインから正常に実行されたときと同じように端末画面に出力されるのではなく、/var/mail/に送られます。ファイルに追加するのではなく、出力を直接端末に出力させるにはどうすればよいですか?次に、/var/mail/ファイル内で、スクリプトの出力はImportErrorであり、インポートする名前のモジュールがないことを示しています。これは、コマンドラインからスクリプトを直接実行する場合には発生しません。その場合、スクリプトはエラーなく正常に動作します。どうすればこの問題を回避できますか?

答えて

1

意味はありませんが、あなたの問題は1つです。Cronを理解できません。

Cronはスケジューリングツールです。それはあなたのコンピュータに「おい、これを何度も世話するよ、大丈夫?自動化されたプロセスは、セットアップ後にと対話しません。システム管理者は、ログの移動やディスクのコピーなど、管理者が見たくないものを管理するためによく使用されます。 Cronジョブは、コンソールではなくログファイルにを出力する必要があります。 (とcron stdoutへの出力を受けないとき、それはシステムが指定したメールエージェントを経由して、あなたに出力し、メールに保存します。これは、あなたが発見したとして/var/mail/にデータを保存する必要。)

これは、あなたができることを意味しCronによって実行されたジョブから端末に出力されません(ttyデバイスを何も操作することなく、私はあなたが取るべきルートではないと言います)。私は午後1時15分に毎日自動化された仕事を繰り返し、その出力をあなたの端末にリダイレクトすることができる状況があるかどうかはわかりません。あなたの端末を閉じるとどうなりますか?仕事はどこに出力されますか?ロギングを実装する必要があります。 Pythonのloggingモジュールをチェックしてください。

ImportError:Cronはシェルで実行されません。環境変数または$PATHは使用しません。それはどういう意味ですか?あなたの仕事はpythonで始まります。どのpython/usr/bin/python/usr/local/bin/python/usr/local/bin/python3?どちらのバイナリが使用されているかはOSや設定によって異なりますが、 Pythonにはモジュールがありますが、デフォルトの Python実行可能ファイルはありません。この問題を回避するには、絶対パスを使用する必要があります。 python/usr/bin/pythonなどに置き換えてください。どのPythonを使用しているか調べるには、コマンドラインでwhich pythonを実行すると、出力が表示されます。

関連する問題