bgは、ジョブをバッググラウンドで実行する。
実際に使ってみよう。なにか時間がかかるコマンドを実行したとする。
$ cat /dev/urandom
このコマンドは思ったより実行に時間がかかるようでなかなか終了してくれない。Ctrl-Zを押してプロセスをサスペンドしてシェルに戻ろう。
[Ctrl-Z]
$
ここでbgを使うと、バックグラウンドでサスペンドされていたプロセスが実行を再開する。
$ bg
結果は悲惨なものになるだろう。そしてバックグラウンドで実行しているのでCtrl-Cも効かない。端末の実装にもよるがまともに操作できなくなるだろう。別の端末からプロセスcatをkillしてお片付けしよう。
$ kill $(ps -e | grep cat | awk '{print $1}')
やれやれひどい目にあった。
ちなみにジョブはシェルに紐付いているので、別のシェルでbgを実行しても意味がない。
$ vi
[Ctrl-Z]
$ (bg)
$ echo 意味がない
歴史的な経緯によると、bg, fg, jobsはKornShell由来なのだそうだ。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/bg.html