绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
如何在后台运行 Linux 命令
2021-07-09 16:35:17


来源: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 之类的工具也会使您的命令保持运行。
如果您将程序长时间留在后台,如果编码不当,它们可能会变成僵尸进程。这些过程会显着降低系统速度。因此,请确保每隔一段时间识别并杀死僵尸进程。



分享好友

分享这个小栈给你的朋友们,一起进步吧。

Linux技术精选专区
创建时间:2020-07-08 10:30:23
Linux,全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年次释出,它主要受到Minix和Unix思想的启发,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • dapan
    专家
戳我,来吐槽~