답변:
"완료"메시지는 셸이 작업 제어하에 여전히 명령을 가지고 있기 때문입니다.
$ sleep 10 &
[1] 660
$ jobs
[1]+ Running sleep 10 &
(time passes)
$
[1]+ Done sleep 10
작업 제어에서 모든 작업을 간단히 제거 할 수 있습니다. disown
(에이)
$ sleep 100 &
[1] 3804
$ jobs
[1]+ Running sleep 100 &
$ disown
$ jobs
$
시작과 함께 직업을 부인할 수있는 방법을 모르겠습니다. (비) , 그래서 나는 당신이 단순히 disown
소리 명령 직후 bashrc에. 그러나 이것은 모든 직업을 부인할 것입니다 - 이것이 필요한지 나는 모른다. 그렇지 않으면 다음을 사용할 수 있습니다. disown %aplay
.
(에이) man bash
disown [-ar] [-h] [jobspec ...] 옵션이 없으면 각 작업 스펙이 활성 작업 테이블에서 제거됩니다. jobspec이없고 -a 또는 -r도없는 경우 가 제공되면 현재 작업에 대한 쉘의 개념이 사용됩니다. -h 옵션이 주어지면 각 jobspec은에서 제거되지 않습니다. 쉘이 SIGHUP을 수신하면 SIGHUP이 작업으로 전송되지 않도록 표시되어 있습니다. jobspec이없는 경우, -a 또는 -r 옵션이 제공되지 않으면 현재 작업이 사용됩니다. jobspec이 제공되지 않으면, -a 옵션 모든 작업을 제거하거나 표시하는 것을 의미합니다. jobspec 인수가없는 -r 옵션은 작업을 실행중인 작업으로 제한합니다. 그만큼 jobspec이 유효한 작업을 지정하지 않은 경우 반환 값은 0입니다.
(b) 그러나, Z 쉘 zsh
이것은 쉽다:
zsh$ sleep 10 &!
zsh$ jobs
zsh$
(sleep 10 &)
자주 사용되는 해결 방법입니다.setsid sleep 10
요구 사항에 따라 다른 것입니다.&
그것은 또한 제어 tty에서 분리됩니다).