Что такое фоновый процесс?
Я всегда слышал о фоновых (но не настольных) процессах. Но я не понимаю, что они на самом деле. В качестве примера, пожалуйста, посмотрите на ответ по этой ссылке, в чем техническая разница между демоном, сервисом и процессом? Я цитирую здесь:
Демоны - Демон... Это процессы, которые работают в фоновом режиме и не являются интерактивными. У них нет управляющего терминала...
Каково их использование? Также есть ли какие-либо связанные команды для отображения процессов, работающих в фоновом режиме?
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 для получения более подробной информации.