我正在学习 Redhat Linux 7,主题是监视和管理 Linux 进程,我了解 Processess 及其命令。但我不明白“控制作业”和在后台运行作业及其实用的后台和前台进程。您能为我们解释一下这个术语吗?
答案1
从交互式 shell 发出的大多数命令都运行在前景。这基本上意味着您必须等待执行的命令(或 processus )停止才能执行其他操作。对于长/复杂的程序或脚本,另一种方法是在背景。这意味着您可以在长程序执行时继续工作。
&
命令末尾的& 符号可以实现此目的。您还可以使用 ctrl-Z 暂停前台命令并将其与该命令一起放入后台bg
。此后您可以管理这些后台任务(jobs
命令)、杀死它们等。
请注意,后台命令是不是与您的 tty 分离:在某些情况下,后台命令可能会等待用户输入(请参阅fg
将作业带回前台的命令)。如果您结束终端会话(通过关闭终端、注销、关机等),后台作业也可能被终止(nohup
更多详细信息,请参阅 参考资料)。
答案2
简单来说,
您启动的每个进程都在前台运行。它从键盘获取输入并将输出发送到屏幕。
$ls ch*.doc
列出当前目录中的所有文件,
后台进程在不连接到键盘的情况下运行。如果后台进程需要任何键盘输入,它就会等待。在后台运行进程的优点是您可以运行其他命令;您不必等到它完成才能开始另一个!
启动后台进程的最简单方法是在命令末尾添加与号 (&)。
$ls ch*.doc &
下面的一些链接会对您有所帮助
https://stackoverflow.com/questions/8938058/background-process-vs-foreground-process
http://linux.about.com/cs/linux101/a/multitasking.htm
https://stackoverflow.com/questions/6573249/difference- Between-foreground-job-and-background-job
答案3
&
通过在末尾添加来在后台运行程序就像在 Windows 或 Mac 中运行最小化的应用程序一样。并且使用该fg
命令就像将其恢复回桌面一样。
ctrl+z
相比之下,当程序正在运行时按下将暂停其执行。这意味着它将停止完成正在执行的操作并发送到后台。
此外,这些程序与您当前的会话相关联,因此如果您退出终端,所有在后台运行或暂停的程序也将结束。