什么是后台进程?

什么是后台进程?

我一直听说过后台(但不是桌面后台)进程。但我不明白它们到底是什么。作为示例,请查看此链接的答案守护进程、服务和进程之间的技术区别是什么?我在此引用:

守护进程 - 守护进程...它们是在 背景并且不是交互式的。它们没有控制终端……

它们有什么用途?还有没有相关命令可以显示后台运行的进程?

答案1

简单的定义是未连接到活动终端或显示器的过程...但有多种方法可以实现这一点:

  • 我们认为的大多数后台进程都是系统服务。这些进程通常由高级 init 守护进程(Upstart、Systemd 等)启动,并且通常保留为该守护进程的子进程。它的输出将由 init 守护进程保留,以用于日志记录目的。

  • 分离进程是指将进程的父进程更改为 PID=0,/sbin/init这意味着即使您关闭终端或 X 会话,该进程仍将保留(只要它不依赖于其他事物 — — 比如 X 会话)。有很多方法可以实现这一点除非另行重定向,否则在解除关联的进程的终端死亡后,其输出不会发生任何变化。

    需要注意的是,脱离并不一定意味着背景但是如果当前终端死亡,该过程将自动被视为“在后台”,因为它无法管理其 IO。

  • 然后,虚拟 shell 本身可以在后台运行,并为您“保持”活动进程打开。可能是最好的例子。 它允许您断开连接并重新连接到各种终端会话,如果您需要在服务器上保留终端工作流(或无限期地运行带有输出的程序,如IRC 客户端),screen这将非常方便。irssi

  • 最后,还有 shell 定义。许多 shell(命令行界面,如 Bash)允许您将进程置于后台。这仅仅意味着 IO 文件 STDOUT、STDIN 和 STDERR 与当前终端断开连接。进程继续在自己的线程中运行,并为您提供另一个提示。进程不是自动解除关联,因此如果 Bash 会话关闭,其所有后台任务也会关闭。这是一个使用 Bash 的简单示例

答案2

后台意味着系统上运行的进程在桌面上不可见(即,它不必在桌面上打开应用程序)。

查看所有进程的命令称为“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                          

用于查看进程的流行程序有tophtop

您可以使用此列表从命令行终止进程。

系统监视器可以用来查看后台任务:

在此处输入图片描述

答案3

后台进程是“幕后”(即在后台)运行且无需用户干预的计算机进程。这些进程的典型任务包括日志记录、系统监控、调度和用户通知。

从命令行,可以使用&操作员。该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现在您可以在命令运行时在终端中输入其他命令。

来源

答案4

后台进程只是在后台独立运行的进程,不会影响任何前台进程。

您可以参考:http://cs.brown.edu/courses/bridge/1998/res/UnixGuide.html更多细节。

相关内容