Estou tentando depurar um monitor de processo legado com falha que pesquisa processos em execução. Eu determinei que isso está sendo causado por algum comportamento misterioso do Linux. O processo que está sendo executado é /opt/my/path/directoryname/daemonname, mas por algum motivo estranho, ele aparece com espaços, não /, ao redor do nome do diretório. Muitos daemons estão sendo executados no mesmo diretório e aparecem com o caminho correto. É apenas um daemon específico em cada servidor.
ps -ef
mostra o seguinte para este daemon:
/opt/my/path directoryname daemonname --arg1 VALUE1 --arg-two VALUE.TWO --arg-three ARG.UMENT.THREE.ERR --worker daemonname --pid-role daemonname
Este daemon está sendo iniciado por um script perl. Comparando-o com outros, parece que o caminho do diretório está sendo fornecido usando exatamente a mesma variável env de todos os outros scripts, mas esses outros scripts resultam em um caminho correto como /opt/my/path/directoryname/daemonname
. As linhas Perl relevantes se parecem com exec => catfile( $settings->config("/directories/executables"), $daemon_name ),
e eu confirmei que o valor de config("/directories/executables") é o valor correto/opt/my/path/directoryname
Procurar por esta pergunta tem sido um pesadelo devido a todas as perguntas sobre nomes de diretórios com espaços. Isto não é isso. Nenhum caminho deve conter um espaço. ps mostra meu comando mkdir com um espaço onde eu tinha uma barra é o mais próximo que consegui encontrar, que não foi respondido.