北肙

当你不能够再拥有,唯一可以做的,就是令自己不要忘记。

利用PDCA模型揪出macOS偷跑流量的进程

前言 最近办公环境没有无线网,只能拿手机热点来凑合一下,没想到短短2天时间,居然用完了原本套餐中的20G。本来以为是电脑平台网页内容比较丰富,一些广告和预加载的视频消耗了绝大多数流量。 可是,当新办理的3天10G流量包又被耗尽后,终于还是忍不住穷人的好奇心,本着栽都栽了,总得知道谁挖了坑的原则,就想着打开活动监视器瞅一眼有没有嫌疑人,也好沷一盆狗血过去以解心头之恨。 诶,你说就巧了,刚出手就逮住一个不怀好意的进程,“nsurlsessiond”,肉眼可见不到1分钟发了20M的包。 好在春意惭浓之际,咱也没有荒废手脚工夫,学了一套叫PDCA的内功心法,正好就拿来审一审这偷包的小贼。 目录 概述 关于PDCA模型 关键词 目的 展开说说 Plan·计划 可用的模型(GPT献计) 计划之后的结论(节点1) Do·执行 执行过程中可参考的原则(GPT) 执行及记录(节点2) Check·检查 检查阶段中的原则或方法(GPT) 对关键步骤1进行检查评估(节点3) Act·行动 关于Do和Act两个阶段的区别讨论(GPT) 复盘后的重新执行 第一轮PDCA结果 PDCA整体循环结构 阶段性结论 但是 PDCA循环2 总结 后记 概述 利用PDCA管理模型实践关停macOS后台流量杀手的道与术。 关于PDCA模型 关键词 管理方法 持续改进 四个阶段 Plan(计划) Do(执行) Check(检查) Act(行动) 目的 旨在帮助组织和个人通过循环性的过程,持续改进其业务、流程和产品。 展开说说 Plan·计划 形成一个初步的计划,并将此计划拆分成可具体执行的动作。 可用的模型(GPT献计) SMART目标: SMART目标是具体(Specific)、可衡量(Measurable)、可达成(Achievable)、相关(Relevant)和有时限(Time-bound)的目标。通过设定SMART目标,可以确保目标清晰明确,有助于提高执行的可行性。 SWOT分析: SWOT分析是评估组织或项目的优势(Strengths)、劣势(Weaknesses)、机会(Opportunities)和威胁(Threats)的方法。通过SWOT分析,可以识别内部和外部环境中的关键因素,帮助确定改进的重点和方向。 5W1H分析: 5W1H分析涉及回答一系列问题:谁(Who)、什么(What)、何时(When)、为什么(Why)、如何(How)和在哪里(Where)。这种分析方法有助于全面理解问题的本质和影响因素。 鱼骨图(Ishikawa图): 鱼骨图是一种问题分析工具,也称为因果图或Ishikawa图。它将问题分解为不同的因素,包括人员、方法、机器、材料、环境和测量等,帮助识别根本原因并制定解决方案。 […]

前言

最近办公环境没有无线网,只能拿手机热点来凑合一下,没想到短短2天时间,居然用完了原本套餐中的20G。本来以为是电脑平台网页内容比较丰富,一些广告和预加载的视频消耗了绝大多数流量。

可是,当新办理的3天10G流量包又被耗尽后,终于还是忍不住穷人的好奇心,本着栽都栽了,总得知道谁挖了坑的原则,就想着打开活动监视器瞅一眼有没有嫌疑人,也好沷一盆狗血过去以解心头之恨。

诶,你说就巧了,刚出手就逮住一个不怀好意的进程,“nsurlsessiond”,肉眼可见不到1分钟发了20M的包。

好在春意惭浓之际,咱也没有荒废手脚工夫,学了一套叫PDCA的内功心法,正好就拿来审一审这偷包的小贼。

目录

概述

利用PDCA管理模型实践关停macOS后台流量杀手的道与术。

关于PDCA模型

关键词

  1. 管理方法
  2. 持续改进
  3. 四个阶段
    1. Plan(计划)
    2. Do(执行)
    3. Check(检查)
    4. Act(行动)

目的

旨在帮助组织和个人通过循环性的过程,持续改进其业务、流程和产品。

展开说说

Plan·计划

形成一个初步的计划,并将此计划拆分成可具体执行的动作。

可用的模型(GPT献计)
  1. SMART目标

    • SMART目标是具体(Specific)、可衡量(Measurable)、可达成(Achievable)、相关(Relevant)和有时限(Time-bound)的目标。通过设定SMART目标,可以确保目标清晰明确,有助于提高执行的可行性。
  2. SWOT分析:

    • SWOT分析是评估组织或项目的优势(Strengths)、劣势(Weaknesses)、机会(Opportunities)和威胁(Threats)的方法。通过SWOT分析,可以识别内部和外部环境中的关键因素,帮助确定改进的重点和方向。
  3. 5W1H分析:

    • 5W1H分析涉及回答一系列问题:谁(Who)、什么(What)、何时(When)、为什么(Why)、如何(How)和在哪里(Where)。这种分析方法有助于全面理解问题的本质和影响因素。
  4. 鱼骨图(Ishikawa图):

    • 鱼骨图是一种问题分析工具,也称为因果图或Ishikawa图。它将问题分解为不同的因素,包括人员、方法、机器、材料、环境和测量等,帮助识别根本原因并制定解决方案。
  5. PDCA表格:

    • PDCA表格是一种用于记录PDCA循环的工具,用于追踪计划、执行、检查和行动阶段的活动和结果。它有助于组织和跟踪改进项目的进度和效果。

本文就GPT给出的第一条方法论SMART目标来作出计划。

计划之后的结论(节点1)

关键目标1 ^ec32ea

在电脑接入手机热点后的半小时内(有时限),利用操作系统自带的监控工具(具体),粗略查看分钟量级内(可衡量)发送网络包(相关)数量最多(可达成)的进程。

关键步骤1|[[#^d524f0]]

Do·执行

执行过程中可参考的原则(GPT)

在PDCA模型的执行阶段,虽然没有特定的原则,但有一些关键的指导方针和实践方法,有助于确保执行阶段的顺利进行,并为后续的检查和行动阶段奠定基础。以下是一些原则性的指导:

  1. 清晰的沟通和责任分配

    • 在执行阶段,确保团队成员之间的沟通顺畅,每个人都清楚自己的责任和角色。明确指定任务的执行者,确保所有人都了解任务的要求和期限。
  2. 有效的资源管理

    • 确保所需的资源(包括人力、物力、财力等)得到充分分配和利用。这包括合理安排时间、预算、设备和技术支持等,以支持项目或任务的顺利执行。
  3. 持续监控和跟踪

    • 在执行阶段,定期监控项目或任务的进度和执行情况。这可以通过设置里程碑、跟踪关键绩效指标、定期会议等方式来实现,以确保计划按时和按质量执行。
  4. 灵活应变和问题解决

    • 在执行过程中可能会出现各种问题和挑战,团队需要具备灵活应变的能力,及时解决问题,确保计划顺利执行。这包括识别问题、制定应对策略、调整计划等。
  5. 持续改进和学习

    • 在执行阶段,团队应该不断寻求改进和学习的机会,尝试新的方法和技术,以提高工作效率和质量。这可以通过经验总结、知识分享、培训等方式来实现。
  6. 记录和反馈

    • 记录执行阶段的关键信息和结果,并提供及时的反馈。这有助于团队和管理层了解项目的进展情况和问题,及时做出调整和决策。

这些原则和指导方针有助于确保PDCA模型的执行阶段顺利进行,确保项目或任务按计划实施,并为后续的检查和行动阶段奠定基础。

执行及记录(节点2)

关键步骤1 ^d524f0

在监视器中找到了关键目标|[[#^ec32ea]]中消耗流量的头号进程: 'nsurlsessiond'。

假设
将该进程kill掉,就会终结流量偷跑。

验证
几分钟后该进程会自动重启,重新大量发送网络包。

Check·检查

检查阶段中的原则或方法(GPT)
  1. 收集数据和信息

    • 在检查阶段,团队会收集关于实施阶段的数据和信息,这可能涉及到执行任务的进度、项目的绩效指标、客户反馈等等。
  2. 分析执行结果

    • 团队会对收集到的数据和信息进行分析,比较实际结果与预期目标之间的差距,以确定执行阶段的效果如何。
  3. 评估过程和成果

    • 检查阶段的重点是评估项目或任务的执行过程和结果,以确保它们符合预期目标和要求。这可能涉及到审查项目文档、分析关键绩效指标、评估客户满意度等等。
  4. 识别问题和机会

    • 在检查阶段,团队会识别任何执行过程中出现的问题或改进机会。这包括识别偏差、识别根本原因、确定问题的严重性等等。
  5. 制定改进计划

    • 基于检查阶段的评估结果,团队会制定具体的改进计划,以纠正问题、改进流程或提高绩效水平。这可能包括调整工作流程、提供额外培训、改进沟通机制等等。
  6. 持续改进

    • 检查阶段是一个持续改进的过程,它不仅涉及对当前项目的评估,还包括对PDCA循环过程本身的改进。团队应该寻求持续改进的机会,以提高工作效率和质量。
对关键步骤1进行检查评估(节点3)

关键步骤1|[[#^d524f0]]

  1. 分析执行结果
    • kill掉后会触发进程重启,推测该进程有后台常驻服务
  2. 改进计划
    • 找出该进程'nsurlsessiond'背后的服务,通过停止该服务来实现流量限制。

修正目标1 ^b00580

  1. 查看macOS命令launchctl列出服务及启停操作参数
  2. 找出nsurlsessiond进程的后台服务 ^3d11e7
  3. 将步骤1|[[#^3d11e7]]中的服务临时停止(stop但保留enable)
  4. 查看Activity Monitor中进程是否还存在

Act·行动

关于Do和Act两个阶段的区别讨论(GPT)

在PDCA模型中,DO阶段和ACT阶段都涉及到实际的执行和行动,但它们在目的和时机上有一些不同之处。

  1. DO阶段(执行阶段)

    • DO阶段是指执行计划中制定的具体行动和任务。在这个阶段,团队将计划中制定的方案付诸实施,按照预定的时间表和程序执行工作。DO阶段主要关注的是计划的具体实施,包括资源分配、任务分配、执行计划等。
  2. ACT阶段(行动阶段)

    • ACT阶段是指根据CHECK阶段的结果,采取相应的行动来纠正问题、改进流程或实现优化。在这个阶段,团队根据CHECK阶段的检查和评估结果,确定需要采取的具体行动,并实施这些行动以改善现状。

简而言之,DO阶段更侧重于计划的实际执行,而ACT阶段更侧重于根据检查阶段的评估结果采取相应的行动。DO阶段是计划的执行过程,而ACT阶段是对检查阶段结果的回应和调整过程。在PDCA循环中,DO和ACT阶段紧密联系,共同构成了持续改进的循环。

画重点

  • Do是对Plan计划的实际执行
  • Act是对Check检查结果的回应
  • Check有点类似复盘,而Act更像是补刀

复盘后的重新执行

修正步骤1 ^927b60

  1. 找出后台服务

    $ launchctl 
    ...
    list            Lists information about services.
    start           Starts the specified service.
    stop            Stops the specified service if it is running.
    ...
    
    $ launchctl list | grep nsurlsessiond
    -    0    com.apple.nsurlsessiond
  2. 停止后台服务

    $ launchctl stop com.apple.nsurlsessiond
  3. 检查服务状态

    # 停止服务时无报错,但查看状态时却提示有两个并行的服务
    $ launchctl print com.apple.nsurlsessiond | grep -E "^\tstate"
    Unrecognized target specifier, did you mean
    system/com.apple.nsurlsessiond_privileged
    gui/501/com.apple.nsurlsessiond
    
    Usage: launchctl print <domain-target> | <service-target>
    <service-target> takes a form of <domain-target>/<service-id>.
    Please refer to `man launchctl` for explanation of the <domain-target> specifiers.
  4. 先查看用户级别的服务运行的PID

    $ launchctl print gui/501/com.apple.nsurlsessiond | grep pid
    pid = 30158
  5. 查看进程nsurlsessiond的PID

    从macOSActivity Monitor中也可以看到该进程ID为30158
    ![[Activity_Monitor_PID.png]]

  6. 确认进程nsurlsessiond与服务gui/501/com.apple.nsurlsessiond是对应关系

  7. 查看监视器,进程已消失

第一轮PDCA结果

  1. P - 根据现象进行假设,并制定出计划:关键目标1[[#^ec32ea]]
  2. D - 执行关健目标1,过程记录为:关键步骤1[[#^d524f0]]
  3. C - 对步骤1的结果进行检查和评估,修正后得出:修正目标1[[#^b00580]]
  4. A - 步骤修正后进行验证:修正步骤1[[#^927b60]]

PDCA整体循环结构

阶段性结论

  1. 命中进程:nsurlsessiond
  2. 对应服务有两个
    1. 用户级别:gui/501/com.apple.nsurlsessiond
    2. 系统级别: system/com.apple.nsurlsessiond_privileged
  3. 停止对应的服务launchctl stop com.apple.nsurlsessiond后进程消失

但是

一段时间后进程仍然死灰复燃!!!!

PDCA循环2

假设进程是由系统级别的服务,也就是system/com.apple.nsurlsessiond_privileged控制的,那么只停止用户态的服务,确实只能短暂杀掉进程。

关键目标2

以超级用户权限结束服务system/com.apple.nsurlsessiond_privileged,并用launchctlprint参数配合grep持续查看服务状态,同时监控进程的存留。

关键步骤2

$ sudo launchctl stop system/com.apple.nsurlsessiond_privileged 
Password:

$ launchctl print system/com.apple.nsurlsessiond_privileged | grep state
state = running
job state = running

修正目标2

考虑到停止服务launchctl stop com.apple.nsurlsessiond后进程有一段下线时间,权宜之计,在脚本中以while循环判断进程存在或者服务启动时自动执行launchctl stop的操作。

修正步骤2

#!/bin/bash

while true; do  
  if launchctl print gui/501/com.apple.nsurlsessiond | grep -E "^\tstate" | grep not >/dev/null 2>&1; then  
    echo $(date "+%Y%m%d %H:%M:%S")  
    echo 'nsurlsessiond is not running.'  

    launchctl print gui/501/com.apple.nsurlsessiond | grep state | sed 's/\t//g'  
    ps -ef | grep nsurlsessiond | grep -v grep  

  else  
    echo $(date "+%Y%m%d %H:%M:%S")  
    echo 'nsurlsessiond is running.'  

    launchctl stop com.apple.nsurlsessiond  
    launchctl stop system/com.apple.nsurlsessiond_privileged  
    launchctl stop gui/501/com.apple.nsurlsessiond  
    echo 'service stopped'  
  fi  

  echo '-----'  
  echo  
  sleep 3  
done

果然,运维的尽头都是脚本😭😭

总结

本文以PDCA模型为指导,以近乎杀鸡焉用牛刀之势,做了一次高射炮打蚊子的典型伪案例。解决问题的术和道,总是玲琅满目,也不存在什么优劣之分,作为一次成功的演习性尝试,重点并不在于在日常或者工作上有什么质的突破,也不妄想凑够寥寥几字就能够一鸣惊人,关键是体验一种乐趣,从细枝末节寻找自我实现,或者是正反馈,亦是闭环激励,总是求得心理上的专注,也不免在桎梏之中,与鸟兽为伍,作困局之争。

后记

其实最有效的克敌之法,莫过于以子之予攻子之盾。Apple macOS自己的省电功能可以使得iCloud在不外接电源的情况下暂停后台同步功能。

所以,无代码的替代方案便是:拔掉电源。

Leave a Reply

Your email address will not be published. Required fields are marked *