Dmenu에서 시작된 일부 프로그램은 실행 후 즉시 종료됩니다.

Dmenu에서 시작된 일부 프로그램은 실행 후 즉시 종료됩니다.

dmenu를 사용하여 vimb라는 웹 브라우저를 시작하려고 하는데 먼저 tabbed라는 프로그램을 통해 실행하려고 해서 이 질문을 씁니다. 맥락상 vimb는 제가 가장 좋아하는 최소 브라우저이지만 기본적으로 탭을 지원하지 않습니다. 이렇게 하려면 tabbed라는 두 번째 애플리케이션을 통해 실행해야 합니다. 일반 터미널 인스턴스에서는 다음과 같이 잘 작동합니다.

tabbed vimb -e

하지만 dmenu를 사용하여 동일한 명령을 실행하면 즉시 창이 열리고 닫힙니다.

참고로 이렇게 하면 일부 스크립트(dmenu도 사용)가 엉망이 됩니다. 예를 들어, 내 구성을 나열하는 사용자 정의 스크립트가 있고 그 중 하나를 선택하여 새로운 터미널 인스턴스를 열고 편집할 수 있습니다. 이 스크립트는 dmenu에서 위 명령을 실행할 때 비슷한 동작을 경험합니다. 이 경우 터미널 인스턴스를 열었지만 즉시 닫습니다.

시스템 어디에서 무슨 일이 일어나고 있는지 확인할 수 있는지 모르겠습니다. 땅을 파는 것도 /var/logs나에게 별로 도움이 되지 않습니다.

여기 계신 분 중에 이 문제를 어디서부터 해결해야 하는지 아시는 분 계신가요? 오래 전에 다른 창 관리자에서 같은 문제가 있었던 것을 기억하므로 이것이 사실이라고 생각하지 않습니다. 하지만 모두가 어떻게 생각하는지 알고 싶습니다.

고쳐 쓰다:그래서 내가 보지 못하는 어떤 종류의 오류가 발생하는지 궁금합니다. 그래서 dmenu에서 다음을 실행했습니다.

tabbed vimb -e >> ~/.foo

그냥...효과가 있었어. 왜 이런 일이 발생하는지 설명할 수 있는 사람이 있나요?

답변1

무슨 일이 일어나고 있는지 나타나는 것은 명령이 셸에서 실행되고, 셸이 명령을 실행한 후에 응용 프로그램이 종료된다는 것입니다. '&'는 쉘이 정상적으로 존재할 때 프로세스가 종료되지 않도록 프로세스를 백그라운드에 두도록 쉘에 지시합니다.

계속 실행되지 않는 작업(설정 전환, 볼륨 변경 등)에는 이 작업을 수행할 필요가 없습니다. 또는 자체 악마화하거나 이미 Chromium처럼 동작하는 것을 감지할 수 있는 애플리케이션의 경우입니다.

이 문제:nohup, disown, &의 차이점

"&" 작동 방식과 셸에서의 작업 제어에 대한 자세한 내용입니다. 쉘에서 일부 테스트도 가능해야 합니다.

tabbed vimb -e

그런 다음 동일한 셸에서 Ctrl + c를 입력하면 프롬프트가 표시되지 않고 창이 닫히고 새 프롬프트가 표시됩니다.

이제 다음을 입력해 보세요.

tabbed vimb -e &

새로운 쉘 프롬프트가 표시되어야 하며, 쉘을 종료해도 브라우저는 종료되지 않습니다.

(일부 쉘(예: zsh)은 bash와 다르게 '&'를 처리합니다.)

관련 정보