Logo Hardware.com.br
faguirre
faguirre Super Zumbi Registrado
4.2K Mensagens 1.5K Curtidas

Erro de sintaxe em código shell script rodando via cron

#1 Por faguirre 01/02/2019 - 08:01
Caros, estou tendo algumas dificuldades para rodar um script via cron.

Na verdade é um script que deveria rodar diversos scripts em simultâneo, então faça da seguinte forma:


#!/bin/bash
sh script1.sh &
sh script2.sh &
sh script3.sh
exit 0


Rodando o script via terminal a execução ocorre sem problemas, porém via crontab dá o seguinte erro:


File "script_crontab.sh", line 3
sh script1.sh &
^
SyntaxError: invalid syntax


E fiquei travado, não sei nem quais termos de busca uso pare esse erro.

O crontab roda no usuário que precisa rodar os scripts:

Alterei o crontab com o comando:

crontab -u [usuario dos scripts] -e


Acrescentando a linha:

 0 6 * * *  'localizacaoarquivo.sh' > 'log.log' 2>&1


Alguém já passou por isso?
TRONNER
TRONNER Cyber Highlander Registrado
32.2K Mensagens 7.3K Curtidas
#5 Por TRONNER
01/02/2019 - 12:36
navegantenarede disse:
Talvez um problema do interpretador do shell? Seu script indica o uso do "/bin/bash", ou outro shell que você possa estar usando, enquanto o cron executa utiliza "/bin/sh" por padrão. Você pode tentar colocar o caminho do shell "/bin/bash" na execução do cron job.

Outro caso pode ser também onde está o script, a exemplo do sh ./script1.sh funcionar diferente do sh script1.sh.
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#6 Por esquiloesper...
01/02/2019 - 13:32
faguirre disse:
Alguém já passou por isso?

Passar eu não passei, mas posso esclarecer pois é erro corriqueiro de sintaxe, conforme foi relatado:

File "script_crontab.sh", line 3
sh script1.sh &
^
SyntaxError: invalid syntax

A solução vai depender de como você pretende aplicar a regra de execução.

Comparativamente, nesses casos o CronTab se orienta com base nas propriedades lógicas booleanas E/OU:

OU (Or) = [+] (adição)
E (And) = [×] (multiplicação)

Sintaxe para o CronTab:

' ; ' → OU
' && ' → E


No primeiro caso a execução dos comandos prossegue mesmo na ocorrência de erros (quando algum deles não puder ser concluído)

Já no segundo, a ocorrência de erro paraliza o prosseguimento das execuções.

Assim como nas outras linguagens estas propriedades podem ser mescladas para atender o propósito principal.
jcferranti
jcferranti General de Pijama Registrado
4.7K Mensagens 162 Curtidas
#8 Por jcferranti
04/02/2019 - 11:13
esquiloesperto disse:
Passar eu não passei, mas posso esclarecer pois é erro corriqueiro de sintaxe, conforme foi relatado:

File "script_crontab.sh", line 3
sh script1.sh &
^
SyntaxError: invalid syntax

A solução vai depender de como você pretende aplicar a regra de execução.

Comparativamente, nesses casos o CronTab se orienta com base nas propriedades lógicas booleanas E/OU:

OU (Or) = [+] (adição)
E (And) = [×] (multiplicação)

Sintaxe para o CronTab:

' ; ' → OU
' && ' → E


No primeiro caso a execução dos comandos prossegue mesmo na ocorrência de erros (quando algum deles não puder ser concluído)

Já no segundo, a ocorrência de erro paraliza o prosseguimento das execuções.

Assim como nas outras linguagens estas propriedades podem ser mescladas para atender o propósito principal.

Mas o script não está no crontab. Pelo que entendi é um 4º cript que é chamado pelo crontab e toda os 3 na sequência.
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#11 Por esquiloesper...
05/02/2019 - 09:42
faguirre disse:
... a solução funcionou

isso_ai.png

Teriam alguma sugestão de rodar eles em paralelo, sem ser colocá-los individualmente no cron?

Isso não existe.

O hardware executa cada processo separadamente, mesmo aqueles que "parecem" ser executados em paralelo.

Além do mais, o que determina o tempo demandado é a capacidade da máquina e a quantidade de tarefas envolvidas.
Isso significa que o tempo gasto seria o mesmo, ainda que eles fossem disparados ao mesmo tempo.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal