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

Linux中的前台(同步)运行 或 后台(异步)运行

✅ 一、前台运行(默认方式)

./myscript.sh

• 脚本会在 前台 运行,直到结束。
• 你必须等它跑完才能进行其他操作(除非用 & 或 Ctrl+Z)。


✅ 先复习两者作用:

关键词作用
&把任务 放到后台,但是它仍然依赖于当前终端,终端关闭则任务终止。
nohup忽略“挂起”信号,任务不受终端关闭影响,可以在后台或前台都使用。

✅ 场景 1:只加 &(后台运行,但受终端控制)

./script.sh &

✅ 效果:

  • 程序在后台运行,你可以继续操作终端。

  • 一旦你关闭终端,任务就会被终止(因为默认会发送 SIGHUP 信号)。

✅ 使用场景:

  • 你只是在一个临时终端里,想让程序在当前 session 后台执行一会儿,稍后会手动查看或等待它完成。

  • 临时查看后台效果,不关心断开终端。


✅ 场景 2:只加 nohup(抗挂起,但仍是前台运行)

nohup ./script.sh

✅ 效果:

  • 程序在前台运行,但你关闭终端时,它不会被杀死。

  • 输出默认会写入 nohup.out 文件。

✅ 使用场景:

  • 不需要手动管理后台,只是希望程序在你断开终端连接(如 SSH)后依然运行。

  • 程序很快执行完,你不想留后台任务。


✅ 场景 3:nohup + &(最常用组合)

nohup ./script.sh > out.log 2>&1 &

✅ 效果:

  • 程序在后台运行,终端关闭后不会退出

  • 输出被重定向到日志文件中,任务独立、稳定。

✅ 使用场景:

  • 部署长期运行的服务、定时任务、训练模型等。

  • 生产环境首选写法,稳定、可控、安全。


🔍 你如果问:“到底加不加 nohup,加不加 &?”

是否长时间运行?是否要关终端?推荐写法
./script.sh
nohup ./script.sh
./script.sh &
是 ✅推荐✅nohup ./script.sh & 或加日志

🧪 总结对比表

写法后台运行断开终端是否继续日志重定向推荐程度
./script.sh &❌(会挂掉)一般
nohup ./script.sh❌(前台)默认写到 nohup.out中等
nohup ./script.sh &✅(可指定)✅ 最推荐
nohup ./script.sh > log &✅ 最推荐

后台程序的输出去哪了?我如何查看?


🧾 一、你是怎么启动后台程序的?对应查看方法如下:

✅ 1. 如果你使用的是:

nohup ./script.sh > out.log 2>&1 &
🟢 查看方式:
cat out.log        # 查看全部输出
tail -f out.log    # 实时查看日志(最常用)
less out.log       # 分页查看(适合大文件)

✅ 2. 如果你使用的是:

nohup ./script.sh &

没有手动重定向输出时,默认输出到当前目录的 nohup.out 文件中

🟢 查看方式:  tail -f nohup.out
cat nohup.out
tail -f nohup.out

✅ 3. 如果你使用的是:

./script.sh > out.log 2>&1 &

你没用 nohup,终端关闭时程序会终止。但如果你只是用 & 放到后台,终端还在,输出写到 out.log

🟢 查看方式:
tail -f out.log

✅ 4. 如果你啥都没加,只是:

./script.sh

输出在终端屏幕上,终端关闭就没了,也不会保存。


🧰 二、如何找到正在运行的后台任务(确认它还在)?

ps aux | grep script.sh      # 查找你的脚本是否还在
jobs -l                      # 查看你当前 shell 的后台任务(前提是没关终端)

🛑 三、终端关闭后,还能找回任务输出吗?

  • 如果你没有用 nohup 或者没有重定向日志,终端一关,输出就丢了。

  • 所以建议你:永远加上日志重定向 > out.log 2>&1 或者使用 tee 命令保存到文件。


✨ 建议模板(推荐使用)

nohup ./script.sh > my.log 2>&1 &

然后用:

tail -f my.log

http://www.xdnf.cn/news/8758.html

相关文章:

  • java 代码查重(四)删除java文件中注释的方法后查重实现
  • 鼠标连点器 ,实现鼠标自动点击
  • DVWA通关笔记-靶场安装教程
  • SQL每日一题(5)
  • 阿斯利康医学代表在线测评笔试题库 | 3天备考、能力测评、性格测评历年真题 | 华东同舟求职讲求职
  • 分布式缓存:缓存设计中的 7 大经典问题_缓存失效、缓存穿透、缓存雪崩
  • RV1126+FFMPEG多路码流监控项目大体讲解
  • 【软件测试】第三章·软件测试基本方法(缺陷模式、模型、形式化测试方法)
  • 关键点翻转 数据增强踩坑
  • C++性能相关的部分内容
  • 数据类型与运算符
  • 6.3.1图的广度优先遍历
  • 第一课:医学影像研究的科学思维与问题提出
  • js实现音频的录制
  • Vue 样式不一致问题全面分析与解决方案
  • 专业学习|经济学与管理学常用分析工具详解
  • 【人工智能】微调秘籍:解锁AI大模型的定制化魔法
  • python装饰器的简单理解
  • (2)-玩转Fiddler抓包-再识Fiddler
  • 天地图实景三维数据分享(江苏)
  • 【iOS】内存分区
  • 第2周 PINN核心技术揭秘: 如何用神经网络求解偏微分方程
  • 消息中间件之kafka
  • WSL 下面 Buildroot + QEMU 环境记录一下
  • [特殊字符] 使用增量同步+MQ机制将用户数据同步到Elasticsearch
  • Linux(6)——第一个小程序(进度条)
  • LeetCode 2942.查找包含给定字符的单词:使用库函数完成
  • 台式机安装新的固态硬盘后无显示
  • 【C语言练习】060. 使用指针操作字符串
  • Kotlin全栈工程师转型路径