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

백그라운드 프로세스를 시작할 때 쉘 프로세스 정보를 숨기는 방법은 무엇입니까?
[USER@SERVER ~] sleep 3 &
[1] 5232
[USER@SERVER ~] 
[1]+  Done                    sleep 3
[USER@SERVER ~] 

이 두 메시지가 포함된 /dev/null을 어떻게 얻나요? :

[1] 5232
[1]+  Done                    sleep 3

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

답변1

프로그램 출력은 아니지만 유용한 쉘 정보입니다.

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

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

답변2

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

답변3

노력하다:

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

그리고 당신은 숨겼어요산출그리고PID. 여전히 검색할 수 있습니다.PID$REPLY에서

답변4

@Gilles는 아직 댓글을 달 수 없지만 & disownbash에서도 작동하는 것 같습니다.

sleep 3 & disown

관련 정보