실행 중인 프로세스에 SIGHUP을 무시하도록 지시하려면 어떻게 해야 합니까? [복사]

실행 중인 프로세스에 SIGHUP을 무시하도록 지시하려면 어떻게 해야 합니까? [복사]

중복 가능성:
실행 중인 명령을 종료하지 않고 터미널을 닫으려면 어떻게 해야 합니까?

나는 가끔 SSH를 통해 액세스하는 Debian Squeeze를 실행하는 저가형 "서버"를 가지고 있습니다. 시스템이 느린 경향이 있습니다. 예를 들어 apt-cache search실행하는 데 30분 정도 걸릴 수 있습니다. 때로는 프로세스가 완료될 때까지 기다릴 수 없다는 것을 알게 됩니다(노트북을 사용 중이어서 다른 곳으로 가야 합니다).

nohupscreen처음 에 . 그런데 로그아웃하더라도 이미 실행 중인 프로세스를 계속 실행하려면 어떻게 해야 합니까?

답변1

bash, ksh, zsh 또는 기타 유사한 셸을 사용한다고 가정하면 프로세스를 백그라운드에 두고 실행할 수 있습니다 disown. 특히 bash다음을 원할 수도 있습니다 disown -h.

Bash 도움말 페이지에서 disown:

disown: disown [-h] [-ar] [jobspec ...]
    Remove jobs from current shell.

    Removes each JOBSPEC argument from the table of active jobs.  Without
    any JOBSPECs, the shell uses its notion of the current job.

    Options:
      -a        remove all jobs if JOBSPEC is not supplied
      -h        mark each JOBSPEC so that SIGHUP is not sent to the job if the
        shell receives a SIGHUP
      -r        remove only running jobs

    Exit Status:
    Returns success unless an invalid option or JOBSPEC is given.

답변2

disownBash 또는 zsh를 사용하는 경우 로그아웃하기 전에 내장 명령을 사용하세요.

에서 man zshall:

   disown [ job ... ]
   job ... &|
   job ... &!
          Remove the specified jobs from the job table; the shell will  no
          longer  report their status, and will not complain if you try to
          exit an interactive shell with them running or stopped.   If  no
          job is specified, disown the current job.

관련 정보