如何在后台运行 Linux 命令

2021-07-09 00:00:00 命令 运行 终端 您的 后台


来源:Linux迷
原文链接:https://www.linuxmi.com/linux-mingling-houtai-yunxing.html

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 命令留在后台
能够在后台运行命令使系统管理对管理员来说更有效率。您可以通过多种方式为您的任务做背景。像&和Ctrl + Z这样的 Bash 功能很方便,但系统会在 shell 关闭时终止后台作业。另一方面,即使您注销或终止 shell ,诸如nohup和disown 之类的工具也会使您的命令保持运行。
如果您将程序长时间留在后台,如果编码不当,它们可能会变成僵尸进程。这些过程会显着降低系统速度。因此,请确保每隔一段时间识别并杀死僵尸进程。



相关文章