find gera saída apenas quando executado como usuário regular, não como root


0

Estou tendo alguns problemas com um comando que parece funcionar apenas quando executado como um usuário comum:

find /mnt/data* -mmin +119 -name '*.adsr' -type f -delete 2>&1 | tee -a /log/rsynclog.txt

Se eu usar o comando como um usuário comum, obtenho erros de permissão no log. Quando eu estiver root o comando não é anexado ao meu log. Este é um dos comandos que estão em execução no meu cron.hourly.

Isso significa que ele registrará somente se eu receber erros? Há algo que eu possa mudar para que uma exclusão bem-sucedida apareça no meu log também?


Tem certeza de que é para ser executado como raiz? Como um problema conhecido é o de falha de comandos ao ser executado pelo cron (como qualquer usuário), porque os caminhos e o restante do ambiente geralmente são diferentes. Você pode testar isso simplesmente executando-o como root (uid 0). Independentemente disso, você quis dizer alguma pasta sob mnt cujo nome começa com dados?
Hennes

Quais sistemas de arquivos são montados em / mnt / data?
grawity

Eu testei rodando o comando no terminal como root, ele não roda. Ele roda no entanto como usuário reg no terminal (Sistema de arquivos de dados é ext4)
Rickert

Interessante. Então provavelmente não é executado como root (comando 1), seguido por | tee agora é executado como usuário regular. Qual foi a minha outra ideia.
Hennes

Eu quis dizer tudo sob dados, o comando funcionou antes, mas eu recentemente adicionei o | comando tee porque preciso registrar tudo no meu cron de backup automático
Rickert

Respostas:


0

tee -a não faz nada a menos que eu execute como usuário regular, então isso me dá uma tonelada de permissão negada erros no meu log

Seu comando parece bem. Apenas não gera saída porque -delete suprime o padrão -print saída de find; e quando correr como root, não atinge nenhum permission denied.

Se você deseja registrar os arquivos sendo excluídos, use -print explicitamente:

find … -delete -print 2>&1 | tee -a …

Nota -delete -print é ligeiramente diferente do que -print -delete. O primeiro será impresso somente se a remoção for bem-sucedida; este último será impresso independentemente. Em um caso de malsucedido -delete você recebe uma mensagem para strerr que você registra também, então -delete -print deve ser bom para você.


Isso resolveu meu problema, obrigado!
Rickert
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.