use o comando find no arquivo bash [closed]

3

Estou usando este script na minha máquina Linux para encontrar todos os arquivos que foram modificados ontem:

#!/bin/bash
find /home/*/domains/*/public_html/  -name "*.php" -mtime -1 | while read line; do
echo "$line"
done

O script funciona como esperado quando eu o executo manualmente, mas falha com o erro abaixo se eu o executar a partir de cron :

find: '/home/*/domains/*/public_html/': No such file or directory

distribuição: Centos 5

cron:

#DO NOT EDIT THIS FILE. Change through DirectAdmin
[email protected]
*/1 * * * * bash /home/admin/check_phpfile_changed.sh

aspas simples não funcionam

    
por Hadi 26.01.2016 / 13:22

1 resposta

0

O utilitário cron executa comandos em um ambiente diferente do seu ambiente shell e pode até estar usando um shell diferente do seu shell padrão. Para ver como é seu ambiente cron, você pode usar o comando env , por exemplo, adicione o seguinte crontab por um minuto:

* * * * * env > ~/cronenv

Após alguns minutos, inspecione o arquivo ~/cronenv para ver o ambiente cron (retirado de Como simular o ambiente o cron executa um script com? ). Você pode compará-lo ao seu ambiente shell para ajudar a depurar o erro relacionado ao cron. Você também pode executar o script usando o ambiente cron:

env - 'cat ~/cronenv' /bin/sh

Você também pode tentar modificar seu script para fins de depuração:

#!/bin/bash
ls -ld /home/*
ls -ld /home/*/domains/*
find /home/*/domains/*/public_html/  -name "*.php" -mtime -1 | while read line; do
    echo "$line"
done

Execute isso como um cronjob e veja se você obtém o mesmo erro usando um comando diferente (por exemplo, o comando ls ).

    
por 25.10.2017 / 15:04

Tags