私は、RedHat 6サーバー上のcronで30分ごとに実行するためのシェルスクリプトを使用していました。シェルスクリプトは、基本的にPythonスクリプトを実行するコマンドです。scl enable python27 bash
サーバー上のネイティブバージョンのPythonは2.6.6ですが、この特定のスクリプトで必要なPythonバージョンはPython 2.7+です。私のpython 2.7を実行することができます。この時点で
$ python -V
Python 2.6.6
$ scl enable python27 bash
$ python -V
Python 2.7.3
:私は簡単に「SCL」コマンドを(この例では、バージョンの変更を表示するコマンド-Vのpythonを含んで)使用して、コマンドラインでこれを実行することができています.3コマンドラインのスクリプトは問題ありません。
ここでは絡み合いがあります。
scl enable python27 bash
コマンドを発行すると、新しいbashシェルセッションが開始されます。新しいbashシェルセッションが開始され、対話的なコマンドライン作業が可能になります。しかし、シェルスクリプト内でこれを実行すると、bashコマンドを実行するとすぐに、新しいセッションのためにスクリプトが終了します。ここで
が失敗しているシェルスクリプトです:
#!/bin/bash
cd /var/www/python/scripts/
scl enable python27 bash
python runAllUpserts.py >/dev/null 2>&1
「bashは」スクリプトの外に、新鮮なbashシェルにそれをポップので、それは単に、すぐにそれが4行目に当たると停止します。だから私はそれが実行するために必要な実際のpythonコマンドを見ることはありません。
さらに、30分ごとに実行すると、毎回新しいbashが追加されますが、これもまた別の問題です。
いくつかの理由により、サーバー上のネイティブのPythonバージョンを2.7.3に更新するのは嫌です。 Redhat yum reposはPython 2.7.3をまだ持っていません。手動インストールはyumアップデートシステムの外にあります。私が理解していることから、yum自体はPython 2.6.xで動作します。
scl enable python27 - << \EOF
cd /var/www/python/scripts/
python runAllUpserts.py >/dev/null 2>&1
EOF
もう一つの方法は、実行することです:私はIMO、SCL環境で1つのヒアドキュメントですべてをやっ
にdevtoolsetsでもそれを使用します –