Что такое фоновый процесс?

Я всегда слышал о фоновых (но не настольных) процессах. Но я не понимаю, что они на самом деле. В качестве примера, пожалуйста, посмотрите на ответ по этой ссылке, в чем техническая разница между демоном, сервисом и процессом? Я цитирую здесь:

Демоны - Демон... Это процессы, которые работают в фоновом режиме и не являются интерактивными. У них нет управляющего терминала...

Каково их использование? Также есть ли какие-либо связанные команды для отображения процессов, работающих в фоновом режиме?

4 ответа

Решение

Простое определение - это процесс, который не связан с активным терминалом или дисплеем... Но есть несколько способов добиться этого:

  • Большинство из того, что мы считаем фоновыми процессами, являются системными службами. Они часто запускаются высокоуровневым демоном инициализации (Upstart, Systemd и т. Д.) И обычно остаются дочерними для этого демона. Его выходные данные будут запрашиваться демоном init для регистрации.

  • В разрозненном процессе вы меняете родителя процесса на PID=0, /sbin/init, Это означает, что даже если вы закроете свой терминал или сеанс X, процесс останется (до тех пор, пока он не зависит от других вещей - например, сеанс X). Есть много способов сделать это. Если иное не перенаправлено, ничего не происходит с выходом диссоциированных процессов после того, как их терминал умирает.

    Важно отметить, что отсоединение не обязательно означает фон, но если текущий терминал умирает, процесс автоматически считается "в фоновом режиме", потому что у него нет никакого способа управлять своим IO.

  • Тогда есть виртуальные оболочки, которые сами могут работать в фоновом режиме и "держать" ваши активные процессы открытыми для вас. screen Вероятно, лучший пример этого. Это позволяет вам отключать и повторно подключаться к различным сеансам терминала, что удобно, если вам нужно сохранить рабочий процесс терминала на сервере (или запустить что-то с выводом на неопределенный срок, например, irssiклиент IRC).

  • Наконец, есть определение оболочки. Многие оболочки (интерфейсы командной строки, такие как Bash) позволяют вам задокументировать процесс. Это просто означает, что файлы ввода-вывода STDOUT, STDIN и STDERR отключены от текущего терминала. Процесс продолжает работать в своем собственном потоке, и вам выдается другое приглашение. Процесс не отключается автоматически, поэтому, если сеанс Bash закрывается, выполняйте все его фоновые задачи. Вот простой пример с Bash.

Фон означает, что в вашей системе запущен процесс, который не виден на рабочем столе (т. Е. Ему не нужно открывать приложение на рабочем столе).

Команда для просмотра ВСЕХ процессов называется 'ps'. Пример с ps -ef:

 ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 apr10 ?        00:00:02 /sbin/init
root         2     0  0 apr10 ?        00:00:00 [kthreadd]
root         3     2  0 apr10 ?        00:00:07 [ksoftirqd/0]
root         5     2  0 apr10 ?        00:00:00 [kworker/0:0H]
root         7     2  0 apr10 ?        00:00:33 [rcu_sched]
root         8     2  0 apr10 ?        00:00:00 [rcu_bh]
root         9     2  0 apr10 ?        00:00:01 [migration/0]
root        10     2  0 apr10 ?        00:00:02 [watchdog/0]
root        11     2  0 apr10 ?        00:00:02 [watchdog/1]
root        12     2  0 apr10 ?        00:00:01 [migration/1]
root        13     2  0 apr10 ?        00:00:07 [ksoftirqd/1]
root        15     2  0 apr10 ?        00:00:00 [kworker/1:0H]

Это намного дольше. Если вы хотите найти хром, например, вы можете сделать ps -ef | grep chromium вот так:

ps -ef |grep chrom
xxxxxx    2874  1207  0 apr10 ?        00:54:28 /usr/lib/chromium-browser/chromium-browser --enable-pinch
xxxxxx    2880  2874  0 apr10 ?        00:00:04 /usr/lib/chromium-browser/chromium-browser --enable-pinch
xxxxxx    2881  2874  0 apr10 ?        00:00:00 /usr/lib/chromium-browser/chrome-sandbox /usr/lib/chromium-browser/chromium-browser --type=zygote
xxxxxx    2882  2881  0 apr10 ?        00:00:00 chromium-browser --type=zygote                          
xxxxxx    2888  2882  0 apr10 ?        00:00:00 chromium-browser --type=zygote                          

Популярные программы для просмотра процессов top а также htop,

Вы можете использовать этот список, чтобы убить процесс из командной строки.

Системный монитор можно использовать для просмотра фоновых задач:

введите описание изображения здесь

Фоновый процесс - это компьютерный процесс, который выполняется "за кадром" (т.е. в фоновом режиме) и без вмешательства пользователя. Типичные задачи для этих процессов включают ведение журнала, мониторинг системы, планирование и уведомление пользователя.

Из командной строки можно запустить фоновый процесс с помощью оператора &. bg Утилита может возобновить приостановленную работу, запустив ее в фоновом режиме. С использованием fg Утилита свяжет фоновый процесс со своим родительским терминалом, выведя его на передний план. jobs Утилита выведет список всех процессов, связанных с текущим терминалом, и может быть использована для вывода фоновых процессов на передний план.

  • Пример:

    Чтобы отправить запущенный процесс (запущенный в терминале) в фоновый режим, просто нажмите Ctrl+z и вызовите bg команда:

    sylvain@sylvain-ThinkPad-T430s:~$ sleep 50
    ^Z
    [1]+  Stopped                 sleep 50
    sylvain@sylvain-ThinkPad-T430s:~$ bg
    [1]+ sleep 50 &
    

    Теперь вы можете вводить другие команды в вашем терминале, пока sleep команда работает.

Источник

Фоновый процесс - это просто процесс, который выполняется независимо от фона и не влияет ни на один из процессов переднего плана.

Вы можете обратиться: http://cs.brown.edu/courses/bridge/1998/res/UnixGuide.html для получения более подробной информации.

Другие вопросы по тегам