バックグラウンドプロセスを開始するときにシェルプロセス情報を隠す方法は?

バックグラウンドプロセスを開始するときにシェルプロセス情報を隠す方法は?
[USER@SERVER ~] sleep 3 &
[1] 5232
[USER@SERVER ~] 
[1]+  Done                    sleep 3
[USER@SERVER ~] 

これら2つのメッセージを含む/ dev / nullをどのように取得しますか? :

[1] 5232
[1]+  Done                    sleep 3

PS:したがって、プロセスの出力が必要ですが、言及された2行は必要ありません!

答え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

関連情報