O cron mantém um cache de diretório na memória?

1

Nós executamos um grande ambiente de computação Linux distribuído, no qual o diretório pessoal de um usuário pode ser movido entre diferentes repositórios de back-end, devido à sua afiliação e distribuição geral entre diferentes servidores de arquivos. Como resultado disso, seu diretório pode ser alterado de algo como / fileserver1 / joeuser para / fileserver3 / joeuser.

Depois de passar pelos processos de copiar os arquivos, sethome é usado para definir seu diretório inicial. Depois de um logout / login, suas variáveis $ HOME e ~ estão apontando para o novo caminho e tudo está indo como deveria.

Cron, no entanto, parece ainda pensar que ~ refere-se ao seu diretório home antigo e falhará ao construir um caminho usando essas informações desatualizadas.

Suspeitamos que isso se deva a algum tipo de cache interno de diretório na memória em nome do daemon do cron.

Por vários motivos, gostaríamos de evitar a reinicialização do crond regularmente e preferimos nos referir a ~ para que eles possam construir caminhos em seus crontabs.

Alguma outra solução, ou insights sobre esse comportamento?

    
por Nikky Southerland 11.04.2013 / 00:44

2 respostas

0

O Cron leva o diretório inicial ~ de onde /etc/nsswitch.conf diz para obter as informações do usuário. Isso será mostrado com getent passwd <username>

$HOME não é o mesmo que ~

    
por 11.04.2013 / 00:56
0

Qualquer cache desse tipo provavelmente seria feito pelo daemon nscd do Linux. Reinicie-o para limpar o cache.

O daemon do cron não possui código para armazenar em cache itens como diretórios montados automaticamente e não retém nenhum conteúdo das variáveis do sistema pela pessoa que editou a tabela cron.

    
por 11.04.2013 / 07:15

Tags