Por que este script da Shell falha como tarefa cron [fechada]?

0

Eu tenho o seguinte em um script shell, quando eu executo este script ele funciona, mas quando eu coloco isso como uma tarefa cron não funciona (nada acontece!). Por quê?

script

#!/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

entrada do crontab

22 14 19 10 0 /home/nalangi/script123.sh

UPDATE

A questão é que as permissões não foram definidas corretamente no script.

    
por Dumidu Handakumbura 19.10.2014 / 12:41

2 respostas

3

Existem pelo menos dois erros no seu script cron: Primeiro, você deve fazer um set -e no início para que qualquer erro termine o script imediatamente. Além disso, como você está usando nomes de caminhos relativos, você deve fazer um cd no diretório de trabalho desejado:

cd /home/nalangi

Nota. A página man cron (8) diz:

When executing commands, any output is mailed to the owner of the crontab (or to the user named in the MAILTO environment variable in the crontab, if such exists).

Portanto, se houver um erro, você deverá receber um e-mail mostrando a mensagem de erro.

    
por 19.10.2014 / 12:59
0

Eu teria implementado mais assim:

#!/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"])
    
por 19.10.2014 / 13:42