"ps"를 사용하여 UNIX 프로세스의 작업 디렉터리를 결정하는 가장 좋은 방법은 무엇입니까?

"ps"를 사용하여 UNIX 프로세스의 작업 디렉터리를 결정하는 가장 좋은 방법은 무엇입니까?

저는 최종적으로 를 호출하는 Ruby 명령줄 스크립트( rufus.sh) 를 실행하고 있는데 Thread.new, 이는 아래와 같이 UNIX 프로세스를 생성합니다. 여러 디렉터리에 대해 이 스크립트를 실행했으며 ps명령의 출력은 아래와 같습니다. 아래의 마지막(가장 오른쪽) 열은 COMMAND( COMD)이며 이는 본질적으로 프로세스의 이름입니다. 문제는 COMMAND작업 디렉터리(프로세스 시작 시 현재 디렉터리)가 포함되지 않는다는 점입니다. 이 문제를 해결하거나 포함시키는 가장 좋은 방법은 무엇입니까 COMMAND? 고마워요, 치라그

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

답변1

이것이 귀하의 질문에 대한 답변인지 확실하지 않지만 pwdx모든 프로세스의 현재 작업 디렉토리를 제공합니다.

이와 같이:

pwdx <PID>

Ulrich Schwarz가 말한 것처럼 달릴 수도 있습니다.

ls -l /proc/PID/cwd

답변2

어쩌면 타겟으로 발견하게 될지도 모릅니다 /proc/(pid)/cwd. 그럴 것 같지만 마음이 편하지 않다 /proc.

답변3

추가 정보가 모두 필요하지 않은 경우 다음을 시도해 볼 수 있습니다.

ps -ef | grep runner | awk {'print$8'} | xargs which

여덟 번째 열 ps -ef(내 OS X 시스템의 열이므로 COMD변경해야 할 수도 있음)을 잡고 which.

이것은 내 컴퓨터에서 다음과 같이 작동합니다.

$ 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

관련 정보