什么是后台进程?

Moh*_*ani 3 command-line process background-process

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

守护进程 - 守护进程……它们是在后台运行且不具有交互性的进程 。他们没有控制终端...

它们的用途是什么?还有任何相关的命令来显示在后台运行的进程吗?

Oli*_*Oli 8

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

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

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

    重要的是要注意,解除关联并不一定意味着后台,但如果当前终端死机,则该进程会自动被视为“在后台”,因为它无法管理其 IO。

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

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


Rin*_*ind 6

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

查看所有进程的命令称为“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]
Run Code Online (Sandbox Code Playgroud)

时间长了很多。例如,如果你想找到铬,你可以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                          
Run Code Online (Sandbox Code Playgroud)

查看进程的流行程序是tophtop

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

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

在此处输入图片说明