Kali Linux 中的后台进程到底有什么作用?

Kali Linux 中的后台进程到底有什么作用?

语境


我已经检查了有关同一主题的几个问题,但当他们解释后台进程到底是什么时,我仍然感到困惑。我解释的常见答案是:

在后台运行的进程允许您与同一终端交互......等等。

我已经通过运行以下命令对此进行了测试:

  • ping google.com -c 100 &
  • PS:我也在没有操作符的情况下运行了相同的命令&并使用了 Ctrl-Z,但所做的只是暂停命令

问题


当我运行此命令时,输出仍在我的主终端中,并且在该命令完成运行或终止该命令之前我无法执行任何其他命令。

在列出我的问题之前,我的问题不是如何将命令的输出重定向到单独的文件/位置。我已经知道如何将ping google.com -c 100命令的输出重定向到不同的位置,以便我仍然可以与主终端交互

我的问题是

  • 用最简单的术语来说,后台命令实际上是做什么的
  • &在命令末尾添加 a 有什么作用
  • 这样做的目的是什么/我可以从后台命令中获得什么
  • 我什么时候想要将命令置于后台

**如果您需要进一步澄清问题或背景,请告诉我

答案1

在交互式 shell 的上下文中回答这些问题。在 shell 脚本的上下文中,这些行为略有不同,但在很大程度上相似。

  • 用最简单的术语来说,后台命令实际上是做什么的

后台命令(或其他进程)允许它执行,同时仍然允许您与 shell 交互(即启动新的过程)。

  • 在命令末尾加&有什么作用

分隔符&表示给定命令的结束,并立即将该命令调用的进程移至后台执行。类似地,;分隔符表示要执行的给定命令的结束,直到该命令终止,然后提供新的 shell 提示符。

  • 这样做的目的是什么/我可以从后台命令中获得什么
  • 我什么时候想要将命令置于后台

这些本质上是同一个问题。简短的答案是:当你要执行一个需要很长时间才能运行的命令时,但你可以在执行它的同时继续做其他事情。一个例子是,对于一个人为的例子:

$ tail -f /path/to/apache-log > ~/webserverlog.txt &
$ curl --silent -o /dev/null https://localhost/path/site/you/are/debugging
$ kill %1

相关内容