AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 671674
Accepted
YorSubs
YorSubs
Asked: 2021-10-04 09:59:13 +0800 CST2021-10-04 09:59:13 +0800 CST 2021-10-04 09:59:13 +0800 CST

No bash, existe uma maneira de ver quanta memória .bashrc e quaisquer scripts de inicialização estão consumindo?

  • 772

No bash, .bashrc(e vários outros scripts) pode carregar na memória na inicialização do shell. Estes podem ter 10 linhas, mas podem ter centenas (se não milhares) de linhas. Cada exportação consumirá uma pequena quantidade de memória, e cada função e cada alias também um pouco de recursos a serem mantidos na memória. Outra consideração é que não podemos apenas olhar para o tamanho dos .bashrcscripts e de outros scripts, pois eles podem ter muitos comentários que não consomem memória.

Eu gostaria de remover todos os scripts de inicialização, iniciar o sistema, esperar alguns minutos para que as coisas se acalmem e, em seguida, obter algum tipo de linha de base, colocar os scripts de inicialização de volta no lugar, reiniciar o sistema e realizar o mesmo exercício para tentar e obter algum tipo de diferencial de recurso/desempenho.

Você pode sugerir quais ferramentas podem ajudar a determinar isso? Eu tenho um conjunto relativamente grande de scripts de inicialização, cerca de 15k com muitas funções e aliases definidos, então estou muito curioso sobre o impacto (se houver, como um sistema moderno com 16 GB de memória e um Core i5 moderno e rápido, o efeito poderia ser insignificante) isso afeta o sistema em termos de recursos consumidos? Mesmo que o impacto dos meus scripts de inicialização seja baixo, eu ainda adoraria poder obter uma linha de base e depois um 'teste de carga' posterior para obter alguma avaliação de como os sistemas lidam com a execução de um determinado conjunto de aplicativos.

bash performance
  • 1 1 respostas
  • 155 Views

1 respostas

  • Voted
  1. Best Answer
    Stephen Kitt
    2021-10-04T10:56:01+08:002021-10-04T10:56:01+08:00

    O impacto de seus scripts de inicialização e a configuração resultante afetarão principalmente os shells interativos; para determinar o consumo de recursos resultante, você não precisa se esforçar muito. Abra uma janela de terminal, para que seu shell padrão comece com sua configuração padrão, inicie um shell sem carregar os scripts de inicialização e, a partir desse shell, execute ps -F:

    $ bash --norc
    $ ps -F
    UID          PID    PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
    steve    3922819 3921628  0  2307  4812   7 20:49 pts/14   00:00:00 bash
    steve    3922883 3922819  0  2276  4688   5 20:49 pts/14   00:00:00 bash --norc
    steve    3922884 3922883  0  2892  4244   0 20:49 pts/14   00:00:00 ps -F
    

    Olhando para a RSScoluna mostra que minha configuração do bash (que é bastante mínima) usa 124KiB mais do que um bash sem frescuras.

    Minha configuração Zsh é mais complexa:

    $ zsh -f
    $ ps -F
    UID          PID    PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
    steve    3921244   18008  0  3341  8296   2 20:43 pts/14   00:00:00 zsh
    steve    3921628 3921244  0  2829  5856   5 20:44 pts/14   00:00:00 zsh -f
    steve    3923250 3922883  0  2892  4132   7 20:51 pts/14   00:00:00 ps -F
    

    A diferença lá é maior, 2440KiB.

    Shells não interativos não carregam os mesmos scripts de inicialização, e eles não sobrevivem por muito tempo - se você executar ps -FC sh, ps -FC bashetc., você deve ver que não há muitos (se houver).

    O que você carrega em seu ambiente pode ter um impacto maior; para ter uma ideia disso, veja o tamanho real de /proc/.../environ:

    $ sudo wc -c /proc/*/environ | tail -n 1
    758799 total
    

    São 741 KiB no total, para quase mil processos em execução.

    • 4

relate perguntas

  • exportar variáveis ​​​​env programaticamente, via stdout do comando [duplicado]

  • Problema estranho ao passar variáveis ​​do arquivo de texto

  • Enquanto a linha lê mantendo os espaços de escape?

  • ordem de substituição de processos `te` e `bash`

  • Execute um script muito lento até que seja bem-sucedido

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve