Linux 命令是使用终端与系统交互的好方法。 但是,有时可能需要一段时间才能完成手头的任务。 这迫使用户等待相当长的时间或完全生成一个新的 shell。

幸运的是,您可以通过一些简单的方法在后台运行 Linux 命令。 本文的其余部分说明了其中一些方法。

1、在你的命令后添加一个 &

运行 Linux 后台命令的最简单方法是在命令后添加与号 (&)。 例如,如果从终端启动 gedit 文本编辑器,则在关闭编辑器之前无法使用 shell。 但是,当您在命令中添加额外的 & 时,您将能够立即使用 shell。

gedit &

对于需要长时间执行的任务,&符号可以使当前终端窗口不被占用,这样就能继续在同一个终端上工作,甚至关闭终端窗口也不会影响任务的正常执行。不过需要注意的是,如果要求这个任务输出内容到标准输出中(例如 echo 或 ls),即便使用了 &,也会等待这些输出任务在前台运行完毕;当使用 &将一个进程放置到后台运行的时候,Bash 会提示这个进程的进程 ID。在 Linux 系统中运行的每一个进程都有一个唯一的进程 ID,我们可以使用进程 ID 来暂停、恢复或者终止对应的进程。

2、使用bg向后台发送运行命令

有时您运行一个命令,却发现它需要很长的时间才能完成。通过按Ctrl + Z键,可以将一个正在前台执行的命令放到后台,并且暂停。您可以通过 在终端中输入jobs来查看所有后台任务的列表。使用fg命令将后台中的命令调至前台继续运行。您可以通过 在终端中输入jobs来查看所有后台任务的列表。使用fg命令将后台中的命令调至前台继续运行。

然后使用bg命令,将一个在后台暂停的命令,变成继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

3、使用 nohup 向后台发送命令

Linux 中 的nohup命令允许管理员运行不受挂断(Hang Up)信号影响的终端命令。您可以使用 nohup 在后台运行 Linux 命令。

下面的示例在后台运行Nmap 端口扫描。

nohup sudo nmap -sS –top-ports=15 192.168.150.1/24

nohup 的一个主要好处是,即使您退出 shell,您的命令也会运行。此外,它会生成执行的日志文件。 在当前目录或 $HOME 中查找nohup.out。

4、使用系统重定向运行后台命令

您还可以使用系统重定向在 Linux 中运行后台命令。例如,如果您运行以下ping命令,您的 shell 将在后台运行它并立即返回终端提示。

ping -c5 8.8.8.8 >Linuxmi.com.log 2>&1 &

这里 ping 命令的输出被重定向到output.log文件。如果你想丢弃结果,你可以用/dev/null替换它。的2>&1是告诉bash到任何错误重定向到相同的文件。最后的&指示 bash 在后台运行此命令。

5.、使用 disown 将 Linux 命令设置为后台运行

Linux 中 的disown命令可以轻松地在后台运行命令。首先,您需要使用& 运算符在后台发送任务。然后,键入disown以将其与shell分离。

gedit & disown

disown 的一个主要优点是,与 nohup 一样,当您关闭 shell 或注销时,系统不会终止您的任务。

6、使用 Tmux 在后台运行 Linux 命令

Tmux 是一个强大的多路复用器,它允许我们在单个窗口中运行多个终端会话。对于不熟悉它的人来说,学习 tmux 是一个很好的选择。Tmux 使在 Linux 中运行后台命令毫不费力。

tmux new -d ‘ping -c 10 8.8.8.8 > www.linuxmi.com.log’

当您运行上述tmux命令时,它将在单独的 shell 中执行ping命令并将其保留在后台。您可以使用此方法在后台执行任何 Linux 命令。

相关:如何为 Linux 安装和配置 Tmux 链接见 https://www.linuxmi.com/linux-tmux.html

将您的 Linux 命令留在后台

能够在后台运行命令使系统管理对管理员来说更有效率。您可以通过多种方式为您的任务做背景。像&和Ctrl + Z这样的 Bash 功能很方便,但系统会在 shell 关闭时终止后台作业。另一方面,即使您注销或终止 shell ,诸如nohup和disown 之类的工具也会使您的命令保持运行。

如果您将程序长时间留在后台,如果编码不当,它们可能会变成僵尸进程。这些过程会显着降低系统速度。因此,请确保每隔一段时间识别并杀死僵尸进程。

发表评论