터미널에서 애플리케이션을 시작한 후 애플리케이션을 자동으로 거부하려면 어떻게 해야 합니까?
예를 들어, 터미널을 시작하고 실행하면 firefox
애플리케이션이 시작되지만 터미널을 닫으면 Firefox도 닫힙니다. 터미널에서 시작된 응용 프로그램이 의도치 않게 닫히는 것을 방지하려면 먼저 앰퍼샌트를 사용하여 해당 응용 프로그램을 백그라운드에 놓을 수 있습니다. firefox &
그러면 해당 터미널의 프롬프트를 사용할 수 있는 기능도 복원됩니다. 다음으로, 애플리케이션의 프로세스 ID(PID)를 사용하여 동일한 터미널에서 애플리케이션 소유를 해제할 수 있습니다. 아래 예를 참조하세요.
$ firefox &
$ ps | grep firefox
14917 pts/6 00:00:00 firefox
$ disown 14917
이제 애플리케이션은 사용 중인 터미널과 독립적으로 실행되며, 터미널을 닫아도 더 이상 애플리케이션이 종료되지 않습니다.
하지만 애플리케이션을 시작할 때마다 이 작업을 어떻게 자동으로 수행할 수 있습니까?
답변1
가장 간단한 방법은 다음을 실행하는 것입니다.
daemon firefox
터미널 자체를 계속 사용/닫을 수 있습니다
답변2
편집:더 나은 답변IV에서 제공되었습니다.
이 작업을 자동으로 수행하려면 bash 별칭을 사용할 수 있습니다. 홈 디렉토리의 .bash_aliases 파일에 다음 행을 추가하면 my_application
다음 명령을 사용하여 터미널에서 모든 애플리케이션을 자동으로 백그라운드에 배치한 후 해당 터미널에서 소유를 취소 할 수 있습니다 s my_application
.
# start programs from shell but immediately disown them
startAndDisown() {
$1 & disown $!
}
alias s=startAndDisown
$!
마지막 비동기 작업의 PID를 자동으로 반환합니다 .
답변3
firefox & disown $!
나에게는 효과가 없지만 나에게 맞는 비슷한 솔루션은 다음과 같습니다.firefox&;disown
관련되지 않은 또 다른 솔루션은 disown
GNU Screen을 사용하는 것입니다. 터미널 창을 닫아도 터미널 세션이 유지됩니다. 그러나 실용성은 터미널을 사용하는 방법에 따라 제한됩니다. 한 번에 하나의 터미널 창만 사용하는 경우 이는 훌륭한 솔루션입니다. 더 많은 터미널을 사용하면 그 수가 줄어듭니다. 즐겨 사용하는 패키지 관리자를 사용하여 화면을 설치한 다음 터미널 유형을 열 때마다 screen -r
(또는 screen
실행 중인 화면 세션이 없는 경우) 그러면 터미널을 닫는 것에 대해 걱정할 필요가 없습니다. 이것은 매우 틈새 솔루션이지만 귀하에게 적합할 수 있습니다.