GNU / Linux에서 프로세스에 특정 이름을 부여 하시겠습니까?


10

ps명령에 특정 식별자를 갖도록 프로세스를 어떻게 시작 합니까?

UPD : 한 상자에 두 대의 서버가 실행 중입니다. 대부분 배포 모드에 있습니다. 그러나 하나는 개발 중입니다. 모든 서버는 파이썬하고 질병은 모든 서버가 나열되어 있습니다 python에서 ps그것을 불가능하게하는, killall그대로 다른 사람을두고 개발에 하나.

UPD : David와 GNUix가 제안한 것처럼 각 서버마다 Python 인터프리터와 bash 스크립트에 대한 심볼릭 링크를 만들었습니다.

답변:


7

심볼릭 링크를 만들면 트릭을 수행해야하지만 증상이 아닌 질병을 알고 있으면 더 도움이됩니다. 정확히 무엇을하려고합니까? 더 좋은 방법이있을 수 있기 때문에

gnuix@defiant)-(08:11pm-:-06/10)--
(~)./0012
my weird program name
  PID TTY          TIME CMD
 7805 pts/1    00:00:00 zsh
14020 pts/1    00:00:00 0012
14021 pts/1    00:00:00 ps
(gnuix@defiant)-(08:11pm-:-06/10)--
(~)ln -s 0012 weird
(gnuix@defiant)-(08:12pm-:-06/10)--
(~)./weird 
my weird program name
  PID TTY          TIME CMD
 7805 pts/1    00:00:00 zsh
14046 pts/1    00:00:00 weird
14047 pts/1    00:00:00 ps
(gnuix@defiant)-(08:12pm-:-06/10)--
(~)

업데이트 : 당신이 할 수있는 추가 정보를 기반으로 (쉬운 방법이 있지만 지금 나에게 오지 않을 것이라고 확신합니다) 서버가 시작시 파일에 PID를 파일에 쓰도록하면 -9 | cat /var/run/devserver.pid하지만 프로그래밍 질문이 될 것입니다 :)

다시 업데이트 : 서버를 시작할 때 서버의 PID를 가져 오기 위해 쉘 트릭을 수행 할 수 있습니다. 헤드 맨 위에서 startmyserver라는 쉘 함수를 만들 수 있습니다. 예를 들어 서버를 시작하는 데 사용하는 명령을 래핑하지만 또한 $를 잡아라! 시작 이름을 기준으로 파일에 파일을 넣습니다. 'inbounds'@ ServerFault 인 쉘 스크립팅에 대해 이야기합니다. :-)


4

실행할 바이너리의 이름을 바꿀 수 있습니다. 바이너리에 대한 심볼릭 링크를 사용하여 벗어날 수 있습니다.

실제로 이름을 변경하려면 argv를 설정하고 실행하려는 프로세스를 실행하는 간단한 래퍼를 사용하는 것이 가장 좋습니다. 지금 당신에게 몇 가지 예제 코드를 줄 시간이 없지만 약 10 시간 안에 큰 소리로 외치면 내가 할 수있는 것을 볼 수 있습니다.


정확히 내 요점. argv [0]을 확인하면 문제가 될 수있는 바이너리 이름 바꾸기 / (심볼) 링크를 제외하고는 코드가 필요합니다
Martin M.

당신이 대부분 (비지 박스, Dropbreak 내부) 포함 된 경우 일부 바이너리는 잘 작동하지 않습니다
nhed

3

https://github.com/electrum/procname을 보십시오 . 환경 변수를 사용하여 프로세스의 프로세스 이름을 설정할 수 있습니다.

용법:

LD_PRELOAD 및 PROCNAME 환경 변수 세트로 Java를 실행하십시오.

LD_PRELOAD = / 경로 /to/libprocname.so PROCNAME = hello java -jar foo.jar


2

이것은 언어 고유의 질문이 아니라 일반적인 것이기 때문에 실제로 SO에 속하지 않습니다.

짧은 대답은 쉽지 않습니다. 즉, 쉘 또는 procfs / sysfs의 기능 내에서 수행 할 수 없습니다. 이를 달성하려면 외부 유틸리티를 사용해야합니다.

여기에 방법과 이유에 대한 자세한 설명이 있습니다 . 꽤 C 중심적입니다.

최신 정보:

그들은 게임을 바꾸는 파이썬입니다. 지금 너무 너무하지 않으면 모듈이나 비슷한 접근 방식 을 사용하도록 수정하는 것이 더 쉬울 것입니다 .


touche .. 더 쉬운 방법이 있다는 것을 알았습니다 :)
GNUix

C 코드는 출력량으로 인해 필요한 것보다 훨씬 더 장황합니다. 축소 할 수는 있지만 제안한 것과 거의 동일합니다. 그것과 함께 갈 코드 만 :) 누락 된 비트는 코드를 실행하는 exec입니다 :)
David Pashley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.