Pergunta

Eu tentei exportar meus caminhos e variáveis ??e crontab ainda não vai executar o meu script. Tenho certeza de que estou fazendo algo errado.

Eu tenho um shell script que executa um arquivo jar. Isto não está funcionando corretamente.

Depois de ler em torno Eu li este é comumente devido a caminhos incorretos devido a cron em execução através da sua própria instância de shell e, portanto, não tem a mesma configuração de preferências como o meu perfil faz.

Aqui está o meu script olhares como hoje, depois de várias modificações:

#!/bin/bash --

. /root/.bash_profile

/usr/bin/java -jar Pharmagistics_auto.jar -o

...

essas são as peças mais importantes do script, o resto são shell simples baseado.

Alguém pode me dizer o que estou fazendo de errado?

Foi útil?

Solução

Tente especificar o caminho completo para o arquivo jar:

/usr/bin/java -jar /path/to/Pharmagistics_auto.jar -o

Outras dicas

Gostaria apenas de dizer o que você já descartou:. Verifique se o seu caminho e ambiente

Uma vez que você tem alredy feito isso, iniciar a depuração. Como checkpoints escreve em um arquivo de log para ver até onde o seu script recebe (se sequer começou em tudo), verifique o arquivo de log cronjob para erros, verifique seu e-mail (cron envia mails sobre erros) e assim por diante ...

Não é muito específica, desculpe.

"exportar meus caminhos e variáveis" não trabalho desde corridas crontab em um shell diferente por um usuário diferente.

Além disso, não sei se isso é um erro de digitação na forma como você entrou na questão, mas eu vejo:

usr/bin/java

... e eu não posso deixar de notar que você não está especificando o caminho totalmente qualificado. Ele está à procura de um diretório chamado "usr" no diretório de trabalho atual. Oft vezes para crontab, o cwd é indefinido, daí a sua referência não sai do lugar.

Tente especificar o caminho completo desde a raiz, assim:

/usr/bin/java

Ou, se você quiser ver um exemplo de pathing relativa em ação, você também pode tentar:

cd /

usr/bin/java

Alguns pensamentos.

  1. Remova o -- após a #!/bin/bash
  2. Certifique-se de saída do script direto visto por cron para e-mail ou em outro lugar onde você pode vê-lo (por exemplo MAILTO = desiredUser)
  3. Verifique se o seu script está em execução e não está bloqueado por um script de longa duração diferente (por exemplo, na segunda linha, adicione touch /tmp/MY_SCRIPT_RAN && exit)
  4. Debug o script usando set -x e set -v uma vez que você sabe que está funcionando realmente

Você definir caminhos necessários e env vars em seu profile pessoal (ou outro script)? Você já tentou abastecimento esse arquivo particular (ou isso é o que você está fazendo já com /root/.bash_profile?)

Outra maneira de perguntar é: você está certo de que tudo o que caminhos e env necessárias vars você espera estão realmente disponíveis

?

Se nada mais, você já tentou echo'ing valores individuais ou apenas usando o comando "env" em seu script e, em seguida, analisar o stdout?

fornecer caminhos completos para o arquivo jar, e qual usuário está executando o crontab em? Se você configurá-lo para um usuário normal, você acha que o usuário tem permissão para Perfil de origem da raiz?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top