如何在后台启动Linux命令和在终端分离进程

在本指南中,我们将介绍如何在后台启动或运行Linux命令或进程,并从其控制终端完全分离进程。

在本指南中,我们将带来光一个简单而重要的概念进程在Linux系统中处理 ,那就是如何完全脱离其控制终端的过程。

当进程与终端相关联时,可能会发生两个问题:

  1. 您的控制终端充满了大量输出数据和错误/诊断消息。
  2. 在终端被关闭的情况下,该进程及其子进程将被终止。

为了处理这两个问题,你需要完全从控制终端分离一个进程。 在我们实际移动来解决问题之前,让我们简要介绍如何在后台运行进程。

如何在后台启动Linux进程或命令

如果一个进程已经在执行,比如tar命令例子如下,只需按下Ctrl+Z停止它然后输入命令bg继续其在后台作业执行。

您可以通过键入查看所有的后台作业jobs 然而,它的标准输入标准输出标准错误仍然连接到终端。

$ tar -czf home.tar.gz .
$ bg
$ jobs
在后台运行Linux命令

在后台运行Linux命令

您可以同时直接从后台使用&运行过程中, &签收。

$ tar -czf home.tar.gz . &
$ jobs
在后台启动Linux过程

在后台启动Linux过程

看看下面的例子,虽然tar命令开始作为后台作业,错误信息仍然发送给终端含义的过程中仍然连接到控制终端。

$ tar -czf home.tar.gz . &
$ jobs
Linux进程在后台消息中运行

Linux进程在后台消息中运行

在退出终端后保持Linux进程运行

我们将使用不认命令,该进程已经启动,并把在后台后使用,它的工作是去除外壳的活动列表作业外壳的工作,所以你不会用fgbg在那个特定的工作命令不再。

此外,当您关闭控制终端,作业将不会挂或发送SIGHUP任何子作业。

建议阅读: 5的方式,让远程SSH会话和进程在运行

让我们来看看使用diswon bash的内置函数的下面的例子。

$ sudo rsync Templates/* /var/www/html/files/ &
$ jobs
$ disown  -h  %1
$ jobs
在关闭终端后保持Linux进程运行

在关闭终端后保持Linux进程运行

您还可以使用nohup命令,这也使进程继续在后台运行,当用户退出外壳。

$ nohup tar -czf iso.tar.gz Templates/* &
$ jobs
在关闭Shell后将Linux进程放在后台

在关闭Shell后将Linux进程放在后台

从控制终端分离Linux进程

因此,要完全从控制终端分离的过程,使用下面的命令格式,这是一个图形用户界面(GUI)应用程序,如Firefox更有效:

$ firefox </dev/null &>/dev/null &

在Linux中, 的/ dev / null是其中写入区切换的特殊设备文件(摆脱的)写入的所有数据,在上述命令,输入从读取,并且输出发送到/ dev / null的

建议阅读: 10屏幕命令实例来分离终端会话

作为结束语,如果过程连接到控制终端,作为用户,您将看到过程数据的多个输出行以及终端上的错误消息。 再次,当您关闭控制终端时,您的进程和子进程将被终止。

重要的是,对于这个问题的任何问题或意见,通过使用下面的评论表达到我们。