Não tenho certeza se isso responde à sua pergunta, mas o pwdx
pode fornecer o diretório de trabalho atual de qualquer processo.
Assim:
pwdx <PID>
Você também pode fazer o que Ulrich Schwarz disse e executar
ls -l /proc/PID/cwd
Estou executando um script de linha de comando Ruby ( rufus.sh
) que, por fim, chama Thread.new
, que gera um processo UNIX, conforme mostrado abaixo. Eu executo este script para mais de um diretório, conforme a saída do comando ps
é mostrada abaixo. A última coluna (mais à direita) abaixo é COMMAND
( COMD
), que é essencialmente o nome do processo. O problema é que COMMAND
não inclui o diretório de trabalho (o diretório atual quando o processo foi iniciado). Qual é a melhor maneira de descobrir isso ou incluí-lo em COMMAND
? Obrigado, Chirag
ps -ef | grep runner
web 7532 1 0 Oct08 ? 00:02:08 /usr/local/bin/ruby ./script/runner ./config/jobs/control.rb critical_alert start
web 21114 1 1 Oct09 ? 02:49:28 /usr/local/bin/ruby ./script/runner ./config/jobs/control.rb task start
web 19028 1 1 10:45 pts/0 00:00:34 /usr/local/bin/ruby ./script/runner ./config/jobs/control.rb task start
web 19029 1 0 10:45 pts/0 00:00:10 /usr/local/bin/ruby ./script/runner ./config/jobs/control.rb critical_alert start
Talvez você o encontre como o alvo de /proc/(pid)/cwd
. Parece que sim, mas não estou muito em casa em /proc
.
Se não for necessário ter todas as outras informações, você pode tentar:
ps -ef | grep runner | awk {'print$8'} | xargs which
Ele vai pegar a oitava coluna de ps -ef
(essa é a coluna COMD
na minha máquina OS X; você pode precisar alterar isso) e executá-la em which
.
Isso funciona na minha máquina, como demonstrado aqui:
$ ps -ef | grep grep
mfc 25780 21222 0 11:54 pts/5 00:00:00 grep grep
$ ps -ef | grep grep | awk {'print$8'}
grep
$ ps -ef | grep grep | awk {'print$8'} | xargs which
/bin/grep