我一直听说过后台(但不是桌面后台)进程。但我不明白它们到底是什么。作为示例,请查看此链接的答案守护进程、服务和进程之间的技术区别是什么?我在此引用:
守护进程 - 守护进程...它们是在 背景并且不是交互式的。它们没有控制终端……
它们有什么用途?还有没有相关命令可以显示后台运行的进程?
答案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
用于查看进程的流行程序有top
和htop
。
您可以使用此列表从命令行终止进程。
系统监视器可以用来查看后台任务:
答案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更多细节。