被玩坏的网络课

起因: 开始选课的时候,只考虑学分,没考虑其他的,选了茶与健康,然后登陆上尔雅就愣了,茶?健康?完全没兴趣啊,怎么破?想来想去也只能看下去了,自己作的死,含着泪的也要做完…想着还能挂后台挂完这门课,结果打开个其他页面它居然就停止播放了,硬是要我看?不可能,我就不看,打开虚拟机,然后用虚拟机播放,把虚拟机往其他桌面一扔(现在win10,osx,linux基本都多桌面),就不管了,可是过了好长一段时间,想着这一章已经完全播放完了,打开虚拟机想播放下一章,打开虚拟机一看,我滴个亲娘啊,它居然卡在5分钟的位置,还提示网络出现故障…想了又想,还是决定一劳永逸,还多学点东西,写个脚本,视频一停就提示~

思路

脚本的思路很简单,视频一停,任务管理器立即看到虚拟机占用的资源显著下降,就抓住这一点,当虚拟机进程资源占用低于多少多少,就立即反馈给我,

实现

开始有一段探索之路就不扯了,直接来直通结果的方法…

1,打开Activity Monitor

2,找到Windows 10 Pro虚拟机的PID:2837

3,在Terminal输入$ps aux | grep 2837

4,找到其中uuid{6248b065-598e-47de-9852-7dbf667fbba4}

5,再然后每次ps aux | grep 6248b065-598e-47de-9852-7dbf667fbba4 都能找到Windows 10 Pro的进程号了

肯定有童鞋会想,直接grep找到进程名字不就的了吗?为啥还要这么麻烦,其实我也不想麻烦,只是虚拟机开的多,连top里面的进程名字都是一样的,只能找uuid这种特殊的东西了咯~

6,awk提取出PID:$ ps aux | grep {6248b065-598e-47de-9852-7dbf667fbba4} | grep VM | awk -F" " '{print $2}'

还特地debug了一下

然后再用PID在top提取出对应的CPU使用率,if命令

7,用top -l 1只使用一次top,再在其中提取,结果top -l 1的结果一直是1,使用top -l 2,第二次输出的结果就正常了,这是视频启动前和启动后结果,因为是windows 10虚拟机在当前系统运行的程序中占的CPU时间,可能程序开多了虚拟机开视频占用的CPU时间也会大幅度降低,监控点就定在10%好了(其实昨天晚上的时候看过了,在6~15%之间)

初步测试后的结果

调试细节后

加入计划任务

脚本我放在vm_win10.sh mac或者linux拿过去修改一下应该就能使用了~