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
3. Re: Script gigante ou vários script's [RESOLVIDO]
WalkerPRusa Deepin
Post recolhido
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]
Mauriciodezusa Debian
Post recolhido
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]
Mauriciodezusa Debian
Post recolhido
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]
slackjeffusa Slackware
Post recolhido
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!
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]
WalkerPRusa Deepin
Post recolhido
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]
slackjeffusa Slackware
Post recolhido
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?
10. Re: Script gigante ou vários script's [RESOLVIDO]
Mauriciodezusa Debian
Post recolhido
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]
slackjeffusa Slackware
Post recolhido
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!
12. Re: Script gigante ou vários script's [RESOLVIDO]
Mauriciodezusa Debian
Post recolhido
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 |-----------------------------------------