&コマンドの後の「完了」メッセージはすぐには表示されず、ユーザー操作の後に表示されます。なぜ?

&コマンドの後の「完了」メッセージはすぐには表示されず、ユーザー操作の後に表示されます。なぜ?

タスクを実行しましたが、sleep 3 &「完了」メッセージがpsコンソールではなくコマンドの一部として表示されました。必ずしもそうではありませんps。完了するすべてのコマンドは、sleep最後に「完了」メッセージとともに追加の行があります。なぜそんなことですか?

オペレーティングシステムはcentos-7.0で、vagrant経由でダウンロードされます。

[vagrant@localhost ~]$ sleep 3 &
[1] 2838
[vagrant@localhost ~]$ ps
  PID TTY          TIME CMD
 1871 pts/0    00:00:00 bash
 2838 pts/0    00:00:00 sleep
 2840 pts/0    00:00:00 ps
[vagrant@localhost ~]$ ps
  PID TTY          TIME CMD
 1871 pts/0    00:00:00 bash
 2841 pts/0    00:00:00 ps
[1]+  Done                    sleep 3
[vagrant@localhost ~]$

これにより、ls > ls.txt「完了」メッセージがファイルに移動しなくなります。コンソールに表示されます。 3秒後にEnterを押すとメッセージが表示されます。一種のキャッシュにありますか?どうしたの?

ベストアンサー1

man bash説明する:

   The  shell  learns immediately whenever a job changes state.  Normally,
   bash waits until it is about to print a prompt before reporting changes
   in  a  job's status so as to not interrupt any other output.  If the -b
   option to the set builtin command is enabled, bash reports such changes
   immediately.   Any  trap  on  SIGCHLD  is  executed for each child that
   exits.

おすすめ記事