前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在后台运行Linux命令

如何在后台运行Linux命令

作者头像
雪梦科技
发布于 2020-05-11 09:21:31
发布于 2020-05-11 09:21:31
8.2K00
代码可运行
举报
文章被收录于专栏:ITCoderITCoder
运行总次数:0
代码可运行

通常情况下,当你在终端运行一个命令,在你开始输入另外一个命令之前,你必须等待当前命令运行结束。这被称为在前台运行命令,或者前台进程。当一个进程在前台运行时,它占用了你的 shell,并且你可以通过输入设备和它进行交互。

那么当一个命令运行需要很长时间,而你又想同时运行另外的命令,应该怎么办?有几种选项可以选择。最明显并且最直接的选项就是启动一个新的 Shell 会话,并且在上面运行命令。另外一个选项,就是在后台运行命令。

一个后台进程就是说一个进程/命令在终端启动后,运行在后台,并且不会和用户发生任何交互。

在这篇文章中,我们将会讨论在 Linux 中的后台进程。我们将会为你演示如何在后台启动命令,并且保持进程直到会话结束。

在后台运行一个 Linux 命令

为了在后台运行命令,请在命令的后面添加一个符号(&):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
command &

这个 shell 的任务 id(被括号包围的内容)和进程 ID 将会被打印在终端:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[1] 25177

你可以在后台同时运行很多进程。

后台进程会将不断地将信息写在终端上。为了禁止stdoutstderr信息,请使用下面的语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
command > /dev/null 2>&1 &

>/dev/null 2>&1 意味着 将stdout转向/dev/null,而 stderr转向sdtout

使用jobs命令显示当前 shell 会话中所有停止的和后台的任务状态。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jobs -l

输出内容包括任务 id,进程 ID,任务状态和启动任务的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[1]+ 25177 Running                 ping google.com &

想要将后台进程转到前台的话,请使用fg命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fg

如果你在后台有多个任务,请在命令后添加%+任务 ID:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fg %1

想要停止后台进程,请在kill命令后添加进程 ID:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kill -9 25177

将前台进程移动到后台

想要将一个前台进程移动到后台:

01.通过按键Ctrl+Z停止当前进程

02.通过输入bg将停止进程移动到后台去

保持后台进程运行直到 Shell 退出

如果你丢失了连接,或者你退出了 Shell 会话,后台进程将会被终止。有很多方法可以保证进程运行直到交互的 Shell 结束。

一个方法就是从 Shell 任务控制中移除任务,使用内建的disown

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
disown

如果你有很多后台任务,请在命令后面添加%+任务 ID:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
disown %1

通过使用jobs -l来确认任务已经从任务表中移除。为了列出正在运行的进程,请使用ps aux命令。

另外一个保证进程运行,直到 Shell 退出的方法就是使用nohup

nohup命令后面跟着另外一个程序作为参数,将会忽略所有的SIGHUP(挂起)信号。SIGHUP信号用来发送给进程,用来通知终端已经关闭了。

使用nohup命令来在后台运行命令,请输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nohup command &

命令输出将会重定向到nohup.out文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nohup: ignoring input and appending output to 'nohup.out'

如果你登出或者关闭终端,进程不会被终止。

替代方案

有一些程序允许你在同一时间拥有多个非交互会话。

Screen

Screen 或者 GNU Screen 是一个终端多路复用程序,它允许你打开一个屏幕会话,并且在会话中打开任意多数量的窗口(虚拟终端)。在 Screen 中运行的进程,即便窗口不可见,甚至你失去连接,它们依然会运行。

Tmux

Tmux 是一个现代化的 GNU 屏幕交互程序。通过 Tmux,你可以创建一个会话,然后再会话中打开多个窗口。Tmux 会话是持久性的,这意味着即便你关闭了终端,这些 Tmux 上运行的程序依然会运行。

总结

为了在后台运行命令,请在命令的后面添加符号&

当你在后台运行命令时,你可以不需要等待它结束,就可以接着运行另外一个命令。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年11月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux - 请允许我静静地后台运行
枕边书
2018/01/04
1.8K0
Linux - 请允许我静静地后台运行
如何在后台运行Linux命令?
通常情况下,在 Linux 终端中运行命令时,我们必须等前一命令执行完成后,在输入并执行后一条命令,称之为在前台或前台进程中运行命令,进程在前台运行时,将占用您的外壳,并且您也可以使用输入设备与其终端进行交互。
杰哥的IT之旅
2020/06/18
3.9K0
linux 后台运行方法总结
多种后台运行方法总结,nohup, disown, setsid, (...&), screen, tmux
PedroQin
2020/06/22
3.9K0
linux 后台运行进程:& , nohup
当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,我们更希望它能够在每天的非负荷高峰时间段运行(例如凌晨)。为了使这些进程能够在后台运行,也就是说不在终端屏幕上运行,有几种选择方法可供使用。
DevOps在路上
2023/05/16
5K0
linux 后台运行进程:& , nohup
linux命令后台运行
1. command & : 后台运行,你关掉终端会停止运行 2. nohup command & : 后台运行,你关掉终端也会继续运行
RainMark
2019/09/10
10K0
【小家运维】达到Linux第三阶段的常用命令笔记记录—Part Ⅲ
大多数情况下,我们都 使用SSH 或者 telent(基本已不用了~) 远程登录到 Linux 服务器。但是有时候我们有这样的需求:经常为一些长时间运行的任务而头疼,比如系统备份、ftp 传输等等
YourBatman
2019/09/03
1.9K0
【小家运维】达到Linux第三阶段的常用命令笔记记录—Part Ⅲ
【Linux】后台进程
在Linux系统中,后台进程是一种能够在后台运行而不占用终端的进程。理解和有效管理后台进程对于系统管理员和开发者至关重要。本文将深入探讨Linux中的后台进程,包括后台运行的方式、管理后台进程的命令以及一些实用技巧。
人不走空
2024/02/21
4840
Linux上后台保持Terminal交互运行的两种方式
Linux上,如果一个进程需要保持后台运行,尤其是在Linux服务器上,后台运行程序、避免因为SSH连接断开而导致进程停止运行时,该怎么办?
Mintimate
2021/06/21
8.5K0
Linux上后台保持Terminal交互运行的两种方式
玩转服务器—从前台到后台,让你的任务无忧运行
在生信分析的过程中,往往一个步骤会非常耗时,如果任务只是放在前台运行,那么不仅妨碍我们继续操作,还会因为网络波动造成任务意外中断,因此对于服务器的使用,我们还必须了解一下如何把任务提交到后台运行。在上一期我们介绍了并行提交任务(玩转服务器—提交并行任务),其中提到了一嘴,把任务放到后台,那么今天让我们来看看还有哪几种常见的实现方法:
生信菜鸟团
2025/01/08
1090
玩转服务器—从前台到后台,让你的任务无忧运行
Linux进程管理详细解读
Linux系统为多用户多任务系统 生物软件运行时要能够查看运行状态 实时监控软件运行状态 例如 CPU 内存使用情况等 当运行出现错误时 要能够及时杀死任务 以及任务前后台切换 是否挂起等操作 。
生信喵实验柴
2021/12/15
9870
Linux进程管理详细解读
Linux 守护进程的启动方法
Linux 守护进程的启动方法 “守护进程”(daemon)就是一直在后台运行的进程(daemon)。 本文介绍如何将一个 Web 应用,启动为守护进程。 一、问题的由来 Web应用写好后,下一件事就
用户1289394
2018/02/27
5.1K0
Linux 守护进程的启动方法
如何在断开连接后保持远程 SSH 会话运行
◆ 概述 SSH(Secure Shell)是端到端的加密网络系统,允许用户从客户端远程访问服务器。但有时由于不活动或网络信号不佳,SSH远程访问可能会断开连接。不管是什么原因,作为 Linux 管理员,在断开连接后保持 SSH 会话和进程运行是一项至关重要的工作。本文讨论断开连接后如何保持 SSH 会话运行。 ◆ 1. screen ---- 该screen命令是 SSH 管理最常用和最有用的命令。 对于 Ubuntu: $ sudo apt install screen 对于 OpenSUSE: $
IT大咖说
2022/04/13
4.4K0
如何在断开连接后保持远程 SSH 会话运行
Linux学习笔记之Linux 让进程在后台可靠运行的几种方法
我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题。
Jetpropelledsnake21
2018/12/25
1.2K0
[Linux笔记] nohup 命令 解决 SSH关闭窗口,程序也中断的问题!
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
科控物联
2022/04/19
6.5K0
[Linux笔记] nohup 命令 解决 SSH关闭窗口,程序也中断的问题!
Linux下几种运行后台任务的方法
今天就给大家介绍 linux 中几种后台任务的执行方法避免上述问题。1. 问题的引入程序员最不能容忍的是在使用终端的时候往往因为网络,关闭屏幕,执行 CT 今天就给大家介绍 linux 中几种后台任务的执行方法避免上述问题。 1. 问题的引入 程序员最不能容忍的是在使用终端的时候往往因为网络,关闭屏幕,执行 CTRL+C 等原因造成 ssh 断开造成正在运行程序退出,使得我们的工作功亏一篑。 其背后的主要原因在于上述的相关操作,shell 默认会发送中断信号给该终端 session 关联的进程,从而导致进
入门笔记
2022/06/03
3.1K0
Linux 让进程在后台可靠运行的几种方法
我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口、网络断开连接的干扰呢?
小小工匠
2021/08/16
1K0
Linux 进程后台运行的几种方式(screen)
本文介绍了Linux进程后台运行的几种方式,包括nohup、setsid、screen等工具的使用方法,以及这些工具在系统管理、运维方面的应用。同时还介绍了如何通过screen工具创建、管理、恢复会话,以及如何使用nohup、setsid等命令在后台运行进程。
惨绿少年
2017/12/27
4K0
《Linux命令行与shell脚本编程大全》第十六章 控制脚本
一些控制脚本的方式:向脚本发送信号、修改脚本优先级,在脚本运行时切换到运行模式  16.1 处理信号 linux利用信号与运行在系统中的进程进行通信。 也可以通过对脚本进行编程,使其在收到特定信号时执行某些命令。从而控制脚本的操作。 16.1.1 重温Linux信号 比如下面这些常见的: 信号   值         描述 1    SIGUP     挂起进程  2    SIGINT     终止进程  3    SIGOUT    停止进程  9    SIGKILL    无条件终止进程 15   
xcywt
2018/01/11
3.1K0
《Linux命令行与shell脚本编程大全》第十六章 控制脚本
Linux运行与控制后台进程的方法
我们经常会碰到这样的问题,用ssh登录了远程的Linux服务器,运行了一些耗时较长的任务,结果却由于网络等的不稳定导致任务中途失败。 这是由于在用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。 解决办法有两种:让进程忽略HUP信号,或让进程运行在新的会话里从而成为不属于此终端的子进程。
星哥玩云
2022/06/07
2K0
Linux 后台运行python .sh等程序,以及查看和关闭后台运行程序操作
直接用./sh 文件就可以运行,但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令。
学到老
2019/03/05
11.7K0
推荐阅读
相关推荐
Linux - 请允许我静静地后台运行
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验