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 / 789383
Accepted
Harimbola Santatra
Harimbola Santatra
Asked: 2025-01-11 21:33:07 +0800 CST2025-01-11 21:33:07 +0800 CST 2025-01-11 21:33:07 +0800 CST

O Linux tem um cache para saída padrão?

  • 772

Sei que os arquivos acessados ​​recentemente são armazenados em cache na RAM, mas há um cache para comandos frequentes?

Por exemplo, se eu executar cat file.txtvárias vezes, file.txtele será armazenado em cache após o primeiro comando.

  1. Mas se eu executar ps auxvárias vezes, a saída do primeiro comando será armazenada em cache em algum lugar?
  2. Cada aplicativo tem seu próprio cache para comandos frequentes; por exemplo git log?

Depois de ler esta pergunta relacionada , acho que o termo correto para isso é memorização .

filesystems
  • 3 3 respostas
  • 1378 Views

3 respostas

  • Voted
  1. Best Answer
    Kusalananda
    2025-01-11T22:29:52+08:002025-01-11T22:29:52+08:00

    O sistema armazenaria em cache os arquivos associados ao executável do comando e quaisquer arquivos lidos do disco quando o comando fosse executado. Execuções de comando subsequentes potencialmente se beneficiariam desse armazenamento em cache e exigiriam menos ou nenhuma operação de leitura de disco físico. Isso seria transparente para o usuário e para o próprio comando.

    A saída, no entanto, não é armazenada em cache. Cada execução de comando geraria uma nova saída, mesmo que essa saída seja idêntica à da vez anterior em que o comando foi executado.

    No ps auxexemplo, psinvestiga a lista atual de processos e saídas que listam de acordo com os argumentos fornecidos. O sistema não pode emitir uma variante em cache da saída (porque não há tal cache) para evitar a execução ps. Da mesma forma, git logacessará e emitirá o log do repositório atual. O sistema não pode evitar a execução do comando nem evitar que ele leia o estado armazenado do repositório, etc.

    Os comandos podem se beneficiar de vários dados armazenados em cache pelos caches do sistema de arquivos, buffers etc., mas a saída seria regenerada do zero todas as vezes.

    Implementar um cache genérico para saída de comando seria extremamente complicado, pois geralmente você não sabe quais alterações em um sistema invalidariam o cache. Alguns comandos exigem que os arquivos sejam alterados antes de gerar uma saída diferente, enquanto outros geram uma saída diferente devido à passagem do tempo, chance aleatória ou devido a outros eventos ocorrendo. Um comando também pode ter vários efeitos colaterais além da saída para a saída padrão, como atualizar dados de arquivo de várias maneiras, tornando o cache de saída ainda mais difícil e frequentemente inútil (porque obter a saída para o fluxo de saída padrão pode não ser o principal motivo para executar um comando).

    Um comando individual pode muito bem armazenar em cache sua saída ou usar checkpointing para evitar refazer cálculos intermediários caros. Ainda assim, eles fariam isso dentro de seu domínio de problema específico (caches de compilador de vários tipos, checkpointing de simulações determinísticas em software científico, etc.), e não seria algo que o sistema operacional faria de forma transparente para eles. Em particular, o sistema operacional não seria capaz de evitar a execução desses comandos para simplesmente gerar o resultado.

    • 19
  2. user10489
    2025-01-11T22:34:05+08:002025-01-11T22:34:05+08:00

    O sistema operacional armazena em cache blocos de disco e inodes, mas não arquivos de fato. O cache de bloco de disco dá o efeito colateral de cache de arquivo aparente.

    Não há cache de nível de sistema operacional para aplicativos. Alguns aplicativos que fazem operações caras podem ter seu próprio cache que o próprio aplicativo implementa gravando arquivos no disco.

    Por exemplo, se você olhar no seu diretório home, pode haver um diretório oculto chamado ~/.cache/que contém arquivos de cache do aplicativo. Similarmente, pode haver caches globais em /var/cache/.

    No entanto, um comando como ps não precisa realmente de um cache, pois sua saída é muito dinâmica e não tão cara de gerar, então não há muito sentido em um cache. Compare isso com atopo que depende da contabilidade de processos para reunir informações de processos de longo prazo; ele pode coletar isso em 10 segundos ou puxá-lo do cache de contabilidade de processos.

    • 7
  3. anuj tyagi
    2025-01-13T23:47:10+08:002025-01-13T23:47:10+08:00

    No Linux, embora o sistema operacional empregue mecanismos de cache para melhorar o desempenho — como armazenar em cache o conteúdo de arquivos na RAM para agilizar o acesso subsequente — ele não armazena em cache a saída padrão (stdout) dos comandos.

    O Linux não armazena em cache a saída padrão dos comandos. Cada execução de comando gera uma nova saída com base no estado atual do sistema. Enquanto o SO armazena em cache o conteúdo dos arquivos para otimizar o acesso, e alguns aplicativos implementam suas próprias estratégias de cache, a saída padrão dos comandos permanece sem cache para garantir precisão e relevância.

    • 0

relate perguntas

  • Qual sistema de arquivos devo usar em um cartão SD em um NAS?

  • Como saber antecipadamente se um .zip tem um diretório pai dentro

  • Disco alocado dinamicamente do Virtualbox *.vdi continua crescendo

  • du/df e ls relatando diferentes usos de disco

  • Como os desenvolvedores do kernel Linux lidam com seu trabalho com milhões de linhas de código? É um método? [fechado]

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