Cronjob executa um script que chama outro script

1

meu cronjob tem esta aparência:

0 3 * * 0-6 somedir/promotionscript

Mas o promotionscript está realmente chamando outro arquivo "config" localizado na pasta pai do somedir.

#promotionscript
#!/bin/csh
source ../config

Mas eu tenho config: Nenhum arquivo ou diretório. Então eu suponho que o cronjob não está rodando no somedir, então ele não sabe que algum dia uma vez começou a rodar o promotionscript. Como fazer o cronjob localizar a configuração na pasta pai.

Observe que uma solução possível é que posso adicionar o caminho completo à configuração:

source fullpath/config

Mas existe uma maneira de o cronjob reconhecer o caminho completo diretamente?

    
por cdnszip 08.06.2016 / 12:29

3 respostas

1

É verdade usando o cd somedir, mas em vez de adicioná-lo ao promotionscript, ele deve ser adicionado ao cronjob para evitar o código, como:

0 3 * * 0-6 cd somedir;promotionscript

E .. o operador funcionará como esperado no script de promoções.

    
por 09.10.2016 / 04:34
2

Obtenha o dirname do nome do shell ou script de shell ( $0 ). Então faça:

source 'dirname $0'/../config
    
por 08.06.2016 / 12:40
1

O Cron executa comandos no seu diretório pessoal. Você pode adicionar cd somedir no seu script de promoções.

    
por 08.06.2016 / 13:34