응용 프로그램의 프로세스 이름을 어떻게 확인합니까?


13

이것은 상황이다 :

Unity Quick List 편집기 (다음 버전)에서 작업하면서 런처 아이콘을 "다시 시작"하는 안정적인 방법을 추가하고 싶습니다. 이렇게하려면 아이콘을 제거하고 (설정 편집) 같은 위치에 교체해야합니다. 지금까지 아무런 문제가 없습니다. 그러나 해당 응용 프로그램이 실행중인 경우 아이콘이 실행기에서 제거되면 응용 프로그램이 종료되므로 사용자가 데이터를 잃을 수 있습니다. 내가 필요로하는 응용 프로그램이 실행중인 경우 실행중인 프로세스의 목록에서 편집기 체크를하게하고, 아이콘을 다시 시작할 수 없음을 사용자에게 경고 메시지를 보내는 응용 프로그램의 프로세스 이름을 찾을 수있는 신뢰할 수있는 방법입니다 경우 응용 프로그램이 달리는.

내가 지금까지 한 일은 편집기가 데스크탑 파일을보고 명령을 읽고 디렉토리 섹션에서 제거한 명령을 읽고 데스크탑 파일 명령이 참조 할 수있는 원격 스크립트를 찾아 문자열 시작을 찾는 것입니다. "./"

이 방법은 내가 테스트 한 모든 응용 프로그램에서 잘 작동하는 것처럼 보이지만 문제를 "모두 하나로"다루는 더 쉬운 방법이 있어야한다는 느낌이 듭니다.

있습니까?

더 뛰어난 상황을 포착하기위한 제안도 환영합니다!


실행기에서 아이콘을 제거하면 응용 프로그램이 종료되는 이유는 무엇입니까? 종료 런처는 아이콘이 제거됩니다에 고정되지 않은 응용 프로그램을하지만, 왜 아이콘이 응용 프로그램을 종료 제거하는 것?
Eliah Kagan

@Eliah : 종료는 아마도 올바른 표현이 아니며, 응용 프로그램은 단순히 충돌합니다 ....
Jacob Vlijm

@JacobVlijm 그래서 이것은 유니티 고유의 권리입니까? 유니티에는 이미 그 메커니즘이 있습니다. 요구 사항은 무엇입니까? psxprop출력 에서 와 동일한 프로세스 이름 만 알고 있습니까?
Sergiy Kolodyazhnyy

@Serg .desktop파일 에서 "계산 된"프로세스 이름이며 반드시 WM_CLASS 일 필요는 없습니다. 응용 프로그램 내에서 WM_CLASS를 설정할 수 있습니다.
Jacob Vlijm

@JacobVlijm ah, 시작 firefox.desktop했다고 가정하면 PID 1234로 firefox 를 시작 하지만 WM_CLASS'Totally Not Firefox'와 같은 것으로 변경되었습니다 . .desktop파일은 그러나 변경되지 않습니다. 에 관계없이 PID 1234에 이름을 첨부하려고합니다 WM_CLASS. 무엇을해야하는지 정확히 알 것 같습니다. 그러나 당신은 내 첫 번째 질문에 대답하지 않았습니다-그것이 Unity에만 해당된다면 괜찮습니까?
Sergiy Kolodyazhnyy

답변:


3

일반적인 경우에는이를 해결할 방법이 없습니다. 어떤 메커니즘을 사용하더라도 프로세스를 추적하기 위해 프로세스가 처음 시작되는 방식을 수정하지 않으면 항상 프로세스를 작성하는 것이 가능할 것으로 생각합니다.

Upstart는 데몬이 여전히 실행 중인지 추적하기 위해 정확히 동일한 문제를 처리해야하며 upstart 작업 작성자는 upstart가 추적 할 세부 사항 (포크 수)을 지정해야합니다. upstart가 도움 없이는 그것을 관리 할 수 ​​없다는 것을 감안할 때, 나는 당신도 할 수 있다고 생각하지 않습니다. 그리고 upstart는 프로세스가 시작되는 방식을 제어하기 때문에 귀하가 여기에 있다고 생각하지 않습니다.

최선을 다하고 있다고 생각합니다. 보고 /proc/<pid>/stat및 것은 /proc/<pid>/cmdline합리적 일반적인 방법이지만, 여전히 모든 경우를 잡을 수 없습니다. pgrep명령은이 랩합니다. 이미 사용하지 않는 경우 pgrep는 한 번 봐 걸릴 pgrep을 맨 당신에 대해 일치 수있는 일의 옵션을.

모든 것을 말했지만, 나는 당신이 처음부터 이것을 정말로해야한다고 확신하지 않습니다. 프로세스를 추적 할 수 없다면 Unity가 어떻게 할 수 있는지 알 수 없습니다. 우선 응용 프로그램 충돌을 제거하는 것이 더 좋은 방법이 아닐까요? 설명 한대로 해결하려고 시도하는 대신 응용 프로그램이 충돌하는 이유 (확실히 버그입니까?)에 대해 자세히 살펴 보겠습니다. 이것이 DBus를 통해 추가 기능을 위해 Unity를 다시 호출하는 Unity 인식 응용 프로그램에만 영향을 미치는지 궁금합니다 .


철저한 답변 감사합니다! 세부 사항 (특히 마지막 단락)을 살펴보고 100 % 오염을 찾을 수없는 경우 아이콘 "재시작"기능을 "실험"옵션으로 제공 할 것입니다. 좋은 소식은 그동안 내가 사용한 방법에 대한 예외를 발견하지 못했다는 것입니다. 다시 한번 감사합니다!
Jacob Vlijm

1

xprop명령 (관련 응용 프로그램 창으로 고도 탭 다음은, 다음 창을 한 번 클릭) 나를 위해 트릭을 할 것으로 보인다.


WM_CLASS종종 프로세스 이름과 일치하지만 항상 그런 것은 아닙니다. 창을 정의 (코딩)하면 WM_CLASS원하는대로 줄 수 있습니다 . 다른 프로세스에서 실행되는 창을 하나의 실행기 아이콘으로 그룹화하는 것도 나 자신도 했었습니다.
Jacob Vlijm

오. 부끄러운 일입니다. 마지막에 고지 사항을 추가 할 가치가있었습니다. 그것은 실제로 운영 체제에 내장 될 것으로 예상되는 기능이며 어떻게 해야할지 모릅니다. 최소한 "정보"의 정보를 기대합니다.
el_gallo_azul
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.