シェルスクリプトには次のものがあります。このスクリプトを実行すると機能しますが、cronジョブで実行すると機能しません(何も起こりません!)。どうですか?
スクリプト
#!/bin/bash
file="/home/nalangi/backup.zip"
if [ -f "$file" ]
then
zip -9 -r backupTEMP.zip wso2am-1.7.1;
rm -r backup.zip;
mv backupTEMP.zip backup.zip;
else
zip -9 -r backup.zip wso2am-1.7.1;
fi
クローンタブ項目
22 14 19 10 0 /home/nalangi/script123.sh
修正する
問題は、スクリプトに対する権限が正しく設定されていないことがわかりました。
答え1
cronスクリプトには少なくとも2つのエラーがあります。まず、set -e
エラーが発生した場合は、スクリプトがすぐに終了するように最初から実行する必要があります。また、相対パス名を使用しているため、目的のcd
作業ディレクトリに対して次のことを行う必要があります。
cd /home/nalangi
メモ。cron(8) のマニュアルページは次のように言います:
コマンドが実行されると、すべての出力がcrontabの所有者(またはcrontabのMAILTO環境変数がある場合はそのユーザー)にメールで送信されます。
したがって、エラーが発生した場合は、エラーメッセージを含む電子メールが届きます。
答え2
私はこれを次のように実装します:
#!/usr/bin/python
import os, shutil, subprocess
filename = "backup.zip"
home = "/home/nalangi"
tempfile = "backupTEMP.zip"
if os.path.exists(os.path.join(home, filename)):
subprocess.call(["zip", "-9", "-r", tempfile, "wso2am-1.7.1"])
os.remove(os.path.join(home, filename)
shutil.move(os.path.join(home, tempfile), os.path.join(home, filename))
else:
subprocess.call(["zip", "-9", "-r", filename, "wso2am-1.7.1"])