macOS 系统设置息屏情况下,PHP等后台脚本继续执行

06-02 1378阅读

在 macOS 系统下,当屏幕息屏或合上盖子时,后台脚本程序是否会继续运行,主要取决于以下几个因素:

1. 系统睡眠状态的影响

  • 默认情况:合盖/息屏后,Mac 会进入「睡眠模式」(部分硬件休眠),此时:
    • CPU 任务:后台脚本(如 Python、Shell 脚本)通常会被暂停。
    • 网络请求:未完成的网络连接可能中断。
    • 例外情况:如果启用了「防止睡眠」模式,脚本会继续运行。

      2. 如何保持脚本持续运行

      ✅ 方法 1:使用 caffeinate 命令(系统自带)
      # 运行脚本时阻止睡眠(直到脚本结束)
      caffeinate -s ./your_script.sh
      # 或者永久阻止睡眠(需手动终止)
      caffeinate -dims &
      ./your_script.sh
      

      参数说明:

      • -d:阻止显示器睡眠
      • -i:阻止系统空闲睡眠
      • -m:阻止磁盘睡眠
      • -s:阻止系统睡眠(合盖仍有效)
        ✅ 方法 2:修改能源管理设置
        # 临时禁用睡眠(需 sudo 密码)
        sudo systemsetup -setcomputersleep Never
        # 恢复默认设置
        sudo systemsetup -setcomputersleep 30
        
        ✅ 方法 3:使用 tmux 或 nohup
        # 使用 tmux(推荐)
        tmux new -s mysession
        ./your_script.sh
        # 按 Ctrl+B → D 脱离会话(脚本继续运行)
        # 使用 nohup
        nohup ./your_script.sh &
        

        3. 验证脚本是否在后台运行

        # 查看所有进程
        ps aux | grep your_script
        # 查看系统睡眠状态
        pmset -g assertions
        

        如果输出中包含 PreventUserIdleSystemSleep,说明防睡眠已生效。

        4. 常见问题解决

        • 问题:合盖后 SSH 断开导致脚本终止

          方案:通过 tmux/screen 运行脚本,或使用内网穿透工具(如 frp)。

        • 问题:依赖 GUI 的脚本失败

          方案:改用无头模式(如 headless 浏览器)或 CLI 工具。

          5. 自动化建议

          如果需要长期运行后台任务,建议:

          1. 用 launchd 配置守护进程:
            
              Label
              your.script
              ProgramArguments
              
                /path/to/your_script.sh
              
              RunAtLoad
              
              KeepAlive
              
            
            
          2. 加载配置:
            launchctl load ~/Library/LaunchAgents/your.script.plist
            

          📌 总结表:Mac 息屏后脚本运行方案

          方案是否需要命令合盖后效果适用场景
          caffeinate需要持续运行临时任务
          修改 systemsetup需要 sudo持续运行长期任务(需手动恢复)
          tmux/nohup需要可能暂停远程 SSH 任务
          launchd 守护进程配置一次持续运行生产环境长期运行

          systemsetup使用方法

          在 macOS 中,systemsetup 是一个强大的命令行工具,用于配置系统级别的硬件和能源设置。以下是关于 systemsetup 的详细使用方法和常见场景:


          1. 基本命令语法

          sudo systemsetup -set 
          sudo systemsetup -get
          

          ⚠️ 需要管理员权限(sudo)


          2. 常用命令示例

          🔹 睡眠与唤醒控制
          功能命令备注
          禁用睡眠sudo systemsetup -setcomputersleep Never合盖/息屏不睡眠
          设置睡眠时间sudo systemsetup -setcomputersleep 3030分钟后睡眠
          禁用显示器睡眠sudo systemsetup -setdisplaysleep Never仅屏幕不关闭
          获取当前设置sudo systemsetup -getcomputersleep查看睡眠超时
          🔹 网络唤醒(Wake-on-LAN)
          # 启用网络唤醒
          sudo systemsetup -setwakeonnetworkaccess on
          # 检查状态
          sudo systemsetup -getwakeonnetworkaccess
          
          🔹 时间同步
          # 使用NTP时间同步
          sudo systemsetup -setnetworktimeserver time.apple.com
          sudo systemsetup -setusingnetworktime on
          
          🔹 启动磁盘设置
          # 指定启动磁盘
          sudo systemsetup -setstartupdisk /Volumes/macOS
          # 列出可用启动磁盘
          sudo systemsetup -liststartupdisks
          

          3. 能源管理相关命令

          查看所有能源设置:
          pmset -g
          
          单独配置电池/电源适配器模式:
          # 电池模式下不休眠
          sudo pmset -b sleep 0
          # 电源适配器模式下不休眠
          sudo pmset -c sleep 0
          

          4. 实用技巧

          🔸 防止合盖睡眠(同时允许其他睡眠)
          # 合盖时不睡眠(需重启生效)
          sudo pmset -a disablesleep 1
          # 恢复默认
          sudo pmset -a disablesleep 0
          
          🔸 SSH远程唤醒
          # 允许SSH唤醒(需先启用网络唤醒)
          sudo systemsetup -setremoteappleevents on
          
          🔸 日志查看
          # 查看睡眠/唤醒日志
          log show --predicate 'eventMessage contains "Sleep"' --last 24h
          

          5. 恢复默认设置

          # 恢复所有睡眠设置默认值
          sudo pmset -a restoredefaults
          

          ⚠️ 注意事项

          1. 部分设置需要重启生效
          2. 长期禁用睡眠可能导致过热
          3. 使用 -a 参数表示所有电源模式(-b=电池,-c=电源适配器)

          6. 图形化替代方案

          如果不想用命令行,可以通过以下路径修改:

          1. 系统设置 > 电池 > 调整睡眠时间
          2. 系统设置 > 锁定屏幕 > 关闭「睡眠时锁定屏幕」

          通过 systemsetup 和 pmset 的组合使用,你可以精准控制 Mac 的睡眠行为,满足后台脚本持续运行的需求。

          macOS 系统设置息屏情况下,PHP等后台脚本继续执行

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码