Reinicialização de Comandos automaticamente.

1. Reinicialização de Comandos automaticamente.

André
arsaraiva

(usa Ubuntu)

Enviado em 25/02/2016 - 11:58h

Caros, sou extremamente novo no mundo Linux, e atualmente estou apanhando bastante.
Meu problema atual é que preciso fazer um arquivo "main.sh" com 3 linhas de código, seja executado por 5 minutos, interrompido e executado novamente, como em um loop.
Alguém conhece algum comando que eu possa inserir neste arquivo, de forma que um "temporizador" decremente o tempo e ao chegar a 0, interrompa (ctrl + C) e reinicie o arquivo?
Desde já agradeço.


  


2. Re: Reinicialização de Comandos automaticamente.

Matth
MattF

(usa Slackware)

Enviado em 25/02/2016 - 12:13h

arsaraiva escreveu:

Caros, sou extremamente novo no mundo Linux, e atualmente estou apanhando bastante.
Meu problema atual é que preciso fazer um arquivo "main.sh" com 3 linhas de código, seja executado por 5 minutos, interrompido e executado novamente, como em um loop.
Alguém conhece algum comando que eu possa inserir neste arquivo, de forma que um "temporizador" decremente o tempo e ao chegar a 0, interrompa (ctrl + C) e reinicie o arquivo?
Desde já agradeço.


Para um completo iniciante isso já é algo até pesado. Mas não impossível. Quando você falou em temporizador pensei em um cron job. Mas se você quer executar isso e quer que fique em um loop infinito do tipo:

#!/bin/bash
while [ 1 ]
do
#os
#tres
#comandos
sleep 300
done



3. Ainda em dúvida

André
arsaraiva

(usa Ubuntu)

Enviado em 25/02/2016 - 14:38h

Obrigado pela ajuda, sou realmente muito iniciante no mundo linux e ainda estou em dúvida. O código que eu preciso rodar é o seguinte (ele fica armazenado em um arquivo main.sh)

wget https://github.com/....m-linux.tar.gz (os pontos é porque a url é grande d+)
tar -xzvf ...m-linux.tar.gz
cd ...m-linux/
./m-linux -o stratum+tcp://url:porta -u user -p senha

só que este necessito que este código rode, pare e reinicie.
Meu problema está aí, a chamada ao código a primeira vez é manual, porém a cada 5 ou 10 minutos, tenho que fazer a chamada de novo (m-linux). Se conhecer uma forma de ao executar começar a decrementar um temporizar (18.000 segundos) por exemplo e ao chegar a 0s, parar a execução do m-linux e chamá-lo de novo de forma automática, resolveria este problema.


4. Re: Reinicialização de Comandos automaticamente.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/02/2016 - 15:49h

arsaraiva escreveu:

Caros, sou extremamente novo no mundo Linux, e atualmente estou apanhando bastante.
Meu problema atual é que preciso fazer um arquivo "main.sh" com 3 linhas de código, seja executado por 5 minutos, interrompido e executado novamente, como em um loop.
Alguém conhece algum comando que eu possa inserir neste arquivo, de forma que um "temporizador" decremente o tempo e ao chegar a 0, interrompa (ctrl + C) e reinicie o arquivo?
Desde já agradeço.


------------------------------------------------------
Boa tarde arsaraiva.
Testado e funcionando....

Descrição:
INICIA o LOOPING
Executa COMANDOS pelo tempo que você definir na VAR SEG.
Esgotado esse tempo, executa outros COMANDOS
Retorna para o LOOPING

Lógica:
Enquanto $TIME é >= a $(date +"%s") . . .

Segue:

#INICIO
#!/bin/bash

LOOPING() {
#DEFINA O TEMPO NA VAR "SEG"
SEG=300
TIME=$(($(date +"%s")+$SEG))
while (($TIME >= $(date +"%s")));do
#COMANDO_01
#COMANDO_NN
done
#COLOQUE ABAIXO O COMANDO QUE SERÁ EXECUTADO APÓS O TEMPO DEFINIDO EM $SEG
#COMANDOXX
LOOPING
}
LOOPING

#FIM


OBS-01.: É POSSÍVEL IMPLEMENTAR UM CONTROLE PARA QUE O LOOPING NÃO SEJA INFINITO

Att.:
Marcelo Oliver

OBS-02.: Se resolver, marque como resolvido, gostando da solução, marque como melhor resposta . . . :)




5. Ainda não funcionou

André
arsaraiva

(usa Ubuntu)

Enviado em 25/02/2016 - 20:01h

Fiz o seguinte arquivo (seguindo as orientações do grande Marcelo):

LOOPING() {
SEG=60
TIME=$(($(date +"%s")+$SEG))
while (($TIME >= $(date +"%s")));do
wget https://github.com/....m-linux.tar.gz (este comando só utilizo uma única vez)
tar -xzvf m-linux.tar.gz
done
#COLOQUE ABAIXO O COMANDO QUE SERÁ EXECUTADO APÓS O TEMPO DEFINIDO EM $SEG
cd ...m-linux/
./m-linux -o stratum+tcp://url:porta -u user -p senha (este comando é o que tenho re reinicializar acada 5 minutos)
LOOPING
}
LOOPING

Porém apresentou erro logo de cara no CentOS:

bash-4.3$ chmod +x Newfile.sh
bash-4.3$ Newfile.sh (chamada ao arquivo com os comandos)
./Newfile.sh: line 1: syntax error near unexpected token `$'{\r''
'/Newfile.sh: line 1: `LOOPING() {
bash-4.3$ ^C
bash-4.3$ ^C

Será que errei algo?


6. Re: Reinicialização de Comandos automaticamente.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/02/2016 - 20:58h

arsaraiva escreveu:

Fiz o seguinte arquivo (seguindo as orientações do grande Marcelo):
#!/bin/bash
LOOPING() {
SEG=60
TIME=$(($(date +"%s")+$SEG))
while (($TIME >= $(date +"%s")));do
#SE DEVE SER EXECUTADO SOMENTE 01 X, NÃO DEVE FICAR AQUI....
wget https://github.com/....m-linux.tar.gz #(este comando só utilizo uma única vez)
tar -xzvf m-linux.tar.gz
done
#COLOQUE ABAIXO O COMANDO QUE SERÁ EXECUTADO APÓS O TEMPO DEFINIDO EM $SEG
cd ...m-linux/
./m-linux -o stratum+tcp://url:porta -u user -p senha #(este comando é o que tenho re reinicializar acada 5 minutos)
LOOPING
}
LOOPING

Porém apresentou erro logo de cara no CentOS:

bash-4.3$ chmod +x Newfile.sh
bash-4.3$ Newfile.sh (chamada ao arquivo com os comandos)
./Newfile.sh: line 1: syntax error near unexpected token `$'{\r''
'/Newfile.sh: line 1: `LOOPING() {
bash-4.3$ ^C
bash-4.3$ ^C
Será que errei algo?

__________________________
Parece, que sim . . . :)
Testei mto antes de enviar . . .
Cade a linha 01?
#!/bin/bash
#COMENTE os "comentários" que vc inseriu.....

Segue o Script com o testes, gera um txt com INICIO, andamento e termino . . .


#!/bin/bash

LOOPING() {
#DEFINA O TEMPO NA VAR "SEG"
SEG=1
TIME=$(($(date +"%s")+$SEG))

printf "INICIO:\n%(:%S:%s)T:\n\n" >> TESTES_TEMPORIZA.txt #COMANDO USADO PARA TESTES
#while (($TIME >= $(date +"%s")));do
until (($TIME >= $(date +"%s")));do
printf ''$TIME_02':%(%S:%s)T:\n' >> TESTES_TEMPORIZA.txt #COMANDO USADO PARA TESTES
#COMANDO_01
#.
#COMANDO_03
done
#COLOQUE ABAIXO O COMANDO QUE SERÁ EXECUTADO APÓS O TEMPO DEFINIDO EM $SEG

printf "TERMINO:\n%(%S:%s)T:\n" >> TESTES_TEMPORIZA.txt #COMANDO USADO PARA TESTES
#LINHA ABAIXO, CHAMA A FUNÇÃO E REINICIA O LOOPING
#LOOPING
}
LOOPING



Pela sua frase, tinha entendido que o comando seria executado por 5 minutos . . .
Mas, vejo que não é isso. Segue o novo script

NOVO_SCRIPT:


#!/bin/bash
SEG=2.5

LOOPING() {
sleep $SEG
# COLOQUE ABAIXO OS COMANDOS QUE SERãO EXECUTADOS
# APÓS O TEMPO DEFINIDO EM $SEG
#COMANDOS
LOOPING
}
#COMANDO QUE É EXECUTADO UMA VEZ!
#COMANDO
LOOPING




Att.:
Marcelo




7. Erros nos Scripts

André
arsaraiva

(usa Ubuntu)

Enviado em 26/02/2016 - 13:24h

No primeiro Scritp ficou assim:
#!/bin/bash

LOOPING() {
#DEFINA O TEMPO NA VAR "SEG"
SEG=1
TIME=$(($(date +"%s")+$SEG))

printf "INICIO:\n%(:%S:%s)T:\n\n" >> TESTES_TEMPORIZA.txt #COMANDO USADO PARA TESTES
#while (($TIME >= $(date +"%s")));do
until (($TIME >= $(date +"%s")));do
printf ''$TIME_02':%(%S:%s)T:\n' >> TESTES_TEMPORIZA.txt #COMANDO USADO PARA TESTES
#COMANDO_01
wget https://github.com/....m-linux.tar.gz
#.
#COMANDO_03
tar -xzvf m-linux.tar.gz
done
#COLOQUE ABAIXO O COMANDO QUE SERÁ EXECUTADO APÓS O TEMPO DEFINIDO EM $SEG
cd ...m-linux/
./m-linux -o stratum+tcp://url:porta -u user -p senha # comando que deverá ser reinicializado a cada 5 minutos
printf "TERMINO:\n%(%S:%s)T:\n" >> TESTES_TEMPORIZA.txt #COMANDO USADO PARA TESTES
#LINHA ABAIXO, CHAMA A FUNÇÃO E REINICIA O LOOPING
#LOOPING
}
LOOPING

e deu erro: bash: ./Newfile.sh: /bin/bash^M: bad interpreter: No such file or directory

Já no segundo script, o erro é o mesmo e ficou assim:

#!/bin/bash
SEG=2.5

LOOPING() {
sleep $SEG
# COLOQUE ABAIXO OS COMANDOS QUE SERãO EXECUTADOS
# APÓS O TEMPO DEFINIDO EM $SEG
#COMANDOS
cd ...m-linux/
./m-linux -o stratum+tcp://url:porta -u user -p senha # comando que deve ser reiniciado
LOOPING
}
#COMANDO QUE É EXECUTADO UMA VEZ!
#COMANDO
wget https://github.com/....m-linux.tar.gz
tar -xzvf m-linux.tar.gz
LOOPING



8. Re: Reinicialização de Comandos automaticamente.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/02/2016 - 14:19h

arsaraiva escreveu:

No primeiro Scritp ficou assim:
#!/bin/bash
LOOPING() {
#DEFINA O TEMPO NA VAR "SEG"
SEG=1
TIME=$(($(date +"%s")+$SEG))

printf "INICIO:\n%(:%S:%s)T:\n\n" >> TESTES_TEMPORIZA.txt #COMANDO USADO PARA TESTES
#while (($TIME >= $(date +"%s")));do
until (($TIME >= $(date +"%s")));do
printf ''$TIME_02':%(%S:%s)T:\n' >> TESTES_TEMPORIZA.txt #COMANDO USADO PARA TESTES
#COMANDO_01
wget https://github.com/....m-linux.tar.gz
#.
#COMANDO_03
tar -xzvf m-linux.tar.gz
done
#COLOQUE ABAIXO O COMANDO QUE SERÁ EXECUTADO APÓS O TEMPO DEFINIDO EM $SEG
cd ...m-linux/
./m-linux -o stratum+tcp://url:porta -u user -p senha # comando que deverá ser reinicializado a cada 5 minutos
printf "TERMINO:\n%(%S:%s)T:\n" >> TESTES_TEMPORIZA.txt #COMANDO USADO PARA TESTES
#LINHA ABAIXO, CHAMA A FUNÇÃO E REINICIA O LOOPING
#LOOPING
}
LOOPING

bash: ./Newfile.sh: /bin/bash^M: bad interpreter: No such file or directory

Já no segundo script, o erro é o mesmo e ficou assim:

#!/bin/bash
SEG=2.5
LOOPING() {
sleep $SEG
# COLOQUE ABAIXO OS COMANDOS QUE SERãO EXECUTADOS
# APÓS O TEMPO DEFINIDO EM $SEG

cd ...m-linux/
./m-linux -o stratum+tcp://url:porta -u user -p senha # comando que deve ser reiniciado
LOOPING
}
#COMANDO QUE É EXECUTADO UMA VEZ!
wget https://github.com/....m-linux.tar.gz
tar -xzvf m-linux.tar.gz
LOOPING

---------------------------
Boa tarde.

Você criou esses SCRIPS no Windows???

Esse ^M depois do /bash não deveria existir....
bash: ./Newfile.sh: /bin/bash^M: bad interpreter: No such file or directory
Vamos eliminá-lo!!!!
Execute o comando:
sed -i 's/^M//g' NOMEDOSCRIPT 

ATENÇÃO:
PARA DIGITAR ^M, FAÇA:

(CTRL+V CTRL+M ) 

Teste os scripts, se der erro, responda as perguntas abaixo, por favor . . .
Qual Linux vc esta usando?
Qual editor de textos?
Poste a saída do comando
file nomedoscript

att.:
marcelo oliver







9. Scripts

André
arsaraiva

(usa Ubuntu)

Enviado em 26/02/2016 - 16:04h

Grande Marcelo,
obrigado pela atenção, estou usando um terminal CentOS on-line, através da URL

http://www.tutorialspoint.com/unix_terminal_online.php

Assim que abro clico nas setas no lado esquerdo e com botão direito em cima do root, create file.
Ele abre um editor onde salvo as 3 linhas do meu código, mais por ser on-line, a cada 5 ou 10 segundos ele encerra a seção e acabo por perder tudo que estou fazendo, por isso a intensão de fazer de forma automática o reinício do script.

Se bem que testei este código em uma VM com Ubuntu 15 e apresentou erro, mais repare que sou bem novo em linux e posso estar (quase que certamente estou) errando em algo.



10. Re: Reinicialização de Comandos automaticamente.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/02/2016 - 18:38h

arsaraiva escreveu:

Grande Marcelo,
obrigado pela atenção, estou usando um terminal CentOS on-line, através da URL

http://www.tutorialspoint.com/unix_terminal_online.php

Assim que abro clico nas setas no lado esquerdo e com botão direito em cima do root, create file.
Ele abre um editor onde salvo as 3 linhas do meu código, mais por ser on-line, a cada 5 ou 10 segundos ele encerra a seção e acabo por perder tudo que estou fazendo, por isso a intensão de fazer de forma automática o reinício do script.

Se bem que testei este código em uma VM com Ubuntu 15 e apresentou erro, mais repare que sou bem novo em linux e posso estar (quase que certamente estou) errando em algo.

-----------------------------------
Boa noite, arsaraiva.
Efetuei os seguintes procedimentos:
Entrei no site => http://www.tutorialspoint.com/unix_terminal_online.php
FILE => CREATE FILE => COPIEI o CONTEÚDO DO Script => COLEI Em Newfile.sh => SALVEI
No terminal (site), efetuei o comando:
chmod +x Newfile.sh 


bash-4.3$ ./Newfile.sh                                                                                                                
Uma vez/Início
Fri Feb 26 16:49:04 EST 2016

cada 5s
Fri Feb 26 16:49:09 EST 2016

cada 5s
Fri Feb 26 16:49:14 EST 2016

cada 5s
Fri Feb 26 16:49:19 EST 2016

cada 5s
Fri Feb 26 16:49:24 EST 2016

cada 5s
Fri Feb 26 16:49:29 EST 2016

cada 5s
Fri Feb 26 16:49:34 EST 2016


PS.: Coloquei para informar a data, comando "date"
Funcionou normal ....
Revise os procedimentos. . .

att.:
marcelo oliver






11. Script

André
arsaraiva

(usa Ubuntu)

Enviado em 26/02/2016 - 19:28h

Beleza Marcelo, acho que é isto aí que preciso, mais qual script você usou?

o código que eu preciso executar a cada 5 minutos seria este comando:

cd m-minerd-64-linux/
./m-minerd -o stratum+tcp://uri:porta -u user -p password

antes disso eu faço o download do m-minerd-64-linux com o wget (só necessário uma única vez) e extraio com o tar.....

Os dois scripts acima deram o erro que enviei. Será que estou colocando os comandos no lugar errado? (e olha que você indica)
Pois não consigo visualizar outra coisa para fazer ocorrer este erro.

Mais uma vez obrigado


12. Re: Reinicialização de Comandos automaticamente.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/02/2016 - 20:11h

arsaraiva escreveu:
Beleza Marcelo, acho que é isto aí que preciso, mais qual script você usou?
o código que eu preciso executar a cada 5 minutos seria este comando:
cd m-minerd-64-linux/
./m-minerd -o stratum+tcp://uri:porta -u user -p password
antes disso eu faço o download do m-minerd-64-linux com o wget (só necessário uma única vez) e extraio com o tar.....
Os dois scripts acima deram o erro que enviei. Será que estou colocando os comandos no lugar errado? (e olha que você indica)
Pois não consigo visualizar outra coisa para fazer ocorrer este erro.
Mais uma vez obrigado

---------------------------
Blz.
Fiz novamente e funcionou . . . :)
Copiei o código daqui da pagina e salvei lá....
Usei o código abaixo, segue:

#!/bin/bash
SEG=300
LOOPING() {
sleep $SEG
./m-linux -o stratum+tcp://url:porta -u user -p senha # comando que deve ser reiniciado
LOOPING
}
cd m-minerd-64-linux/
wget https://github.com/....m-linux.tar.gz
tar -xzvf m-linux.tar.gz
LOOPING


Você tem a pasta cd m-minerd-64-linux/ lá no site?
Se não tiver a pasta, de o comando:
mkdir m-minerd-64-linux 

Falando em PASTA. . .
O comando cd é para trocar de DIRETóRIO,
uma vez executado, já troca de diretório, portanto, não ha
necessidade de repetir esse comando de 5 em 5 minutos ....

No código acima o tempo esta ajustado para 5 minutos (300 segundos)
e os comandos estão no lugar certo...

Boa sorte

abç.:
Marcelo





01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts