Posso mover um diretório com arquivos abertos?

6

Imagine um monte de processos usando um diretório /home/user/logs . Eles têm alguns logs abertos por mais tempo.

    
por Konrad Garus 16.01.2012 / 16:52

2 respostas

6

Sim, sob certas condições. Os inodes dos arquivos não serão alterados se você mover seu diretório-pai, portanto, os identificadores de arquivos abertos ainda serão válidos. As condições são:

  • Você não move o diretório pelos sistemas de arquivos. Isso mudaria os números de inode dos arquivos, é claro.
  • Os processos realmente fazem mantêm os arquivos abertos e não os fecham de vez em quando (em caso afirmativo, você terá que reconfigurar os aplicativos para torná-los cientes do novo diretório pai)
  • Você está usando ext2 / 3/4 ou uma das várias versões do UFS lá fora. Não posso falar honestamente sobre outros sistemas de arquivos porque não tenho certeza de como eles são organizados internamente.
por 16.01.2012 / 17:04
1

Os processos geralmente não mantêm arquivos abertos nos logs por muito tempo.

Sim, você pode mover / excluir qualquer diretório ou arquivo que esteja em uso por qualquer processo a qualquer momento. Heck, você pode deletar o executável do processo enquanto ele está rodando e ele continuará rodando.

No entanto, prepare-se para alguns cenários possíveis:

  • quando os processos reabrirem para gravar arquivos de log, eles os recriarão.
  • os processos continuarão a gravar no local antigo e não no novo
  • se você excluir o executável de um processo, não poderá iniciá-lo novamente

Os arquivos serão apagados fisicamente quando nenhum processo usar seus descritores. Você verá os arquivos movidos / excluídos imediatamente.

    
por 16.01.2012 / 17:00