실행중인 프로그램의 경로를 찾을 수 있습니까?


17

나는이 xmms2d실행중인 프로세스를하지만, 두 가지 실행 파일 (다른 디렉토리에 실행 파일 경로에 모두)를 양산 한 수 있었다. 때로는이 프로그램이 작동하고 때로는 작동하지 않기 때문에 그중 하나가 손상되었다고 생각합니다. 현재 실행중인 프로세스가 작동하므로 다른 프로세스를 삭제하거나 이름을 바꾸고 싶습니다.

ps ax|grep "xmms"8505 ? SLl 2:38 xmms2d -v경로 정보없이 반환 합니다. PID를 감안할 때, 나는 그것이에서 실행되었는지 여부를 찾을 수있는 /usr/bin/xmms2d/usr/local/bin/xmms2d?

감사!


2
ps -C xmms당신의 grep을 쓸모 없게 만들어야합니다.
사용자가 알 수 없음

1
pgrep도 그렇게 할 것입니다.
jlliagre

답변:


22

이 시도:

ls -l /proc/8505/exe

또는의 출력을 구문 분석하지 않으려면 다음을 ls수행하십시오.

readlink /proc/8505/exe

또는

realpath /proc/8505/exe

6

Solaris를 실행중인 경우 제안 된 Linux와 약간 다릅니다.

$ for i in $(pgrep bash)
do
  printf "%6d %s\n" $i $(readlink /proc/$i/path/a.out)
done
   577 /usr/bin/bash
 11247 /usr/bin/bash
 13921 /usr/bin/bash
 13992 /tmp/bash

실행중인 프로세스의 현재 작업 디렉토리를 알고 싶다면 다음을 사용할 수 있습니다.

pwdx $(pgrep xmms)

예 :

$ pwdx $(pgrep ksh)
2904: /home/jlliagre
2906: /home/jlliagre
3844: /tmp

(편집 후 더 이상 적용되지 않아서 내 댓글이 삭제되었습니다.)
Kjetil Jorgensen

-1

쉘에서 마우스 패드를 시작합니다.

mousepad & 
[1] 24289

어디에서 왔는지 확인하십시오.

which mousepad 
   /usr/bin/mousepad

경로로 시작하십시오.

/usr/bin/mousepad &

PS를 통해보세요 :

ps v -C mousepad 
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
24289 pts/3    S      0:00      3    62 85441 10964  1.0 mousepad
24292 pts/3    S      0:00      0    62 85433 10864  1.0 /usr/bin/mousepad

보시다시피, 경로없이 호출 된 것은 경로없이 표시되고 PATH로 시작되므로

which mousepad

그렇게 간단하지 않습니까? 기다림! 메뉴에서 마우스 패드를 시작하면 어떻게 되나요? PATH 설정을 사용하거나 사용하지 않고 지정할 수 있습니다. 나는 노력했다. 정상적인 시작은에서 간단한 '마우스 패드'로 이어 ps v -C집니다. ~ / bin이 PATH의 첫 번째 부분이기 때문에 거기에 더미를 만들고 voila, 더미는 메뉴에서 시작됩니다.

그러나 스스로 삭제하는 프로그램을 시작하면 어떻게 될까요? 경로에 두 번째가 있으면 삭제 된 프로그램을 찾지 못하고 잘못된 프로그램을보고합니다.

이것이 경쟁 조건입니다. 당신은 당신의 프로그램이 자신을 삭제하지 않거나 자신의 위치를 조사하는 동안 이동하지 않는 것을 알고있는 경우 ps v -C NAMEwhich NAME꽤 잘 작동합니다.


이것이 항상 작동합니까? 두 개의 다른 디렉토리에 실행 파일이 있고 둘 다에서 실행한다고 가정 해보십시오 ./someexecutable.
apoorv020

아니, 물론 아니지, 모두로 표시하기 때문에 ./someexecutable 또는 / 빈 / bash는 ./someexecutable
사용자 알 수없는

-4

계속해서 두 파일을 모두 삭제하십시오 (force -f 옵션없이). 삭제 된 파일이 실행 중이 아닌 파일입니다 !!

시스템 실행 파일 잠금을 사용하면 현재 실행중인 파일을 삭제할 수 없습니다.


귀하의 답변은 해당 질문에 대한 실제 답변을 제공하지 않습니다.
Risto Salminen

4
또한 잘못되었습니다. 실행중인 실행 파일을 문제없이 삭제할 수 있습니다. init항상 실행중인 과 같은 패키지가 어떻게 업그레이드됩니까? 실행중인 실행 파일을 수정할 수 없습니다 .
Patrick

1
놀랍게도 잘못되었습니다 –
이러지
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.