Что является преимуществом (-ами) запуска приложений в backgound?

Я действительно не знаю, каковы преимущества запуска приложений в фоновом режиме.
Что-то вроде Application & via command line.

Почему именно мы запускаем приложения в фоновом режиме и когда я должен это делать?

Обычно приложения, которые занимают слишком много времени, чтобы выполнить и дозировать, требуют взаимодействия с пользователем, отправляются на задний план, чтобы мы могли продолжить работу в терминале.

Задания, выполняющиеся в фоновом режиме, обрабатываются так же, как задания, выполняемые на переднем плане, за исключением того, что их STDOUT, STDIN и STDERR.

Если у вас есть работа, которая занимает слишком много времени, например сжатие или резервное копирование файлов, вы можете отправить эти задания в фоновом режиме.

Вы можете перечислить задания, выполняемые в фоновом режиме с помощью команды jobs .

 $ ./job1.sh & [1] 9747 $ ./job2.sh & [2] 9749 $ ./job3.sh & [3] 9751 $ jobs [1] Running ./job1.sh & [2]- Running ./job2.sh & [3]+ Running ./job3.sh & 

Здесь всякий раз, когда задание отправляется в фоновый режим, отображается job id и pid процесса. Если мы хотим, чтобы процесс возвращался на передний план, мы можем использовать команду fg чтобы вернуть ее.

 $ fg 1 ./job1.sh 

Но имейте в виду, что при закрытии терминала (оболочки) SIGHUP будет отправляться во весь фоновый процесс, который генерируется из оболочки, заставляя эти процессы умирать. Чтобы этого избежать, вы можете использовать команду disown чтобы удалить этот процесс из таблицы заданий и тем самым предотвратить процесс от убийства.

одним из лучших способов является запуск фонового процесса с помощью команды nohup чтобы сигналы SIGHUP не убивали процесс, и он будет безопасным в фоновом режиме.

Предотвращение отправки SIGHUP дочерним процессам (задания bg) также можно предотвратить, установив опцию huponexit оболочки bash.

 $ shopt -s huponexit 

Этот параметр устанавливается по умолчанию в последних версиях Bash, но если он не установлен, мы можем добавить это в ~/.bashrc чтобы сделать его поведением по умолчанию.

Если вы выполните нужное приложение – скажем, 5 минут до конца, например, задание на копирование – оболочка заблокирована во время работы программы, целых 5 минут. Затем задание копирования находится в так называемой группе процессов переднего плана, обозначенной знаком + в ps . Возможно, вам понадобится выполнить еще одну работу за 5 минут, но оболочка заблокирована.

С другой стороны, когда вы выполняете задание на копирование в фоновом режиме ( cp source target & ), ваше задание выполняется в фоновом режиме без блокировки текущей оболочки. Вы можете продолжать с другими вещами. Вы можете вернуть процесс на передний план с помощью fg если хотите.