rm falhando dentro do script do cron

4

Eu tenho um cron job chamando um script bash que roda bem, exceto por uma linha dentro dele que é suposto remover todas as multas em um diretório. O resultado dessa linha é sempre "nenhum arquivo ou diretório", mesmo que eu tenha verificado (muitas vezes) que há arquivos nesse diretório. A linha em questão é tão simples:

rm /dir1/dir2/dir3/*

O script funciona bem quando executado manualmente no terminal, por isso deve ser algo sobre como o cron é executado. Eu tentei dar 'dir3' e todos os arquivos dentro dela toda permissão possível, então não deveria ser um problema de permissão. (O diretório e os arquivos também são de propriedade do usuário). Eu tentei especificar 'SHELL = / bin / bash' dentro de 'crontab'. Não há nenhum bit fixo e não há alias no comando rm.

Curiosamente, mudar o comando 'rm' para 'ls' dá o mesmo resultado negativo (a menos que você remova o '*' final, e então isso funciona).

O que estou perdendo aqui?

    
por Nicholas 16.03.2010 / 12:42

4 respostas

3

Acabou sendo meu mal depois de tudo. O que eu realmente tinha no roteiro era:

rm "/dir1/dir2/dir3/*"

Eu não sabia que as citações estariam bloqueando a expansão de curinga, então nunca as incluí na pergunta. Remover as citações resolveu o problema, como tenho certeza de que teria sido apontado para mim se as tivesse incluído. Embora eu não tenha 100% de certeza de como se deve manipular espaços no caminho sem o pensamento das citações.

    
por 18.03.2010 / 05:39
0

Tente colocar o seguinte em um script e chamá-lo de seu trabalho cron.

#!/bin/bash
rm -rf /full/path/to/dir/*

A tarefa cron provavelmente está falhando quando você usa o rm sem a opção -f (força). rm perguntará toda vez se você tiver certeza que quer deletar um arquivo.

A opção -r (recursiva) adicionada garantirá que todos os diretórios sob / full / path / to / dir / também sejam excluídos.

A man page do rm pode ser encontrada aqui .

    
por 16.03.2010 / 12:46
0

Você não disse em qual sistema operacional estava, mas o SELinux poderia estar interferindo?

    
por 17.03.2010 / 20:48
0

O que você recebe em você usa rm -v /full/path/to/directory/* e para que isso é expandido? Talvez existam muitos argumentos - se for assim, use algo como find /full/path/to/directory -delete; mkdir -p /full/path/to/directory

    
por 17.03.2010 / 22:09

Tags