【Linux系列】如何使用 nohup 命令在后台运行脚本

news2025/3/1 2:59:08

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • nohup 命令简介
      • 基本用法
      • 输出重定向
    • & 符号的作用
      • 后台进程的特点
      • 注意事项
    • 实际应用场景
      • 长时间运行的任务
      • 服务启动
      • 定时任务
    • 常见问题及解决方法
      • nohup.out 文件权限问题
      • 后台进程被意外终止
      • 输出文件过大

在 Linux 或类 Unix 系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务。通过将脚本放到后台执行,用户可以继续使用终端进行其他操作,而不必担心脚本因为终端关闭或注销而中断。
在这里插入图片描述

nohup 命令简介

nohup 是一个命令行工具,用于防止命令因用户注销或终端关闭而被挂起。其名称来源于 “no hang up”,即不挂断。在 Unix 系统中,当用户注销或关闭终端时,会向正在运行的进程发送一个挂断信号(SIGHUP),导致进程终止。nohup 命令的作用就是让指定的命令忽略这个挂断信号,从而继续运行。

基本用法

nohup 的基本用法非常简单,只需将其放在要后台运行的命令前即可。例如,如果你有一个名为 start.sh 的脚本,想在后台运行它,并且不希望因为终端关闭而中断,可以使用以下命令:

nohup sh start.sh &

这里,sh start.sh 是要运行的脚本,& 符号表示将命令放到后台执行。nohup 会忽略挂断信号,确保脚本在后台持续运行。

输出重定向

默认情况下,nohup 会将命令的标准输出和标准错误输出到一个名为 nohup.out 的文件中,位于当前工作目录下。如果不想使用默认文件,可以通过重定向操作将输出指定到其他文件。例如:

nohup sh start.sh > start.log 2>&1 &
  • > 是一个 shell 命令,用于将命令的输出重定向到文件。
  • start.log 是指定的输出文件名,所有标准输出都会被写入这个文件。
  • 2>&1 是一个特殊的重定向操作,表示将标准错误(文件描述符为 2)重定向到标准输出(文件描述符为 1),这样错误信息也会被写入 start.log 文件中。
  • & 符号将整个命令放到后台执行。

通过这种方式,你可以清晰地查看脚本的运行日志,而不会因为终端关闭或注销而丢失输出信息。

& 符号的作用

& 符号在 shell 命令中用于将命令放到后台执行。当在命令末尾加上 & 时,shell 会创建一个新的子进程来运行该命令,同时返回到命令提示符,允许用户继续在终端输入其他命令。

后台进程的特点

  • 后台进程不会阻塞终端,用户可以继续使用终端进行其他操作。
  • 后台进程可以通过 jobs 命令查看,使用 fg 命令将其带回前台,或使用 kill 命令终止它。
  • 如果终端关闭,后台进程通常会收到挂断信号(SIGHUP),除非使用了 nohup 命令。

注意事项

  • 当使用 & 将命令放到后台执行时,如果命令依赖于前台进程的某些资源(如标准输入),可能会出现问题。因此,在使用 & 时,通常需要对命令的输入输出进行适当的处理。
  • 后台进程的优先级通常较低,系统会根据调度算法动态调整其运行优先级,以保证系统的整体性能。

实际应用场景

长时间运行的任务

对于一些需要长时间运行的任务,如数据备份、大规模文件处理、复杂计算等,使用 nohup 命令结合 & 符号可以在后台运行相关脚本,避免因终端关闭或注销而导致任务中断。例如,一个数据备份脚本 backup.sh 可以这样运行:

nohup sh backup.sh > backup.log 2>&1 &

这样,备份任务会在后台执行,所有的输出信息都会被记录到 backup.log 文件中,方便后续查看和分析。

服务启动

在启动一些服务时,也需要将其放到后台运行。例如,启动一个 Web 服务的脚本 start_web.sh 可以使用以下命令:

nohup sh start_web.sh > web.log 2>&1 &

这样,Web 服务会在后台启动,所有的日志信息都会被写入 web.log 文件中,方便监控服务的运行状态。

定时任务

对于一些定时任务,虽然通常使用 cron 作业来实现,但在某些情况下,也可以通过脚本结合 nohup 命令来完成。例如,一个每天定时清理日志的脚本 clean_logs.sh 可以这样运行:

nohup sh clean_logs.sh > clean_logs.log 2>&1 &

通过将这个命令放入定时执行的脚本中,可以确保日志清理任务在后台自动运行,不会因为终端关闭或注销而中断。

常见问题及解决方法

nohup.out 文件权限问题

在某些情况下,nohup 默认生成的 nohup.out 文件可能会因为权限问题导致无法写入。解决方法是提前创建一个具有适当权限的输出文件,然后将输出重定向到该文件。例如:

touch output.log
chmod 644 output.log
nohup sh start.sh > output.log 2>&1 &

后台进程被意外终止

如果后台进程被意外终止,可能是由于系统资源不足、进程被杀掉等原因。解决方法是检查系统资源使用情况,确保有足够的资源供进程运行;同时,可以通过 ps 命令查看进程状态,使用 kill 命令手动终止进程时要谨慎操作,避免误杀重要进程。

输出文件过大

长时间运行的脚本可能会产生大量的输出信息,导致输出文件过大。解决方法是定期检查输出文件大小,并根据需要进行清理或分割。可以使用 logrotate 工具来管理日志文件的轮转、压缩和删除等操作,保持输出文件在一个合理的大小范围内。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2274340.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

门禁系统与消防报警的几种联动方式

1、规范中要求的出入口系统与消防联动 1.1《建筑设计防火规范》GB 50016-2018 1.2《民用建筑电气设计规范》JGJ 16-2008  14.4出入口控制系统 3 设置在平安疏散口的出入口限制装置,应与火灾自动报警系统联动;在紧急状况下应自动释放出入口限制系统&…

Express 加 sqlite3 写一个简单博客

例图: 搭建 命令: 前提已装好node.js 开始创建项目结构 npm init -y package.json:{"name": "ex01","version": "1.0.0","main": "index.js","scripts": {"test": &q…

GetMaterialApp组件的功能与用法

文章目录 1. 知识回顾2. 使用方法2.1 源码分析2.2 常用属性3. 示例代码4. 内容总结我们在上一章回中介绍了"Get包简介"相关的内容,本章回中将介绍GetMaterialApp组件.闲话休提,让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中已经介绍过GetMaterialApp组…

LabVIEW之树形控件

一、树形控件基本构成 树形控件这个名称非常形象,其如同树一样,是典型的分层结构。树形控件的属性和方法使用非常灵活,树形控件的内容既可以静态编辑,也可以通过编程来动态填充。静态编辑树形控件适用于内容不变的应用场景&#…

Inno Setup制作安装包,安装给win加环境变量

加 ; 加环境变量,开启,下面一行 ChangesEnvironmentyes 和 ; 加环境变量wbrj变量名,{app}\project\bin变量值,{app}\后接文件名,{app}表示安装路径。下面一行,{olddata};原来的值上拼接 Root: HKLM; Subkey: “SYSTEM\…

张朝阳惊现CES展,为中国品牌 “代言”的同时,或将布局搜狐新战略!

每年年初,科技圈的目光都会聚焦在美国拉斯维加斯,因为这里将上演一场被誉为 “科技春晚” 的年度大戏 ——CES 国际消费电子展。作为全球规模最大、最具影响力的科技展会之一,CES 吸引了来自 160 多个国家的创新者和行业领导者,是…

UDS诊断之0x27服务—结合实例讲解

前言: 本文讲解的是比较深入一点知识,对于一些刚入门的同学,建议直接先看一遍14229规范,然后找一个实际项目练练手!然后再来看本文,相信你会对0x27服务有更深的认知!!! …

React Router 向路由组件传state参数浏览器回退历史页面显示效果问题

昨天在看尚硅谷张天禹老师讲的 React教程p90,老师讲到 React路由的 replace模式和push模式,老师的演示效果与自己本地操作不太一样。 老师的效果:点击查看消息1,消息2,消息3 再点回退,可以依次查看到 消息…

静态路由配置与调试——计算机网络实训day1

文章目录 操作前准备一、实验目的二、实验要求三、实验过程1、在R1和R2上配置设备名称。基本配置设备命名 2、在R1和R2上配置接口IP地址,并查看IP地址的配置情况。3、在R1和R2上配置静态路由,并查看路由表。静态路由缺省路由(默认路由&#x…

【HeadFirst系列之HeadFirst设计模式】第1天之HeadFirst设计模式开胃菜

HeadFirst设计模式开胃菜 前言 从今日起,陆续分享《HeadFirst设计模式》的读书笔记,希望能够帮助大家更好的理解设计模式,提高自己的编程能力。 今天要分享的是【HeadFirst设计模式开胃菜】,主要介绍了设计模式的基本概念、设计模…

UOS系统和windows系统wps文档显示差异问题解决

最近在使用UOS系统的过程中,发现了一个很有意思的现象。就是在UOS系统上编辑的文档,发到windows系统上,会出现两个文档显示差异很大的情况,文档都是使用一样的wps软件打开的。到底是什么原因导致这种现象的呢?该如何解…

网络应用层HTTP协议

网络应用层HTTP协议 1. HTTP协议介绍 在互联网世界中,HTTP(HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本(如 HTML 文档)。…

B+树的原理及实现

文章目录 B树的原理及实现一、引言二、B树的特性1、结构特点2、节点类型3、阶数 三、B树的Java实现1、节点实现2、B树操作2.1、搜索2.2、插入2.3、删除2.4、遍历 3、B树的Java实现示例 四、总结 B树的原理及实现 一、引言 B树是一种基于B树的树形数据结构,它在数据…

在 macOS 中,设置自动将文件夹排在最前

文章目录 1、第一步访达设置2、第二步排序方式 需要两步设置 1、第一步访达设置 按名称排序的窗口中 2、第二步排序方式 选择名称

【数据库】Unity 使用 Sqlite 数据库

1.找到需要三个 DLL Mono.Data.Sqlite.dllSystem.Data.dllsqlite3.dll 上面两个dll可在本地unity安装目录找到: C:\Program Files\Unity\Hub\Editor\2022.3.xxf1c1\Editor\Data\MonoBleedingEdge\lib\mono\unityjit-win32 下面dll可在sqlite官网下载到&#xff…

国内使用博查SearchAPI进行智能搜索,通过API获取搜索引擎的天气、日历、百科、手机、火车票等信息

在现代开发中,网络资源搜索是关键且常见的需求。博查SearchAPI作为国内领先的智能搜索解决方案,已服务超过2000家企业和16000名开发者,获得腾讯元器、字节扣子、阿里钉钉等官方推荐。该API提供近百亿网页内容及多样的生态合作内容&#xff0c…

免费网站源码下载指南:如何安全获取并降低开发成本

许多开发者或是需要建立网站的人,可以方便地获取免费网站源码。这样的下载能帮助他们降低开发费用,迅速构建起基本框架。但在此过程中,仍有许多需要注意的事项。 许多开发者或是需要建立网站的人,可以方便地获取免费网站源码。这…

colnames看似简单,却能优化数据处理流程

引言 在数据处理和分析中,变量名称是至关重要的,它们决定了数据的可读性和操作的简便性。在R语言中,colnames 函数以其简单的语法设计,提供了高效管理数据框列名的能力,尤其是在复杂的爬虫任务中显得尤为重要。本篇文…

计算机网络例题

IP地址分类: A类:网络号范围: 1~126 (0000 0001 ~ 0111 1110) B类:网络号范围:128.1 ~ 191.255 (可用范围) C类:网络号段范围:192.0.1 ~ 223.2…

腾讯云AI代码助手编程挑战赛 - 使用 JavaScript 构建一个简易日历

功能简介: 动态年份选择:用户可以通过下拉框选择从 2000 年到 2050 年的任意年份。全年日历生成:根据用户选择的年份,动态生成该年份的所有 12 个月份的日历。直观的 UI 设计:使用 CSS 美化日历外观,使日历…