Você não declarou seu sistema operacional e ps
é bastante específico do sistema operacional (e no Linux, distribuição específica). Tanto o Linux quanto o FreeBSD, pelo menos, correspondem ao seu uso de /proc
.
ps -e
produz apenas comm
(o "comando" possivelmente truncado) e não os argumentos.
No Linux ou * BSD, tente por ps
:
ps axwwo "pid ppid uid comm args"
args
é o campo que você provavelmente precisa, e as opções double "w" permitem "largura ilimitada" de saída. O caminho completo pode exceder o espaço disponível ( ps
prefere uma linha por processo e verifica a largura do seu terminal), portanto você não verá necessariamente o caminho ou os argumentos completos.
No entanto, o uso de /proc/xx/cmdline
está correto, simplesmente não há argumentos.
O segundo problema provavelmente surge do fato de o executável rackup
ser um shell script, estou supondo que o script tenha vida curta e que os argumentos sejam sugados para o ARGV
de Ruby. Você pode tentar
strace -rf -e trace=process rackup ...
para ver o que está acontecendo.
Você deve ser capaz de usar a opção -P
ou --pid
do rackup para gravar um arquivo PID para cada instância e, em seguida, monitorar e distinguir instâncias específicas, se é isso que você está tentando fazer.
Em geral, embora pgrep
ou pidof
sejam as melhores ferramentas para identificar processos por nome e / ou argumentos.