Каковы преимущества работы приложений в фоновом режиме?

Каковы преимущества работы приложений в фоновом режиме?

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

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

решение1

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

Задания, работающие в фоновом режиме, обрабатываются так же, как и задания, работающие в активном режиме, за исключением того, что их 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чтобы сделать поведением по умолчанию.

решение2

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

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

Связанный контент