No ubuntus recente (especificamente, o que mais me interessa é o 12.04) /var/run
é o tmpfs, e, portanto, presumo que ele comece vazio a cada reinicialização.
No entanto, vejo algumas pastas, como /var/run/mysqld
muitas outras. Como essas pastas foram criadas em cada reinicialização? Existe alguma pasta de modelo que copiou para /var/run/
(e se sim, qual script faz isso), ou cada pasta mkdir
é editada separadamente, ou o quê?
EDIT:
Por favor, não responda que /var/run
é persistente ou que /run
é persistente. Porque não é.
Mesmo que seja assim no seu sistema, não é assim no dia 12.04.
boot
filesystem
Sandman4
fonte
fonte
Respostas:
(Obrigado a @ Zulakis e uma resposta no Serverfault por apontar que essa resposta não acompanhou o desenvolvimento contínuo do Ubuntu.)
Com a adoção
systemd
da partir de 15,04 , existe agora um mecanismo centralizado para a criação de arquivos e diretórios temporários como estes. Um serviço que pretendam utilizar este método pode removermkdir
comandos em seu próprio script de inicialização e, em vez colocar um.conf
arquivo em/etc/tmpfiles.d
,/run/tmpfiles.d
ou/usr/lib/tmpfiles.d
, com os serviços do Ubuntu parecendo preferir a última opção. Por exemplo, meu sistema agora possui:Os
d
meios para criar um diretório, se ele ainda não existir, após esse é o caminho, e o restante são as permissões, o usuário e o grupo. Esses diretórios serão criados independentemente de o serviço correspondente ser iniciado.Para documentação completa, consulte
man tmpfiles.d
.RESPOSTA ANTIGA PRÉ-SISTEMA:
Parece que eles são criados dinamicamente por serviços individuais quando eles iniciam:
Eu acredito que este é o único que lida com o mysqld:
man install
diz que o formulário -d "criará todos os componentes dos diretórios especificados".fonte
A nova
/run
pasta montada no tmpfs permite que programas como o udev, lvm e mdadm mantenham os dados de tempo de execução do initrd até o desligamento./var
é um diretório padrão de qualquer sistema Linux / UNIX - significa "variável" e é um local em que muitos logs, alterações, mas também programam arquivos de configurações variáveis e até mesmo alguns bancos de dados de configuração do sistema.A maioria das coisas
/var
deve ser devidamente eliminada e regulada pelo sistema. Seus arquivos de troca por memória virtual também vivem,/var
então não mexa com isso./var/run
também possui muitas informações de status e parâmetros de daemans de processo em execução ativa.Este diretório contém dados de informações do sistema que descrevem o sistema desde que ele foi inicializado. Os arquivos nesse diretório devem ser limpos (removidos ou truncados, conforme apropriado) no início do processo de inicialização. Os programas podem ter um subdiretório de
/var/run
; isso é recomendado para programas que usam mais de um arquivo de tempo de execução.Bem, uma vez que
/var/run
é montado como tmpfs. Isso significa que está totalmente vazio quando a máquina é inicializada e deve ser assim para impedir que coisas como daemons não sejam iniciadas por causa de um arquivo PID restante.Os scripts de inicialização geralmente criam os diretórios necessários antes de usá-los. Se você deseja armazenar um arquivo PID, coloque-o
/var/run
diretamente ou crie um diretório antes de criar o arquivo PID. Não é um local para armazenar dados que precisam permanecer lá durante as reinicializações.Fontes: Nome do caminho e Linux System Administrator's Guide
fonte
Para qualquer um que se deparar com esse segmento, porque você está procurando uma solução para configurar um aplicativo para que ele crie o diretório
/var/run
para que ele possa armazenar seu arquivo meia ou pid ou qualquer outra coisa ... aqui está um exemplo. Me deparei com esse tópico porque queria armazenar o arquivo de meias do MySQL/var/run/mysqld
. Então, depois que me deparei com esse tópico, comecei a procurar nos/etc/init
arquivos exemplos. O dbus foi bom. E, eu vim com esta configuração de inicialização do mysql:A parte do script de pré-inicialização fez o truque.
fonte
Conforme definido no Padrão de Hierarquia de Arquivos, o
/var/run
ou/run
é usado para armazenar dados voláteis de tempo de execução.Todas as pastas e arquivos criados lá são gerenciados pelo respectivo programa que criou os arquivos. Não existe uma pasta de modelo copiada; todo programa pode usar essa pasta para armazenar informações voláteis. Os dados armazenados são perdidos quando o sistema é reiniciado.
Uma coisa comum para usar a
/run
pasta é armazenar ospid
daemons em execução, arquivos de marcadores que contêm o número do processo. Eles são usados principalmente para os scripts de início / parada que você pode encontrar, por exemplo, em/etc/init.d/
Espero que isso tenha esclarecido as coisas!
br
fonte
Sua suposição não está absolutamente correta. O local da
/var
pasta é negociável - ou seja, você pode usar uma partição ou volume alternativo para localizar a/var
pasta. Independentemente de onde a/var
pasta está localizada, a/var/run
pasta é um link simbólico para a/run
pasta e seu conteúdo permanece após a reinicialização, embora muitos arquivos/run
sejam gerados ou modificados na inicialização pelos serviços iniciados durante a inicialização. Portanto, são os serviços - comomysqld
- que solicitam o carregamento de arquivos no/var/run
diretório e são configurados para criar subdiretórios se eles não existirem atualmente.fonte
douggro está absolutamente certo, / var / run é montado como tmpfs e / var / run é um link simbólico para / run que é persistente durante as reinicializações; portanto, qualquer coisa que entre / execute também aparecerá em (e permanecerá) / var / corre.
Portanto, qualquer serviço de inicialização como o mysqld, que é um daemon iniciado no momento da inicialização, que cria arquivos em / run, também terá arquivos visíveis em / var / run (link simbólico para / run remember). Se você deseja criar um arquivo que persistirá durante uma reinicialização em / var / run, crie-o em / run e, em seguida, reinicie.
espero que isso responda sua pergunta.
fonte
tmpfs
é volátil e as mudanças são perdidas.