当前位置:

首页 > 系统应用 > Linux怎么设置脚本在后台持续运行

Linux怎么设置脚本在后台持续运行

本文目录

    最常用但常写错的 nohup 命令必须同时满足忽略 SIGHUP、后台执行、输出重定向、路径与权限可靠四条件;漏一即断开 SSH 后进程大概率消失。nohup ./script.sh > log 2>&1 & 是最常用但常写错的组合 它不是“加个 nohup 就完事”,而是必须同时满足四个条件:忽略

    最常用但常写错的 nohup 命令必须同时满足忽略 SIGHUP、后台执行、输出重定向、路径与权限可靠四条件;漏一即断开 SSH 后进程大概率消失。

    Linux怎么设置脚本在后台持续运行

    nohup ./script.sh > log 2>&1 & 是最常用但常写错的组合

    它不是“加个 nohup 就完事”,而是必须同时满足四个条件:忽略 SIGHUP、后台执行、输出重定向、路径与权限可靠。漏掉任意一个,断开 SSH 后进程大概率消失。

    • nohup 只负责忽略挂断信号,不自动后台运行 —— 必须显式加 &
    • 不重定向输出时,nohup 会尝试写入当前目录下的 nohup.out;若目录不可写(比如在 /root 下普通用户执行),命令直接失败,返回码 125
    • nohup ./script.sh& 中 nohup 和 ./script.sh 之间**必须有空格**,否则 shell 会查找名为 nohup./script.sh 的命令,报 command not found
    • 脚本内若调用 read、sudo -i、ssh 等依赖 TTY 的命令,nohup 不提供伪终端,这些命令会立即阻塞或退出

    Python 脚本要加 -u 参数,否则日志延迟严重

    Python 默认启用 stdout 缓冲,尤其在重定向到文件时,输出可能卡住几十秒甚至更久才刷盘。这不是 nohup 的问题,而是 Python 自身行为。

    • 正确写法:nohup python -u script.py > output.log 2>&1 &
    • 不加 -u 时,tail -f output.log 看不到实时日志,容易误判脚本卡死
    • 也可在脚本开头加 import sys; sys.stdout.flush() 配合手动刷新,但不如 -u 简单可靠
    • 对于使用 logging 模块的脚本,需设置 stream=sys.stdout 并禁用 buffering,或直接用 python -u

    真正脱离终端控制,用 setsid 而不是 nohup &

    当 nohup ./script.sh > log 2>&1 & 意外退出时,很可能是shell在退出前向作业表中的进程发送了SIGHUP信号。即使进程忽略了该信号,某些程序(例如包含readline的交互逻辑)也会主动清理并退出。

    • setsid ./script.sh > log 2>&1 不需要 &,它直接 fork 新 session,父进程变为 init(PID 1),彻底脱离原终端控制链
    • 比 nohup 更底层,绕过 shell job table,不受 disown 或 exit 影响
    • 不依赖当前 shell 是否支持 job control,适合嵌入式或最小化环境
    • 注意:setsid 不处理输出重定向,必须手动加上 > log 2>&1,否则输出仍可能干扰终端

    长期服务别硬扛 nohup,改用 systemd --user

    nohup 是临时方案,不是服务管理工具。它不处理崩溃重启、依赖顺序、资源限制、日志轮转 —— 这些都得自己补。

    • 创建 ~/.config/systemd/user/myscript.service,内容包含 [Service] 段中 Type=simple、Restart=on-failure、RestartSec=10
    • 启用并启动:systemctl --user daemon-reload && systemctl --user enable --now myscript.service
    • 日志统一由 journalctl --user -u myscript.service 查看,自动按时间轮转
    • 脚本里避免用相对路径 —— systemd 启动时 cwd 是 home 目录,不是脚本所在目录;要么用绝对路径,要么在 service 文件里加 WorkingDirectory=/path/to/script

    真正棘手的问题并非“如何启动它”,而是“怎样让它持续稳定地运行”。nohup解决的是信号问题,setsid解决的是会话问题,systemd解决的是生命周期问题——选择哪一个,取决于你是否愿意为稳定性多花费十分钟进行配置。

    本文内容来源于网友投稿,如有侵权请联系删除。
    作者最新文章
    系统应用
    相关文章 更多
    win10取消开机密码和取消PIN码有什么区别
    win10取消开机密码和取消PIN码有什么区别

    很多用户混淆Win10的开机密码和PIN码。取消PIN码只是删除设备级快捷登录,密码仍保留;取消密码则可能让电脑处于无保护状态。本文解析两者本质区别,指导如何在【设置】中正确管理登录选项,避免误操作导致安全隐患。

    win10取消开机密码后唤醒电脑仍要密码怎么解决
    win10取消开机密码后唤醒电脑仍要密码怎么解决

    Win10设置了自动登录,但睡眠唤醒或锁屏后依然要求输入密码?这是因为开机验证与唤醒验证由不同设置控制。本文教你分别调整登录选项、电源计划和屏保设置,彻底解决唤醒需密码的问题。

    不运行MCT工具,怎么直接下载Win10 64位官方ISO?
    不运行MCT工具,怎么直接下载Win10 64位官方ISO?

    不想安装媒体创建工具?本教程教你通过修改浏览器标识,在微软官网直接获取Windows 10 64位官方ISO文件,安全纯净且无需第三方软件。

    Windows 10官网下载地址在哪?微软官方下载入口指引
    Windows 10官网下载地址在哪?微软官方下载入口指引

    寻找 Windows 10 官方下载入口?本文详解如何避开第三方广告,通过微软官网获取正版 ISO 镜像或使用工具制作启动 U 盘,并说明版本选择与支持周期注意事项。

    win10家庭版无法打开组策略怎么关闭自动更新
    win10家庭版无法打开组策略怎么关闭自动更新

    Win10家庭版找不到gpedit.msc?别急着装第三方工具。通过系统自带的暂停更新、活动时间和计量连接设置,即可在不破坏系统稳定性的前提下,有效减少自动更新的打扰。

    win10怎么阻止系统自动安装硬件驱动更新
    win10怎么阻止系统自动安装硬件驱动更新

    Win10自动更新驱动导致设备异常?本文详解如何在专业版中通过组策略禁止Windows Update推送驱动,以及家庭版用户的替代控制方法。保留安全更新,仅阻断驱动自动安装,附驱动回滚与验证步骤。

    怎么将Win10家庭中文版无损升级到专业版
    怎么将Win10家庭中文版无损升级到专业版

    详细讲解如何通过微软官方渠道,使用有效产品密钥将Windows 10家庭中文版无损升级为专业版,保留原有文件与应用,并提供激活状态检查与故障处理建议。

    win10取消开机密码后远程访问电脑会受影响吗?
    win10取消开机密码后远程访问电脑会受影响吗?

    详解Win10取消开机密码后,远程桌面(RDP)和局域网文件共享为何无法连接。分析空密码账户的安全限制,区分自动登录与远程授权的区别,并提供安全的远程访问配置建议。

    win10重装系统后,怎么快速取消开机登录密码
    win10重装系统后,怎么快速取消开机登录密码

    Win10重装后每次开机都要输密码?本教程教你先分辨本地账户与Microsoft账户,再通过密码置空、设置PIN或使用netplwiz配置自动登录,快速实现开机直接进入桌面,同时保障账户安全。

    win10企业版取消开机密码需要注意哪些设置
    win10企业版取消开机密码需要注意哪些设置

    Win10企业版取消开机密码前需确认设备是否加入域或受组策略管理。本文详解如何区分本地账户与Microsoft账户,正确设置自动登录,以及处理企业环境下的登录策略限制,确保操作合规且安全。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    macOS软件
    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    Mac软件 更多
    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

    灵活计算器
    灵活计算器
    macOS/iOS/Android

    灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

    WINDOWS 更多
    3dmax(3ds max)
    3dmax(3ds max)
    Windows

    Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。