백그라운드 프로세스를 시작할 때 쉘 프로세스 정보를 숨기는 방법은 무엇입니까?

[USER@SERVER ~] sleep 3 &
[1] 5232
[USER@SERVER ~]
[1]+  Done                    sleep 3
[USER@SERVER ~] 

이 두 메시지를 어떻게 / dev / null합니까? :

[1] 5232
[1]+  Done                    sleep 3

추신 : 그래서 프로세스의 출력이 필요하지만 언급 된 두 줄은 필요하지 않습니다!



답변

프로그램 출력이 아니며 유용한 쉘 정보입니다.

어쨌든 서브 쉘과 출력 리디렉션을 사용하여 숨길 수 있습니다

( sleep 3 & ) > /dev/null 2>&1


답변

bash 또는 zsh disown %1에서 셸을 호출 하여 작업을 잊어 버리도록 할 수 있습니다 . 그러면 쉘은 해당 작업에 대한 메시지를 인쇄하지 않으며 jobsSIGHUP을 실행 하거나 보낼 때이를 표시하지 않습니다 . zsh에서 &!대신 작업을 시작하는 것은 즉시 작업 &을 호출 disown하는 것과 같습니다 .


답변

@Gilles에 대해서는 (아직) 설명 할 수 없지만 & disownbash에서도 작동 하는 것 같습니다 .

sleep 3 & disown


답변

시험:

user@host:~$ read < <( sleep 10 & echo $! )
user@host:~$ echo $REPLY
28677

그리고 출력PID를 모두 숨겼습니다 . $ REPLY 에서 PID 를 계속 검색 할 수 있습니다.


답변