답변:
심볼릭 링크를 만들면 트릭을 수행해야하지만 증상이 아닌 질병을 알고 있으면 더 도움이됩니다. 정확히 무엇을하려고합니까? 더 좋은 방법이있을 수 있기 때문에
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 인 쉘 스크립팅에 대해 이야기합니다. :-)
실행할 바이너리의 이름을 바꿀 수 있습니다. 바이너리에 대한 심볼릭 링크를 사용하여 벗어날 수 있습니다.
실제로 이름을 변경하려면 argv를 설정하고 실행하려는 프로세스를 실행하는 간단한 래퍼를 사용하는 것이 가장 좋습니다. 지금 당신에게 몇 가지 예제 코드를 줄 시간이 없지만 약 10 시간 안에 큰 소리로 외치면 내가 할 수있는 것을 볼 수 있습니다.
https://github.com/electrum/procname을 보십시오 . 환경 변수를 사용하여 프로세스의 프로세스 이름을 설정할 수 있습니다.
용법:
LD_PRELOAD 및 PROCNAME 환경 변수 세트로 Java를 실행하십시오.
LD_PRELOAD = / 경로 /to/libprocname.so PROCNAME = hello java -jar foo.jar
이것은 언어 고유의 질문이 아니라 일반적인 것이기 때문에 실제로 SO에 속하지 않습니다.
짧은 대답은 쉽지 않습니다. 즉, 쉘 또는 procfs / sysfs의 기능 내에서 수행 할 수 없습니다. 이를 달성하려면 외부 유틸리티를 사용해야합니다.
여기에 방법과 이유에 대한 자세한 설명이 있습니다 . 꽤 C 중심적입니다.
최신 정보:
그들은 게임을 바꾸는 파이썬입니다. 지금 너무 너무하지 않으면 이 모듈이나 비슷한 접근 방식 을 사용하도록 수정하는 것이 더 쉬울 것입니다 .