私はdryscrapeをpythonスクリプトで使用しています。 pythonスクリプトは、cronによって実行されるbashスクリプトで呼び出されます。気づかないかもしれない人のために、dryscrapeはヘッドレスブラウザです(バックグラウンドでQtWebkitを使用するので、xsessionが必要です)。ここでCronジョブは、コンソールから完全にうまく動作するbashスクリプト(xsessionが必要なシェルのpythonスクリプト)を実行できません。
それは、私は、コマンドラインからPythonスクリプトを実行すると、私はコマンドラインからbashスクリプトを実行すると、それは
- を抱えている問題についての主なポイントですあまりにも動作します
私は、これは私のコマンドプロンプトとcronジョブが実行されている間の異なる環境とは何かを持っていることを考え出したので、私は次のように私の.profileを調達するために私のbashスクリプトを修正:
#/bin/bash
. /full/path/to/my/home/directory/.profile
python script_to_run.py
これは私のcronジョブのcrontabエントリは次のようになります。ちなみに
0,55 14-22 * * 1-5 /path/to/script.sh >> $(date "+/path/to/logs/\%Y\%m\%d.mydownload.log")
、私は仕事が実行されて(私はでは/ var/log/syslogのエントリを参照してくださいすることができていることを知っていますスクリプトは、ログファイルへの書き込み - 私は以下のエラーメッセージを取得する場所である):
Xサーバに接続できませんでした:
すべての場合において、私は、次のエラーメッセージが得ました。私は( - それは、コマンドラインで実行されるため、明らかに)私のマシン上での前提条件を、インストールされているセッション
を作成する前にdryscrape.start_xvfb() を呼び出してみてください。現時点では、アイディアが足りなくなっています。
スクリプトがコンソールでうまく動作し、cronで実行すると何が失敗するのでしょうか?
[[関連する詳細]]
- OS:Linuxの16.0.4 LTS
- のbash:バージョン4.3.46(1)
- のcronユーザー:自分自身(のすなわち同じユーザコマンドプロンプト)
- dryscrape:バージョン1.0.1
cronjobは 'DISPLAY'変数を設定していますか(または' .profile'でこれを行いますか)? –
いいえ、私はそうは思わない。詳しく教えてください...それは私が似たようなプロジェクトで以前に持っていた問題と同じように聞こえる。コマンドを実行する前に、crontabエントリに 'export DISPLAY =:0'を追加する必要がありますか? –
Xウィンドウセッションに含まれていない端末から実行できますか? (ctrl + alt + 1、ctrl + alt + 6またはctrl + alt + 7を押してxwindowsに戻ります)。ドライスクレイプにはxsessionが必要かもしれません)。 – ymmyk