리눅스에서 : 프로그램을 종료하지만 죽이지 않는 방법?


5

나는 우분투 10.10을 사용하며 파이썬 프로그램 ( Mnemosyne ) 나는 데이터 파일을 사용하여 동기화 드롭 박스 . 다음은 내 문제 시나리오입니다. 나는 프로그램을 집에서 운영하고 일하러 떠나지 만 직장에서 프로그램을 열고 그것에 대해 작업하면 데이터 파일이 변경되고 나가면 종료 할 때 집에서 진행이 느슨해집니다 (자동 저장).

나는 매일 아침 자동으로 Mnemosyne를 닫기 위해 cron 작업을 만들 수 있다고 생각했다. 그렇지 않으면 기억하고있다. 그러나 내가 kill을 사용하면 데이터 파일을 저장하지 않고 종료되는 프로그램을 종료하고 tmp 파일과 오류 메시지로 끝난다. 다시 시작할 때. 파일을 & gt; 종료 메뉴 옵션을 클릭하여 나를 에뮬레이션하는이 프로그램에 exit 신호를 보내는 더 좋은 방법이 있습니까?


어떻게 그것을 죽입니까? kill <program name>?
Ignacio Vazquez-Abrams

쉘 (cli 앱 인 경우) 또는 노매 (nomi) 세션에서 프로그램을 실행하는 방법 (gui (?
Journeyman Geek

네, 프로세스 ID를 찾아서 프로세스 ID를 사용하여 죽이고 죽 이도록합니다.
biomed

kill - 15 appNameHere 그것을 보내야한다. SIGTERM 신호, 만약 내가 옳다면, 프로그램 종료를 요구한다. 제대로 동작한다면 종료 전에 정상적인 정리 / 저장 루틴을 실행해야합니다.
Bobby

답변:



4

설명에 의하면, X 서버에서 실행되는 GUI 프로그램이라고 가정합니다. 시험 wmctrl :

wmctrl -c "RegEx for Window Name"

man 페이지에서 : -c <WIN> Close the window <WIN> gracefully.



2

mnemosyne에 man 페이지가 있습니까? 아마도 cron 작업에서 사용할 수있는 문서에 긴밀한 명령이있을 것입니다.


아니오 남자는 이것을하는 어떤 방법을 진술하지 않는다.
biomed

1

이에 대한 정답은 프로그램이 지원하는 것에 달려 있습니다. 잘 작동하는 프로그램은 모든 작업을 저장하고 kill에서 기본값 인 TERM 신호를 수신 할 때 우아하게 종료해야합니다. 그래서 나는 그것이 여러분이 시도한 프로그램이라고 가정합니다. 프로그램이이를 허용하지 않고 다른 방법을 제공하지 않으면 (예 : 제어 소켓을 통해), 운이 좋지 않을 수 있습니다. 이 경우 화면 세션을 사용하거나 프로그램을 수정하거나 다른 프로그램 세션을 사용하십시오.


1

이는 응용 프로그램에 따라 크게 달라집니다. 만약 mnemosyne의 저자가 이러한 상황을 예견하지 못하고 특별히 "신호 X 수신시 저장하고 종료"하는 행동을 만든다면,이를 달성하기 위해 사용자 인터페이스를 조작해야 할 필요가 거의 없습니다.

그러나 이미 제안 된 바와 같이 더 나은 해결책은 아마도 어떤 형태의 디스플레이 공유 유틸리티에서 mnemosyne를 실행하여 재부팅 할 때마다 두 위치에서 동일한 세션에 액세스 할 수 있기 때문입니다. VNC는 내가 가장 잘 알고있는 GUI 데스크탑 공유 옵션이지만, X를 응용 프로그램 수준에서 (전체 데스크탑과 반대되는) 할 수있게하는 방법이있을 것입니다. 요즘에는 다른 많은 옵션이 있습니다. 그것은 당신을 위해 더 잘 작동 할 수 있습니다.

커맨드 라인 앱이라면, screen 훌륭하게 작동합니다. (저는이 목적을 위해 매일 사용합니다. mutt 여러 위치에서),하지만 나는 그것이 GUI 응용 프로그램 (man 페이지는 "GUI"또는 "X"를 참조하지 않는 것으로 보입니다)을 처리한다고 생각하지 않습니다.


1

일반적으로 프로그램을 종료하는 유일한 방법은 신호입니다. 다른 사람들이 말했듯이, 디폴트 kill (SIGTERM을 보낸다)에 잘 응답하지 않는다면, 다른 시그널에 대해서도 적절한 핸들러를 가질 가능성이 없다. '더 친절한'신호가 없습니다. SIGKILL을 제외한 모든 시그널은 프로세스를 동일하게 처리하고, 핸들러를 가지고 있다면 핸들러를 실행하거나, 어플리케이션을 죽인다.

즉, GUI 응용 프로그램으로, 그것은 당신이 응용 프로그램을 제어 할 수있는 도서관에 연결되는 아주 작은 기회입니다. dcop 또는 d-bus를 사용하여 메시지를 보낼 수 있는지 확인할 수 있습니다. 만나다 http://dbus.freedesktop.org/doc/dbus-tutorial.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.