crontab e binários em / usr / local / bin

3

Estou trabalhando em Redhat e tenho poucos programas localizados na pasta /usr/local/bin de que gostaria de chamar de crontab para root user. Pensei que, colocando binários na pasta que seria suficiente para chamar o programa diretamente como no shell.

Essencialmente eu preciso especificar a pasta toda vez, então o crontab abaixo não funciona

 5 9  * * 1,2,3,4,5 my_bin some_args

mas eu mudo para

 5 9  * * 1,2,3,4,5 source ~/.bashrc; /usr/local/bin/my_bin some_args

Você sabe por quê?

A razão pela qual eu sourced bashrc foi adicionar algumas bibliotecas de ambiente, em particular LD_LIBRARY_PATH como meu binário não poderia encontrar algumas bibliotecas compartilhadas de /usr/local/lib .

    
por Abruzzo Forte e Gentile 17.07.2014 / 10:09

1 resposta

8

As tarefas do cron são executadas em um ambiente mínimo e, como são executadas diretamente por crond sem um shell (a menos que você force a criação), a configuração normal do shell nunca acontece. Existem duas maneiras padronizadas de contornar isso. Primeiro, você pode definir variáveis de ambiente em seu crontab (note que elas se aplicam a todos os trabalhos - pelo menos, aqueles listados após as definições):

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
LD_LIBRARY_PATH=/usr/local/lib

5 9  * * 1,2,3,4,5 my_bin some_args

Em segundo lugar, você pode editar o script para ser menos dependente de seu ambiente (por exemplo, definir o que será necessário) e, em seguida, usar o caminho completo na entrada do crontab:

5 9  * * 1,2,3,4,5 /usr/local/bin/my_bin some_args
    
por 19.07.2014 / 07:19