タスクを実行しましたが、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.