私は毎日サーバー(Cent OS)上で実行したいPythonスクリプトを書いています。私は自分のPythonスクリプトからいくつかのbashコマンドを直接実行する必要があります。ターミナルからスクリプトを直接実行するとすべてうまく動作しますが、cronジョブがスクリプトを実行するときにbashコマンドは実行されませんが、スクリプトの残りの部分はジョブ(データベースなどに挿入)です。Pythonスクリプトはcronジョブでbashコマンドを実行しません
次のように私のcrontabに見える:
00 20 * * 1-5 /home/skanydok/script.sh
script.shは、例示的な方法のように見えます、私は、サーバーからファイルを移動、コピー、または削除するために意図されているいくつかの方法があります
#!/bin/bash
python /home/skanydok/serverBarcodeScanner.py
が含まれています次のようになります。
def copyBackup():
cmd = "cp -r SKANY_DOKUMENTOW_" + str(now)[:10] + '_' + str(random) + " ./backupy"
call(cmd.split(" "))
また、このコードを使用して、printメソッドのすべての出力を保存しますOGファイル:で、サーバー上でスクリプトを実行するときに、彼らが正常に動作が
class Logger(object):
def __init__(self):
self.terminal = sys.stdout
self.log = open("./backupy/log.txt", "a")
def write(self, message):
self.terminal.write(message)
self.log.write(message)
sys.stdout = Logger()
log.txtファイルは、RMなどのcp、mvは、のようなコマンドを実行することになっているすべてのメソッドが動作しない、作成されていません。
私は水の中に何かクルーの仕事がなければならないと思います、すべての助けが大いに評価されるでしょう。
'python'の絶対パスを使ってみましたか?例えば、 '/ usr/bin/python/home/skanydok ...' –
@ Farhan.Kが上記のように、 '#!/ bin/bash'の代わりに' python'の絶対パスを使用するか、 。 〜/ .bash_profile'。また、スクリプト内のパスを参照しているときは絶対パスを使うことを忘れないでください。あるいは、 'cd'と' pwd'チェックを使ってスクリプトが必要なパスで動作していることを確認してください。 –