Por que os scripts são executados como usuário, mas não como cron?

1

Eu tenho um script que verifica se a porta 4000 está aberta e escutando, se ela retornar true, caso contrário, inicie um serviço que também produza um arquivo de log. O script é executado bem se eu o executar como usuário, mas se eu adicioná-lo como um cron, ele não será executado. Estou logado como root, o script é de propriedade de root, o script tem permissões executáveis e estou executando crontab -e como root.

#!/bin/bash
if lsof -Pi :4000 -sTCP:LISTEN -t >/dev/null ; then
    return 1
else
    seoserver -p 4000 start > /var/www/vhosts/domain.com/httpdocs/seoserver.log &
fi

E aqui está o meu cron

*/5     *       *       *       *       /usr/bin/seoStart
    
por codewizard 24.02.2015 / 19:23

1 resposta

1

O Cron não inicia com variáveis de ambiente comuns que seu usuário possui, incluindo $ PATH.

Você tem o caminho completo em seu cron, o que é bom, mas você precisa adicioná-lo ao seu script também.

which lsof

e

which seoserver

lhe dará o caminho completo. Modifique seu script para usar isso em vez de lsof e seoserver .

    
por 24.02.2015 / 19:27