Crontab - Executar no diretório


170

Gostaria de definir um trabalho para ser executado diariamente no root crontab. Mas gostaria de executá-lo a partir de um diretório específico para encontrar todos os arquivos necessários, pois o aplicativo possui vários caminhos relativos.

De qualquer forma, posso dizer ao crontab para executar em um diretório específico?

Respostas:


318

Todos os trabalhos são executados por um shell, portanto, inicie esse trecho de shell por um comando para alterar o diretório.

cd /path/to/directory && ./bin/myapp

Em relação ao uso de em &&vez de ;: normalmente não faz diferença, mas se o cdcomando falhar (por exemplo, porque o diretório não existe) com &&o aplicativo não for executado, enquanto com ;ele é executado (mas não no diretório pretendido )


Em vez de adicionar uma resposta quase duplicada, deixe-me acrescentar que você pode escolher qual shell (se precisar do bash em vez de sh, por exemplo) configurando SHELLno seu crontab.
Edd Steel

12
+1. a solução de qualquer outra pergunta relacionada é reescrever o script com caminhos absolutos. este é exatamente o que eu precisava
Conrad.Dean

2
Por curiosidade, você poderia usar um ponto-e-vírgula em ;vez do duplo e comercial &&ou isso não funcionaria? E porque?
21716 Joshua Pinter

32
@ JoshPinter Normalmente, isso não faz diferença. Mas se o cdcomando falhar (por exemplo, porque o diretório não existe), com &&, o aplicativo não será executado. Com ;, é executado (mas não no diretório pretendido).
Gilles 'SO- stop be evil'

1
Vou fazer isso para todas as tarefas agendadas de meus apps, você me salvou de mudar meus arquivos de origem, muito obrigado
Contador م
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.