当前位置: 首页 > news >正文

Linux- 后台运行符、nohup、disown

&

&在Unix-like的操作系统(如Linux和macOS)的shell中,特别是在Bash这样的shell中,经常用作后台运行符号。让我们深入了解一下其功能和用法。

&作为后台运行符号:

  1. 基本用法:
    当我们在一个命令或者一组命令的后面加上&,它们会在后台执行。这意味着这些命令不会阻止我们获得命令行提示符,可以继续执行其他命令。

    例如:

    sleep 10 &
    

    这会在后台启动sleep命令,持续10秒。在此期间,我们会立即获得命令行提示符,可以进行其他任务。

  2. 作业控制:
    当在后台启动任务时,它将被视为一个“作业”。可以使用作业控制命令来管理这些后台任务。

    • jobs: 列出当前shell中的所有后台作业。
    • fg %jobnumber: 将后台作业带到前台运行。
    • bg %jobnumber: 如果一个作业在后台被暂停,此命令可以继续在后台运行它。

    例如,如果运行sleep 30 &并且之后运行jobs,会看到有一个作业在后台运行。

  3. 输出:
    即使命令在后台运行,它的输出(stdout和stderr)默认仍然会发送到当前终端。这可能会中断当前工作。为了避免这种情况,通常会将输出重定向到文件或/dev/null。重定向到文件可以帮助我们保留输出以供以后查看,而重定向到 /dev/null 实际上是丢弃输出。

  4. 结束:
    当关闭终端时,默认情况下所有后台作业都会被终止。为了防止这种情况,可以使用nohup命令或者disown命令。

    例如:

    nohup long_running_command &
    

    或者,如果已经在后台启动了一个作业:

    long_running_command &
    disown %1
    

    其中%1是作业号,通常是启动的第一个作业。可以使用jobs命令查看作业号。

总之,&符号为命令行用户提供了一个方便的方式来在后台执行任务,从而使用户可以并行地进行多个任务。


此处,我们展开说一下输出:

(1) 重定向到文件:

如果想保留输出以供以后查看,可以将 stdoutstderr 重定向到文件。

long_running_command > output.log 2>error.log &

在这里,正常的输出(stdout)被重定向到 output.log,而错误输出(stderr)被重定向到 error.log

(2) stdoutstderr 重定向到同一文件:

long_running_command > output.log 2>&1 &

这会将正常的输出和错误都保存在 output.log 中。

(3) 重定向到 /dev/null:

如果不关心输出并希望完全丢弃它,可以使用 /dev/null。这是一个特殊的设备,通常被称为“黑洞”,因为写入它的任何东西都会被永久丢弃。

long_running_command > /dev/null 2>&1 &

这里,正常的输出和错误都被发送到 /dev/null,从而被完全丢弃。

使用这些重定向技术,可以确保后台任务的输出不会干扰我们的终端会话,同时还可以选择保留或丢弃输出。


nohup命令

nohup是Unix和Linux系统中的一个命令,用于在退出帐户或关闭终端后继续运行命令。其名称“nohup”来源于“no hang up”,表示即使挂起也不中断执行。

以下是对nohup命令的详细介绍:

  1. 基本用途:

    当在终端中运行一个命令时,如果退出终端或关闭它,命令通常会被终止。使用nohup,可以保持这个命令在后台运行,即使终端已关闭。

    例如,要在后台运行一个长时间运行的脚本并确保即使关闭终端也不会停止,可以这样做:

    nohup ./long-running-script.sh &
    
  2. 输出重定向:

    默认情况下,nohup命令将命令的输出(stdout和stderr)重定向到名为nohup.out的文件中。如果希望将输出重定向到其他位置,可以这样做:

    nohup ./script.sh > myoutput.log 2>&1 &
    
  3. 与后台运行结合:

    通常,nohup&结合使用,这样命令就可以在后台启动并立即返回命令提示符。如果不使用&,命令将在前台开始,但即使关闭终端也会继续运行。

  4. 如何终止nohup命令:

    要终止使用nohup运行的进程,首先需要找到其进程ID(PID),可以使用ps命令和grep工具来查找。一旦得到PID,可以使用kill命令来终止它。

    例如:

    ps aux | grep long-running-script.sh
    

    上述命令会显示与long-running-script.sh相关的进程。找到PID后,使用:

    kill -9 <PID>
    

    来终止进程。

  5. 目的与使用场景:

    nohup命令特别适用于远程登录到服务器并启动长时间运行的任务的场景。使用nohup可以确保任务继续运行,即使网络连接断开或用户注销。

总之,nohup是一个非常有用的命令,允许在Unix-like操作系统中的任务在没有终端干预的情况下持续运行。这在系统管理、长时间数据处理任务和其他需要持续运行的场景中特别有用。

disown命令

disown 是 bash 和一些其他 shell中的内建命令,用于从 shell 的作业表中移除作业,从而使它们与当前 shell 会话解除关联。这意味着,当关闭或退出 shell 时,这些作业(或进程)不会接收到 HUP(hang up)信号,因此它们不会被终止。

下面详细介绍 disown 命令:

  1. 基本用法:

    当在 shell 中启动一个后台任务,然后决定使其在退出 shell 时保持运行状态,可以使用 disown

    例如,假设启动了一个后台进程:

    long-running-command &
    

    之后,可以简单地运行 disown,该命令将移除最近发送到后台的任务。

  2. 指定作业号:

    如果有多个后台任务,并且只想 disown 其中的一个或几个,可以使用作业号(可以使用 jobs 命令查看)。

    例如:

    [1]  + running    sleep 300
    [2]    running    long-running-command
    

    要移除第二个任务,可以使用:

    disown %2
    
  3. 移除所有作业:

    disown 命令也可以与 -a 选项一起使用,从作业表中移除所有作业。

    disown -a
    
  4. 移除当前 shell 启动的所有作业:

    使用 -r 选项可以移除由当前 shell 启动的所有作业:

    disown -r
    
  5. nohup 的比较:

    disownnohup 都可以使进程在退出 shell 时继续运行。但它们的工作方式有所不同:

    • nohup 是在启动进程时使用的,以确保进程从一开始就与 shell 解除关联。
    • disown 是在进程已经启动后使用的,以后续地从 shell 的作业表中移除进程。

总的来说,disown 是一个在需要长时间运行的后台任务,但又不想这些任务在退出或关闭 shell 时被终止的情况下非常有用的工具。它允许我们管理和保持这些后台任务的持续运行,即使我们的 shell 会话已经结束。

相关文章:

Linux- 后台运行符、nohup、disown

& &在Unix-like的操作系统&#xff08;如Linux和macOS&#xff09;的shell中&#xff0c;特别是在Bash这样的shell中&#xff0c;经常用作后台运行符号。让我们深入了解一下其功能和用法。 &作为后台运行符号&#xff1a; 基本用法: 当我们在一个命令或者一组命令…...

开发过程教学——交友小程序

交友小程序 1. 我的基本信息2. 我的人脉2.1 我的关注2.2 我的粉丝 3. 我的视频4. 我的相册 特别注意&#xff1a;由于小程序分包限制2M以内&#xff0c;所以要注意图片和视频的处理。 1. 我的基本信息 数据库表&#xff1a; 我的基本信息我的登录退出记录我的登录状态&#x…...

正则表达式 Regular Expression学习

该文章内容为以下视频的学习笔记&#xff1a; 10分钟快速掌握正则表达式_哔哩哔哩_bilibili正则表达式在线测试工具&#xff1a;https://regex101.com/, 视频播放量 441829、弹幕量 1076、点赞数 19330、投硬币枚数 13662、收藏人数 26242、转发人数 2768, 视频作者 奇乐编程学…...

代谢组学最常用到的数据分析方法(五)

代谢组学是一门对某一生物或细胞所有低分子质量代谢产物&#xff08;以相对分子质量<1000的有机和无机的代谢物为研究核心区&#xff09;进行分析的新兴学科。因此从复杂的代谢组学数据中确定与所研究的现象有关的代谢物&#xff0c;筛选出候选生物标记物成为代谢物组学研究…...

105.从前序与中序遍历序列构造二叉树

力扣题目链接(opens new window) 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如&#xff0c;给出 前序遍历 preorder [3,9,20,15,7] 中序遍历 inorder [9,3,15,20,7] 返回如下的二叉树&#xff1a; class Solution { public:Tr…...

分支定界、分支切割、分支定价的区别

目录 1.从原理的角度 &#xff08;1&#xff09;分支定界&#xff1a; &#xff08;2&#xff09;分支切割&#xff1a; &#xff08;3&#xff09;分支定价&#xff1a; 2.从分支树的角度 &#xff08;1&#xff09;分支定界 &#xff08;2&#xff09;分支切割 &…...

数字IC前端学习笔记:数字乘法器的优化设计(阵列乘法器)

相关阅读 数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 数字信号处理作为微处理器的核心部件&#xff0c;是决定着总体处理器性能的因素之一&#xff0c;而数字乘法器是最常见的一种数字信号处理电路。通常情况下&#…...

批量删除wordpress文章修订版本/自动草稿残留数据(3种方法)及四种方法禁用WordPress文章历史修订/自动保存/自动草稿功能

目录 1、批量删除wordpress文章修订版本/自动草稿残留数据&#xff08;3种方法&#xff09; 方法一&#xff1a;SQL命令批量删除 命令&#xff1a; 方法二&#xff1a;利用PHP代码来删除 方法三&#xff1a;利用数据库清理优化插件 WP Clean Up 或 WP Cleaner 批量删除 2…...

HTTP初识,fiddler的使用,URL各部分介绍,QueryString

目录 一、什么是HTTP 二、抓包工具 三、请求的首行 URL 四、URL的各部分详细介绍 一、什么是HTTP 现在网页上&#xff0c;我们常见的是https,但是在二十年前是以http为主&#xff0c;这个协议也叫超文本传输协议&#xff0c;文本->字符串&#xff0c;“超文本”->图片…...

计算机毕业设计 基于SpringBoot的图书馆管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

第三章:最新版零基础学习 PYTHON 教程(第十二节 - Python 运算符—Python 中的运算符函数 - 套装1)

Python 在“operator”模块下预定义了许多数学、逻辑、关系、位等运算的函数。本文介绍了一些基本功能。 1. add(a, b):- 该函数返回给定参数的加法。 操作-a +b。 2. sub(a, b):- 该函数返回给定参数的差值。 操作-a -b。 3. mul(a, b):- 该函数返回给定参数的乘积。 操…...

AAD基础知识(identity/token/PRT)

简介 AAD(Azure Active Directory/Azure AD)是微软基于云身份验证和访问控制的解决方案&#xff0c;通过SSO登录其他o365应用(word/outlook/teams…) 微软在2023年7月把AAD重命名为Microsoft Entra ID&#xff0c;官网&#xff1a;https://www.microsoft.com/zh-cn/security/b…...

基于SSM的视频点播系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

React 知识点总结

本篇文章是我自己总结已经写过的react知识点&#xff0c;大框架已生成&#xff0c;知识持续更新中。仅供参考 生命周期 React 生命周期 组件基础 react中受控组件与非受控组件 React Portals 理解React页面渲染原理&#xff0c;如何优化React性能&#xff1f; 学习篇之R…...

ALSA project the C library refrerenc (ALSA工程 C库参考说明)

作者: Jaroslav Kysela perexperex.cz Abramo Bagnara abramoalsa-project.org Takashi Iwai tiwaisuse.de Frank van de Pol fvdpolcoil.demon.nl前言: 高级linux音频架构(ALSA)来自内核API和库的API.这个篇文章描述了应用层库API和内核层API对应是怎么的interfaces.API用法: …...

【Maven基础篇-黑马程序员】Maven项目管理从基础到高级,一次搞定!

文章目录 前言Maven简介Maven是什么Maven的作用 Maven的下载与安装Maven基础概念仓库坐标仓库配置全局setting与用户setting区别 第一个Maven程序&#xff08;手工制作&#xff09;第一个Maven程序&#xff08;IDEA生成&#xff09;使用模版&#xff08;骨架&#xff09;创建Ma…...

MySQL进阶 —— 超详细操作演示!!!(下)

MySQL进阶 —— 超详细操作演示&#xff01;&#xff01;&#xff01;&#xff08;下&#xff09; 五、锁5.1 概述5.2 全局锁5.3 表级锁5.4 行级锁 六、InnoDB 引擎6.1 逻辑存储结构6.2 架构6.3 事务原理6.4 MVCC 七、MySQL 管理7.1 系统数据库7.2 常用工具 MySQL— 基础语法大…...

SVM(上):如何用一根棍子将蓝红两色球分开?

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、…...

libevent源码学习笔记

libevent源码学习笔记 libevent安装libevent源码解析&#xff08;1&#xff09;事件对象&#xff08;2&#xff09;事件操作&#xff08;3&#xff09;事件循环&#xff08;4&#xff09;事件处理 常用指令问题记录问题一&#xff1a;长连接的管理问题二&#xff1a;连接关闭问…...

C++ opencv设置视频的捕获方式为 MJPG设置失败

我有一款4k摄像头&#xff0c;在设置分辨率为4k的时候总是出现帧率不够的情况&#xff0c; 使用命令查看 v4l2-ctl --device/dev/video0 --list-formats-ext发现 v4l2-ctl --device/dev/video0 --list-formats-ext ioctl: VIDIOC_ENUM_FMTType: Video Capture[0]: MJPG (Moti…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

数据库——redis

一、Redis 介绍 1. 概述 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的、高性能的内存键值数据库系统&#xff0c;具有以下核心特点&#xff1a; 内存存储架构&#xff1a;数据主要存储在内存中&#xff0c;提供微秒级的读写响应 多数据结构支持&…...

python可视化:俄乌战争时间线关键节点与深层原因

俄乌战争时间线可视化分析&#xff1a;关键节点与深层原因 俄乌战争是21世纪欧洲最具影响力的地缘政治冲突之一&#xff0c;自2022年2月爆发以来已持续超过3年。 本文将通过Python可视化工具&#xff0c;系统分析这场战争的时间线、关键节点及其背后的深层原因&#xff0c;全面…...