Pular para o conteúdo

Script gigante ou vários script's [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Script gigante ou vários script's [RESOLVIDO]

Enviado em 04/07/2018 - 15:48h

Pessoas ... tenho a seguinte dúvida de amador

O que é melhor ??? ( ou menos pior )

* Ter um único Script com trocentas linhas ou ter vários scripts pontuais chamados por um central, ou não muda nada ???




Responder tópico

2. Re: Script gigante ou vários script's

Melhor resposta

Enviado em 04/07/2018 - 16:11h

Depende a chamada! se fizer a chamada de um script externo ele abrirá uma subshell, fica mais lento.
Se usar o . ou source ele é carregando no mesmo processo/shell que o programa principal está.
Ou seja, não pesa... seria o mesmo que usar uma função no programa principal.

Caso o último seria mais viável para o programador não se confundir todo no código!
Por exemplo em uma empresa que trabalhei tinha um script de 100k de linhas, uma bagunça de várias funções... eu peguei e botei as funções maiores externamente, e fiz a chamada como uma biblioteca, claro não mudou o desempenho mas ficou melhor para o programador, no caso eu.
A moral é... depende só de você caso venha chamar como uma biblioteca :p


THE MAGIC SHELL PROGRAMMER.

Slackware user since ~2008
Meu canal no youtube:
https://www.youtube.com/SlackJeff

Meu Site:
http://www.slackjeff.com.br/

Meus Programas estão aqui:
https://notabug.org/jeffersonrocha

Meu PODCAST:
http://podcast.slackjeff.com.br/





3. Re: Script gigante ou vários script's [RESOLVIDO]

Enviado em 04/07/2018 - 16:17h


Eu havia feito um script de backup mas com o tempo este começou a ficar gigante (muitas linhas) o que dificulta uma atualização futura, caso precisasse reescrever algumas linhas de código.

Então optei por fragmentá-lo, por exemplo:

. . .
DIA=$(date +%w)

echo $DIA

case $DIA in
0) echo "$(date). . .processo SEAGATE executado. . .sem programacao de backup." >> /var/log/processos/BackupManualSeagate.log;;
1) /srv/scripts/backup_segunda.sh;;
2) /srv/scripts/backup_terca.sh;;
3) /srv/scripts/backup_quarta.sh;;
4) /srv/scripts/backup_quinta.sh;;
5) /srv/scripts/backup_sexta.sh;;
6) echo "$(date). . .processo SEAGATE executado. . .sem programacao de backup." >> /var/log/processos/BackupManualSeagate.log;;
*) echo "$(date). . .processo SEAGATE executado. . .opcao de dia da semana invalido." >> /var/log/processos/BackupManualSeagate.log;;
esac
. . .







--------------------------------------------------------------
"Linux, several flavors, a single option: -Freedom of choice!"

4. Re: Script gigante ou vários script's [RESOLVIDO]

Enviado em 04/07/2018 - 16:25h

slackjeff escreveu:

Depende a chamada! se fizer a chamada de um script externo ele abrirá uma subshell, fica mais lento.
Se usar o . ou source ele é carregando no mesmo processo/shell que o programa principal está.
Ou seja, não pesa... seria o mesmo que usar uma função no programa principal.

Caso o último seria mais viável para o programador não se confundir todo no código!
Por exemplo em uma empresa que trabalhei tinha um script de 100k de linhas, uma bagunça de várias funções... eu peguei e botei as funções maiores externamente, e fiz a chamada como uma biblioteca, claro não mudou o desempenho mas ficou melhor para o programador, no caso eu.
A moral é... depende só de você caso venha chamar como uma biblioteca :p



então .. a intenção é o desmembramento mesmo sacou ... aí rolou a dúvida quanto ao desempenho. Se um script de 100k linhas desmembrado não altera no desempenho então acho que não tenho nada que me preocupar .. o meu não está nem com 1k ainda.

eu só não saquei a parada de chamar o script em subshell ... eu sempre chamei como se fosse executar no terminal ( ./script.sh ) e 1 que chamo com o source ( é o que tem as funções de formatação ).


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------

5. Re: Script gigante ou vários script's [RESOLVIDO]

Enviado em 04/07/2018 - 16:27h

WalkerPR escreveu:


Eu havia feito um script de backup mas com o tempo este começou a ficar gigante (muitas linhas) o que dificulta uma atualização futura, caso precisasse reescrever algumas linhas de código.

Então optei por fragmentá-lo, por exemplo:


O desempenho alterou ( significativo ) ???

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------

6. Re: Script gigante ou vários script's [RESOLVIDO]

Enviado em 04/07/2018 - 16:30h

Mauriciodez escreveu:

slackjeff escreveu:

Depende a chamada! se fizer a chamada de um script externo ele abrirá uma subshell, fica mais lento.
Se usar o . ou source ele é carregando no mesmo processo/shell que o programa principal está.
Ou seja, não pesa... seria o mesmo que usar uma função no programa principal.

Caso o último seria mais viável para o programador não se confundir todo no código!
Por exemplo em uma empresa que trabalhei tinha um script de 100k de linhas, uma bagunça de várias funções... eu peguei e botei as funções maiores externamente, e fiz a chamada como uma biblioteca, claro não mudou o desempenho mas ficou melhor para o programador, no caso eu.
A moral é... depende só de você caso venha chamar como uma biblioteca :p



então .. a intenção é o desmembramento mesmo sacou ... aí rolou a dúvida quanto ao desempenho. Se um script de 100k linhas desmembrado não altera no desempenho então acho que não tenho nada que me preocupar .. o meu não está nem com 1k ainda.

eu só não saquei a parada de chamar o script em subshell ... eu sempre chamei como se fosse executar no terminal ( ./script.sh ) e 1 que chamo com o source ( é o que tem as funções de formatação ).


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Nessa chamada ./SCRIPT é usado um processo filho/subshell, fica mais lento!
Seria melhor usar uma chamada como se fosse biblioteca mesmo, exemplo:

#!/usr/bin/env bash
#===BIBLIOTECA====
. /home/slackjeff/remover.sh # Não abre subshell
. /home/slackjeff/atualizar.sh # Não abre subshell
source /home/slackjeff/pinpin.conf # Não abre subshell
./home/slackjeff/lalala.sh # Abre subshell, mais lento!




THE MAGIC SHELL PROGRAMMER.

Slackware user since ~2008
Meu canal no youtube:
https://www.youtube.com/SlackJeff

Meu Site:
http://www.slackjeff.com.br/

Meus Programas estão aqui:
https://notabug.org/jeffersonrocha

Meu PODCAST:
http://podcast.slackjeff.com.br/





7. Re: Script gigante ou vários script's

Enviado em 04/07/2018 - 16:45h

slackjeff escreveu:
Nessa chamada ./SCRIPT é usado um processo filho/subshell, fica mais lento!
Seria melhor usar uma chamada como se fosse biblioteca mesmo, exemplo:

#!/usr/bin/env bash
#===BIBLIOTECA====
. /home/slackjeff/remover.sh # Não abre subshell
. /home/slackjeff/atualizar.sh # Não abre subshell
./home/slackjeff/lalala.sh # Abre subshell, mais lento!



Se vc exemplificar sem explicar fica confuso pra mim ..

a diferença entre lento e não lento é só 1 espaço depois do ponto ????
isso influi ??? ( #!/usr/bin/env bash )

outra coisa ... a principio não rola de fazer tipo biblioteca, pois esses script funcionam só sacou ... o grosso é um script de automação de pós instalação, então por exemplo ele chama o script "Instala_firefox.sh" por exemplo ... aí o firefox será instalado, mas o script "Instala_firefox.sh", não tem só o comando de instalar, ele tem vários IFS ( por exemplo ) que detectam se é a 1ª instalaçao, se já foi baixado, tem a parte da interatividade , que me pergunta se quer "instalar ou remover", manter ou não as configurações do usuário ... emfim ... ele é um script ( como 90% deles ) autônomo .

Então a maioria dos scripts eu só chamo no ponto onde vai ser necessário.

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------

8. Re: Script gigante ou vários script's [RESOLVIDO]

Enviado em 04/07/2018 - 16:56h

Mauriciodez escreveu:

WalkerPR escreveu:


Eu havia feito um script de backup mas com o tempo este começou a ficar gigante (muitas linhas) o que dificulta uma atualização futura, caso precisasse reescrever algumas linhas de código.

Então optei por fragmentá-lo, por exemplo:


O desempenho alterou ( significativo ) ???

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Não notei alteração no desempenho, pois cada dia da semana executa backup em servidor específico, digo, onde mais dados no backup de sexta-feira. Já nos demais dias da semana, backup onde poucas informações.

--------------------------------------------------------------
"Linux, several flavors, a single option: -Freedom of choice!"

9. Re: Script gigante ou vários script's [RESOLVIDO]

Enviado em 04/07/2018 - 17:13h

Mauriciodez escreveu:

slackjeff escreveu:
Nessa chamada ./SCRIPT é usado um processo filho/subshell, fica mais lento!
Seria melhor usar uma chamada como se fosse biblioteca mesmo, exemplo:

#!/usr/bin/env bash
#===BIBLIOTECA====
. /home/slackjeff/remover.sh # Não abre subshell
. /home/slackjeff/atualizar.sh # Não abre subshell
./home/slackjeff/lalala.sh # Abre subshell, mais lento!



Se vc exemplificar sem explicar fica confuso pra mim ..

a diferença entre lento e não lento é só 1 espaço depois do ponto ????
isso influi ??? ( #!/usr/bin/env bash )

outra coisa ... a principio não rola de fazer tipo biblioteca, pois esses script funcionam só sacou ... o grosso é um script de automação de pós instalação, então por exemplo ele chama o script "Instala_firefox.sh" por exemplo ... aí o firefox será instalado, mas o script "Instala_firefox.sh", não tem só o comando de instalar, ele tem vários IFS ( por exemplo ) que detectam se é a 1ª instalaçao, se já foi baixado, tem a parte da interatividade , que me pergunta se quer "instalar ou remover", manter ou não as configurações do usuário ... emfim ... ele é um script ( como 90% deles ) autônomo .

Então a maioria dos scripts eu só chamo no ponto onde vai ser necessário.

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Quando chamamos ./Script.sh esse ./ é um nick/alias para o shell padrão do seu sistema fim...
O . ou source chama um script no mesmo processo, são diferentes do primeiro exemplo acima onde se usa o ./script.sh...
. Script.sh #Chama um script/biblioteca no mesmo processo
source Script.sh # Alias do . chama o script/biblioteca no mesmo processo.

Então no caso acho que seria melhor você por esse seu script todo em uma função, chamar como uma biblioteca e fazer a chamada da função quando necessaria que executar um segundo script dentro do principal! alem de mais lento nao fica profissa...
Exemplo de uma biblioteca.




# BIBLIOTECA/Função atualizar mirrors do sistema.
# Nota, não há necessidade de usar shebang!
# essa biblioteca sera salva como atualizar_repo.sh

function atualizar_repositorio()
{
printf "Olá, vamos atualizar sua lista de repositorio\n"
apt update
return 0
}



#!/bin/bash
# Programa principal.
#======BIBLIOTECA============|
# Chamada da biblioteca para atualizar repositorio
# está biblioteca será carregada juntamente deste programa
# não abrindo uma subshell/subprocesso.
. /DIRETORIO/DA/BIBLIOTECA/atualizar_repo.sh

# fazendo alguma conferencia se usuario é root...
# se é vamos chamar a funcão para atualizar o repositorio.
if [ "$UID" = "0" ]; then
atualizar_repositorio # Chamada da função/biblioteca
else
printf "Parece que você não está como root!\nSó lamento...\n"
exit 1
fi


Assim sera mais rapido que criar um script e chamar com ./script.sh ou bash script.sh
Entendeu?

THE MAGIC SHELL PROGRAMMER.

Slackware user since ~2008
Meu canal no youtube:
https://www.youtube.com/SlackJeff

Meu Site:
http://www.slackjeff.com.br/

Meus Programas estão aqui:
https://notabug.org/jeffersonrocha

Meu PODCAST:
http://podcast.slackjeff.com.br/





10. Re: Script gigante ou vários script's [RESOLVIDO]

Enviado em 04/07/2018 - 17:36h

slackjeff escreveu:
Quando chamamos ./Script.sh esse ./ é um nick/alias para o shell padrão do seu sistema fim...
O . ou source chama um script no mesmo processo, são diferentes do primeiro exemplo acima onde se usa o ./script.sh...
. Script.sh #Chama um script/biblioteca no mesmo processo
source Script.sh # Alias do . chama o script/biblioteca no mesmo processo.


Bicho .. kkkkkkkkk ... as vezes eu acho que vc explicam as paradas de sacanagem ... kkkkkkkkkk ... só responde pra mim velho ... a diferença ( na grafia ) entre em outro é 1 ( um ) "espaço" depois do ponto ??? só sim ou não me sana a dúvida ... kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

./script.sh # lento e tudo junto
. /script.sh # não lento e um espaço depois do ponto


slackjeff escreveu:
Assim sera mais rapido que criar um script e chamar com ./script.sh ou bash script.sh
Entendeu?


não mesmo ... olha só ... se eu fizer como vc acha que fica melhor ... eu faço o script.sh com função e chamo no script principal ... blz ... mas como eu vou executar o script.sh de forma autônoma quando eu precisar só dele ??? ..

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------

11. Re: Script gigante ou vários script's [RESOLVIDO]

Enviado em 04/07/2018 - 18:01h

Sacanagem por que? kkkk
Tem que matar a cobra e mostrar o pau se não o cara nao entende porr* :p

É ai complica, se precisar usar ele individual não vai rolar muito bem já que está dentro de uma função.
Bom então faz a chamada como se fosse um script mesmo ./nomedoscript ou shell nomedoscript...
Se é melhor para você, isso que importa!


THE MAGIC SHELL PROGRAMMER.

Slackware user since ~2008
Meu canal no youtube:
https://www.youtube.com/SlackJeff

Meu Site:
http://www.slackjeff.com.br/

Meus Programas estão aqui:
https://notabug.org/jeffersonrocha

Meu PODCAST:
http://podcast.slackjeff.com.br/





12. Re: Script gigante ou vários script's [RESOLVIDO]

Enviado em 04/07/2018 - 18:41h

slackjeff escreveu:
É ai complica, se precisar usar ele individual não vai rolar muito bem já que está dentro de uma função.
Bom então faz a chamada como se fosse um script mesmo ./nomedoscript ou shell nomedoscript...
Se é melhor para você, isso que importa!



então .. essa parte aí está fora de questão mesmo ... senão eu teria que duplicar os scripts ... não vinga né ?!?!?

mas o que eu queria saber mesmo já tá safo ... valew ... !!!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder