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 / 788508
Accepted
Fravadona
Fravadona
Asked: 2024-12-22 00:48:44 +0800 CST2024-12-22 00:48:44 +0800 CST 2024-12-22 00:48:44 +0800 CST

Maneiras de manter arquivos em /tmp?

  • 772

Tenho uma estação de trabalho RHEL 8 que hospeda um aplicativo cuja interface gráfica do usuário (GUI) pode ser acessada via https.

Quando o aplicativo é iniciado, ele cria alguns arquivos de soquete /tmpcom nomes aleatórios e o .socksufixo:

$ ls -l /tmp/*.sock
srwx------ 1 app app 0 Dec 21 13:30 /tmp/supervisor-358513b0f6222d2339e4ab66d30b0037.sock
srwx------ 1 app app 0 Dec 21 13:31 /tmp/mongodb-358513b0f6222d2339e4ab66d30b0037.sock
srwx------ 1 app app 0 Dec 21 13:31 /tmp/livegui-358513b0f6222d2339e4ab66d30b0037.sock

$ file /tmp/*.sock
/tmp/supervisor-358513b0f6222d2339e4ab66d30b0037.sock: socket
/tmp/mongodb-358513b0f6222d2339e4ab66d30b0037.sock:    socket
/tmp/livegui-358513b0f6222d2339e4ab66d30b0037.sock:    socket

atualização: A parte "aleatória" dos nomes dos arquivos de soquete é, na verdade, um MD5 do caminho onde o aplicativo está instalado.

Quando as pessoas usam o aplicativo com frequência, ele funciona bem por semanas/meses, mas quando ninguém se conecta ao aplicativo por alguns dias, ele para de responder; quando isso acontece, posso ver que os .sockarquivos foram excluídos enquanto os processos do aplicativo ainda estavam em execução...

Existe alguma maneira de evitar a exclusão de alguns arquivos no /tmp?

linux
  • 4 4 respostas
  • 1000 Views

4 respostas

  • Voted
  1. Best Answer
    telcoM
    2024-12-22T01:20:28+08:002024-12-22T01:20:28+08:00

    Sim, veja man 5 tmpfiles.d: então crie um arquivo de configuração, por exemplo, /etc/tmpfiles.d/myappsocket.confcom o conteúdo como:

    X /tmp/*.sock
    

    Com isso, o processo do gerenciador de arquivos temporários não deverá mais excluir o soquete do seu aplicativo.

    • 14
  2. Austin Hemmelgarn
    2024-12-22T22:00:53+08:002024-12-22T22:00:53+08:00

    A resolução preferida é que o aplicativo coloque o soquete em /run, porque é onde os padrões para esse tipo de coisa (observe a linha final da seção 3.15.2) dizem que tais coisas devem estar (tanto porque não são dados temporários, quanto porque nenhum sistema sensato limpa arquivos antigos, /runexceto em uma reinicialização).

    A resolução menos preferida, mas ainda viável, é adicionar uma exceção para systemd-tmpfiles para /etc/tmpfiles.dexcluir os arquivos da limpeza, conforme sugerido pela resposta de telcoM .

    Uma alternativa para ambas as opções, e significativamente mais complicada, seria fazer com que o próprio aplicativo gravasse substituições para os caminhos de soquete específicos em um arquivo /run/tmpfiles.dassim que ele soubesse quais são os caminhos.

    Independentemente de tudo isso, esse é um bug que deve ser relatado aos desenvolvedores do aplicativo (e possivelmente aos desenvolvedores do systemd, porque o systemd-tmpfiles não deveria remover soquetes de escuta, embora eu não tenha certeza de quando ele começou a evitar fazer isso, então isso pode ser apenas um resultado da versão do systemd no RHEL 8).

    • 14
  3. Jasen
    2024-12-22T13:56:26+08:002024-12-22T13:56:26+08:00

    coloque-os em /var/run/user/UID/ em vez disso

    • 1
  4. Fravadona
    2024-12-23T20:58:20+08:002024-12-23T20:58:20+08:00

    Uma solução alternativa que não requer privilégios elevados seria atualizar regularmente os tempos de acesso dos .sockarquivos usando o crontab do usuário que executa os processos do aplicativo.

    Exemplo de entrada crontab para atualizar os horários de acesso dos /tmp/*.sockarquivos todos os dias à 01:00 AM:

    0 1 * * * touch -ac /tmp/*.sock
    
    • 1

relate perguntas

  • Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

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