在本指南中,我们将带来光一个简单而重要的概念进程在Linux系统中处理 ,那就是如何完全脱离其控制终端的过程。
当进程与终端相关联时,可能会发生两个问题:
- 您的控制终端充满了大量输出数据和错误/诊断消息。
- 在终端被关闭的情况下,该进程及其子进程将被终止。
为了处理这两个问题,你需要完全从控制终端分离一个进程。 在我们实际移动来解决问题之前,让我们简要介绍如何在后台运行进程。
如何在后台启动Linux进程或命令
如果一个进程已经在执行,比如tar命令例子如下,只需按下Ctrl+Z
停止它然后输入命令bg
继续其在后台作业执行。
您可以通过键入查看所有的后台作业jobs
。 然而,它的标准输入 , 标准输出 , 标准错误仍然连接到终端。
$ tar -czf home.tar.gz . $ bg $ jobs
在后台运行Linux命令
您可以同时直接从后台使用&运行过程中, &
签收。
$ tar -czf home.tar.gz . & $ jobs
在后台启动Linux过程
看看下面的例子,虽然tar命令开始作为后台作业,错误信息仍然发送给终端含义的过程中仍然连接到控制终端。
$ tar -czf home.tar.gz . & $ jobs
Linux进程在后台消息中运行
在退出终端后保持Linux进程运行
我们将使用不认命令,该进程已经启动,并把在后台后使用,它的工作是去除外壳的活动列表作业外壳的工作,所以你不会用fg
, bg
在那个特定的工作命令不再。
此外,当您关闭控制终端,作业将不会挂或发送SIGHUP任何子作业。
建议阅读: 5的方式,让远程SSH会话和进程在运行
让我们来看看使用diswon bash的内置函数的下面的例子。
$ sudo rsync Templates/* /var/www/html/files/ & $ jobs $ disown -h %1 $ jobs
在关闭终端后保持Linux进程运行
您还可以使用nohup
命令,这也使进程继续在后台运行,当用户退出外壳。
$ nohup tar -czf iso.tar.gz Templates/* & $ jobs
在关闭Shell后将Linux进程放在后台
从控制终端分离Linux进程
因此,要完全从控制终端分离的过程,使用下面的命令格式,这是一个图形用户界面(GUI)应用程序,如Firefox更有效:
$ firefox </dev/null &>/dev/null &
在Linux中, 的/ dev / null是其中写入区切换的特殊设备文件(摆脱的)写入的所有数据,在上述命令,输入从读取,并且输出发送到/ dev / null的 。
建议阅读: 10屏幕命令实例来分离终端会话
作为结束语,如果过程连接到控制终端,作为用户,您将看到过程数据的多个输出行以及终端上的错误消息。 再次,当您关闭控制终端时,您的进程和子进程将被终止。
重要的是,对于这个问题的任何问题或意见,通过使用下面的评论表达到我们。