Eu tenho um script que eu chamo a cada 10 minutos com um cronjob:
*/10 * * * * ~/mydirectory/myscript.sh
Agora, dentro de ~/mydirectory
, há outro script, digamos myotherscript.sh
, que eu gostaria de chamar de myscript.sh
. Ambos os scripts foram chmod
para serem executáveis e quando executo myscript.sh
da linha de comando dentro de ~/mydirectory
, tudo funciona bem. Eu executo da seguinte forma:
. myscript.sh
Mas não parece que o cronjob funciona. Quando eu removo a referência para o segundo script de dentro do script primário, ele funciona, então eu suspeito que há algo errado com a maneira como faço referência ao segundo script. É assim que o conteúdo de myscript.sh
se parece:
#! /bin/bash
do-something
do-something-else
. myotherscript.sh
Será que, quando o cronjob for executado, o diretório atual não será ~/mydirectory
e, portanto, o cronjob não conseguirá encontrar o arquivo myotherscript.sh
? Se sim, como faço para ver o arquivo? Eu não quero especificar o caminho absoluto dentro do script primário, como eu poderia querer movê-lo (e myotherscript.sh
) para outro diretório em algum momento ou eu poderia querer renomear ~/mydirectory
em algum momento e eu não em seguida, deseja alterar o conteúdo de myscript.sh
para fazer referência ao novo caminho absoluto.
PERGUNTA DE BÔNUS: Agora, quando é hora de executar o cronjob, basicamente eu apenas mantenho os polegares e espero o melhor, mas não tenho como ver se foi bem-sucedido e se ele falhou, por que falhou. Alguma dica de como eu posso ver porque o cronjob não foi executado como esperado?