我正在尝试调试一个失败的旧进程监视器,该监视器搜索正在运行的进程。我确定这是由一些神秘的 Linux 行为引起的。正在运行的进程是 /opt/my/path/directoryname/daemonname 但由于某些奇怪的原因,它在目录名周围显示空格,而不是 /。许多守护进程都从同一目录运行,并以正确的路径显示。它只是每台服务器上的一个特定守护进程。
ps -ef
显示此守护程序的以下内容:
/opt/my/path directoryname daemonname --arg1 VALUE1 --arg-two VALUE.TWO --arg-three ARG.UMENT.THREE.ERR --worker daemonname --pid-role daemonname
该守护进程由 perl 脚本启动。与其他脚本相比,看起来目录路径是使用与所有其他脚本完全相同的环境变量提供的,但这些其他脚本会产生正确的路径,例如/opt/my/path/directoryname/daemonname
. 相关的 perl 行看起来像这样exec => catfile( $settings->config("/directories/executables"), $daemon_name ),
,我已经确认 config("/directories/executables") 的值是正确的值/opt/my/path/directoryname
由于所有有关目录名称包含空格的问题,搜索这个问题一直是一场噩梦。这不是那个。任何路径都不应包含空格。 ps 显示了我的 mkdir 命令,其中有一个空格,其中有一个斜线,这是我能找到的最接近的,但没有得到答复。