실행 중인 프로그램의 경로를 찾을 수 있나요?

실행 중인 프로그램의 경로를 찾을 수 있나요?

프로세스가 실행 중이지만 xmms2d두 개의 가능한 실행 파일(다른 디렉터리, 실행 파일 경로 모두)이 프로세스를 생성할 수 있습니다. 때로는 프로그램이 작동하고 때로는 작동하지 않기 때문에 그 중 하나가 손상된 것 같습니다. 이제 실행 중인 프로세스가 제대로 작동하므로 다른 프로세스를 삭제(또는 이름 변경)하고 싶습니다.

ps ax|grep "xmms"8505 ? SLl 2:38 xmms2d -v경로 정보 없이 반환됩니다 . PID가 주어지면 /usr/bin/xmms2d또는 에서 실행 중인지 확인할 수 있습니까 /usr/local/bin/xmms2d?

감사해요!

답변1

이 시도:

ls -l /proc/8505/exe

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

readlink /proc/8505/exe

또는

realpath /proc/8505/exe

답변2

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

답변3

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

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의 첫 번째 부분이므로 거기에 더미 프로그램을 만들었고 짜잔, 메뉴에서 더미 프로그램이 시작되었습니다.

하지만 스스로 삭제되는 프로그램을 실행하면 어떻게 될까요? 두 번째 프로그램이 경로에 있으면 제거된 프로그램을 찾을 수 없으며 오류가 보고됩니다.

이것은 경쟁 조건입니다. 프로그램이 위치를 조사하는 동안 프로그램 자체가 삭제되거나 이동되지 않는다는 것을 알고 있다면 제대로 작동할 것 ps v -C NAME입니다 which NAME.

답변4

강제 -f 옵션을 사용하지 않고 두 파일을 모두 삭제합니다. 삭제된 파일은 실행되지 않는 파일입니다!

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

관련 정보