如何在 Linux 中后台运行进程?

devtools/2024/9/23 16:56:02/

linux-" style="margin-left:0px;">一、后台进程

        在后台运行进程是 Linux 系统中的常见要求。在后台运行进程允许您在进程独立运行时继续使用终端或执行其他命令。这对于长时间运行的任务或当您想要同时执行多个命令时特别有用。

        在深入研究各种方法之前,让我们先了解一下什么是后台进程。在 Linux 中,后台进程是指独立于终端运行的进程。执行命令时,它通常在前台运行,这意味着它会占用终端直到完成。另一方面,在后台运行进程允许您执行其他命令,而进程则继续默默运行。

二、如何在后台运行 Linux 命令

1. 在命令后添加一个 & 符号

        运行 Linux 后台命令的最简单方法是在命令后添加一个“与”符号( & )。例如,如果您从终端启动 gedit 文本编辑器,则在关闭编辑器之前无法使用 shell。但是,当您在命令中添加额外的&时,它会告诉 Bash 在后台运行该命令,以便您立即使用 shell。

gedit &

2. 使用 bg 将正在运行的命令发送到后台

        有时,您运行命令后才发现它需要很长时间才能完成。您可以通过按下Ctrl + Z键,然后使用bg命令,轻松地将此类命令发送到后台。按下Ctrl + Z可停止正在运行的进程,而bg可将其发送到后台。

        您可以在终端中输入jobs来查看所有后台任务的列表。使用fg命令将后台进程调到前台。

        如果后台有多个作业正在运行,您可以输入fg后跟%n,其中n是作业 ID。例如,要将后台作业2移到前台,命令如下:

fg %2

        要终止后台作业,请在 kill 命令后使用%和作业 ID。

3. 使用 nohup 将命令发送到后台

        Linux 中的nohup命令允许管理员运行不受 HUP 或Hang Up信号影响的终端命令。您可以使用 nohup 在 Linux 上轻松地在后台运行命令。

        下面的示例在后台运行一个简单的 Nmap 端口扫描:

nohup sudo nmap -sS --top-ports=15 192.168.1.1/24

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

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

        您还可以使用系统重定向在 Linux 中运行后台命令。例如,如果您运行以下 ping 命令,您的 shell 将在后台运行它并立即将终端控制权交还给您:

ping -c5 8.8.8.8 > output.log 2>&1 &

        这里 ping 命令的输出被重定向到output.log文件。如果要丢弃结果,可以将其替换为/dev/null。2>&1告诉 Bash 将任何错误重定向到同一个文件。最后的&指示 Bash 在后台运行此命令。

5. 使用 disown

        disown命令可让您轻松地在后台运行进程。首先,您需要使用&运算符任务发送到后台。然后,输入disown以将其从 shell 中分离。

gedit & disown

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

6. 使用 tmux

         tmux 是一款功能强大的多路复用器,可让您在单个窗口中运行多个终端会话。对于不熟悉 Linux 的人来说,学习如何使用和配置 tmux是一个绝佳的选择。tmux 让在 Linux 中运行后台命令变得轻而易举。

        tmux new -d 'ping -c 10 8.8.8.8 > output.log'

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


http://www.ppmy.cn/devtools/56518.html

相关文章

Spring Boot中的国际化配置

Spring Boot中的国际化配置 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Spring Boot应用中实现国际化配置,使得应用能够轻松…

等级保护 | 如何完成等保的建设整改

等级保护整改是等保基本建设的一个阶段。为了能成功通过等级测评,企业要根据等级保护建设要求,对信息和信息系统进行网络安全升级,对定级对象当前不满足要求的进行建设整改,包括技术层面的整改,也包括管理方面的整改。…

Java面试题:解释常见的HTTP状态码及其含义

HTTP状态码是由服务器返回给客户端的三位数字,用于表示HTTP请求的结果状态。以下是一些常见的HTTP状态码及其含义: 1xx: 信息响应 102 Processing (WebDAV):表示服务器已收到并正在处理请求,但尚未有响应可用。 2xx: 成功 203…

JAVA学习笔记-JAVA基础语法-DAY19-File类、递归

第一章 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 1.2 构造方法 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(St…

k8s的daemonset里判断CRD资源里定义的NodeSelector是否包含本节点

要实现一个 Kubernetes 控制器,它在 DaemonSet 容器中运行,并侦听自定义资源创建事件,然后基于自定义资源的 spec.nodeSelector 判断当前节点是否匹配,你可以根据以下步骤实现: 第 1 步:获取当前节点的标签…

vue封装接口

找到src下的api 在里面创建一个名为Api.js的文件 1,在里面写入接口 import axios from axios//先引入axiosexport async function menusIndex(data) {//这个data代表传过来的值return axios({url: 要请求的地址,method: POST,data,}) } 2,在页面中 …

Vue3面试题

1. vue2和vue3区别 vue2和vue3双向绑定的方法不同 vue2:Object.defineProperty——>后添加的属性劫持不到——>因此用到了$set来解决数据更新了但视图没更新的问题 vue3: new Proxy——>即使是后添加的属性,也可以劫持到——>vue3中没有$set…

Vue2和Vue3的区别

注:本文提到的Vue2版本是2.6.10; 双向绑定:监听对象属性变化的底层方法不同; 2中使用的是Object.defineProperty;3中则使用Proxy拦截; Object.defineProperty 简单的写个方法,让监听对象属性的setter和…