set + m
действительно отключает режим мониторинга (также известный как управление заданиями), но это не имеет большого эффекта, и большинство из них не являются полезными эффектами. Когда фоновое задание запускается с выключенным режимом монитора, задание не подходит для fg
и bg
, и оболочка не выполняет печать сообщения или ловушки SIGCLD, когда задание умирает, останавливается или возобновляется.
Основное полезное отличие состоит в том, что в режиме монитора конвейеры запускаются в своей собственной группе процессов . Это полезное соображение, если вы хотите убить целую группу процессов.Если режим монитора отключен, то завершение группы процессов оболочки также приводит к уничтожению ее подпроцессов, если он включен, то каждый конвейер является отдельной группой и может быть уничтожен группой независимо ..
bash-4.3$ set -m bash-4.3$ sleep 1111 & [1] 17526 bash-4.3$ set +m bash-4.3$ sleep 2222 & [2] 17527 bash-4.3$ ps -o pid,ppid,pgid,sid,cmd 17526 17527 PID PPID PGID SID CMD 17526 17525 17526 7773 sleep 1111 17527 17525 17525 7773 sleep 2222