Erros estranhos em um script BASH

1

Estou tentando corrigir esse erro e continuo vendo, e não sei por que estou vendo. O script gera uma lista de arquivos com mais de 7 dias e, depois, tars / gzips em um diretório de backup. Por fim, ele remove os arquivos depois que o backup é concluído com êxito. Eu estou encontrando um erro estranho. O script é simples, a maioria é para evitar que o script seja executado duas vezes ou seja interrompido ou manipula o log. O código importante está entre os asteriscos.

#!/bin/bash
#
#
#       Title:          fwdCleanup.sh
#       Author:         Matthew Sarro
#       Date:           03/07/2012
#       Desc:           Backs up all files down the tree which are
#                       older than 7 days
#
#
#
#
DATE='date +%F-%H%M'

LOGFILE=/root/testing/fwdcleanuplogs/$DATE.log
exec 3<>$LOGFILE
exec >&3 2>&3

#define the name of the lockfile
LOCKFILE='/root/testing/fwdcleanup.pid'

# check for existing lockfile
if [ -e "$LOCKFILE" ]; then
# lockfile exists
        #check if file is readable
   if [ ! -r "$LOCKFILE" ]; then
      echo error: lockfile is not readable
      exit 1
   fi

#define PID as the process number in lockfile
   PID='cat "$LOCKFILE"'
# check if process is signal-able and redirect stderr to /dev/null
   kill -0 "$PID" 2>/dev/null
#if process was signal-able echo an error
   if [ $? == 0 ]; then
      echo error: existing instance of this task is already running
      exit 1
   fi

# process that created lockfile is no longer running - delete lockfile
   rm -f "$LOCKFILE"
#check if lockfile deleted properly
   if [ $? != 0 ]; then
      echo error: failed to delete lockfile
      exit 1
   fi
fi

# create lockfile containing current process ID
echo $$ >"$LOCKFILE"
if [ $? != 0 ]; then
   echo error: failed to create lockfile
   exit 1
fi

#************************
#EDIT IN HERE
#find all files older than 7 days and create a file list
find /root/testing/{MSP,CEMP} -mtime +7 -type f > /root/testing/fwdcleanuplogs/$DATE.list

#add all files from the file list into a tar.gz file
tar -czf /root/testing/backups/$DATE.tar.gz --files-from /root/testing/fwdcleanuplogs/$DATE.list

#delete all files from the file list off disk
rm -f 'cat /root/testing/fwdcleanuplogs/$DATE.list'
*************************

# delete lockfile
rm -f "$LOCKFILE"
if [ $? != 0 ]; then
   echo error: failed to delete lockfile
   exit 1
fi

exec 3>&-
exit 0

Quando executo o script, o seguinte aparece no log gerado:

./fwdCleanup.sh: line 67: backups: command not found

Eu não tenho ideia do porque isso está aparecendo - não consigo entender. O código ainda é executado de forma brilhante, mas o erro está me deixando louco. Eu não consigo ver nada na linha 67 que até mesmo diga remotamente ao SO que os backups são um comando.

Qualquer conselho seria realmente apreciado.

Editar: Antes que alguém perceba: isso está sendo feito em uma VM de teste, daí o uso da conta root:)

    
por Matthew 07.03.2012 / 21:25

2 respostas

4

Sua linha 67 é ************************* , o que deve ter realmente um # no começo. O primeiro * está sendo expandido pelo seu shell e está pegando o arquivo chamado backups no diretório atual.

    
por 07.03.2012 / 21:48
2

Use a opção -x para bash para obter um rastreamento do que o script está fazendo. Isso lhe dará uma boa ideia de onde as coisas estão indo mal.

    
por 07.03.2012 / 21:38