文档章节

Mac下定时任务清理内存

康州牧码人
 康州牧码人
发布于 2016/10/26 20:08
字数 1081
阅读 335
收藏 18

    使用mac的小伙伴都知道,打开的程序多了用着用着,mac的内存就会飙升,如果你装有类似“腾讯电脑管家”,这货里面有个内存管理功能,类似于360的内存清理的浮动球,会发现他经常99%....虽然说,mac系统不会卡,很少会出现点击了没反应,但是你看着一个logo在Dock跳呀跳跳呀跳,也是超级不爽的嘛...

    据说,这是mac系统会缓存一部分的数据,增加下次访问速度;  不过,鬼知道他缓存的是啥,鬼知道他什么时候释放,他怎么知道我下一次需要啥文件,问都不问就缓存下来了.....

    

    其实也不是开很多程序,以我为例哈,我是做基于H5技术做hybrid的码农;首先,编辑器要打开吧,WebStorm....浏览器要打开吧,chrome....打包用的IDE,xcode....好,就这些,没有了,可这么几个应用,mac就经常会飙到99%的内存占用。

    

     在google搜索一顿,发现mac中有个命令叫 purge,使用这个命令可以清空系统内存;我的天,这就是我需要的,给他上个sudo,执行 sudo purge,内存占用马上下来了;那么问题又来了,这内存占用肯定是“野火烧不尽,春风吹又生”的,但是我总不能隔一会就手动在terminal里面去执行一次sudo purge呀...这不是更崩溃吗,还不如不清理呢....

    所以,聪明的人们发现了重复的劳动力的惯性任务都可以使用定时任务去完成,例如备份日志,备份数据库,监控这类;所以,我也打算使用定时任务来清除内存;

    MAC上定时任务可以使用launchctl或者crontab,我个人选择了launchctl;

    使用launchctl只需要以下几步,我会直接贴代码并且带上简单描述:    

        一、编写plist文件 com.xxxxxx.xxxx.plist文件 ,把这个文件丢到/Library/LaunchAgents下

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  
<plist version="1.0">  
  <dict>
    <!-- 名称,要全局唯一 -->
    <key>Gavin_Clear_RAM</key>
    <string>com.xxxxxx.xxxxx</string>

    <!-- 要运行的程序 路径 -->
    <key>Program</key>
    <string>/Users/xxxx/xxxxx/sh_file/clear.sh</string>

    <!-- 运行间隔,与StartCalenderInterval使用其一,单位为秒s -->
    <key>StartInterval</key>
    <integer>300</integer>

    <!-- 标准输入文件 -->
    <key>StandardInPath</key>
    <string>/Users/xxxxxx/xxxxx/sh_file/run-in.log</string>

    <!-- 标准输出文件 -->
    <key>StandardOutPath</key>
    <string>/Users/xxxxx/xxxx/sh_file/run-out.log</string>

    <!-- 标准错误输出文件 -->
    <key>StandardErrorPath</key>
    <string>/Users/xxxxx/xxxx/sh_file/run-err.log</string>

  </dict>  
</plist>

        有几个其他参数我没用到,所以省略了,有需要的话,可以找一下下面参考的文章

        二、编写bash代码 clear.sh:这个比较简单,我就是执行sudo purge,然后打印日志到某个文件

#!/bin/bash

sudo purge 

#文件路径,不需要日志可以吧日志注释掉
echo "clear success at :"+`date "+%Y/%m/%d %X"` >> /Users/xxxx/xxxx/sh_file/clear 

    这里面有两个点需要注意:

        1、sudo purge这个会让你输入管理员密码,所以你必须让这个指令不用输入密码;所以,请自行完成google/百度 :mac sudo 命令 不需要密码   

        2、必须让clear.sh是可执行的,给足够的权限 chmod 777 clear.sh

        三、把第一步创建的plist文件丢到/Library/LaunchAgents下,根据自己的需要,执行以下命令,一般是1,5就OK了,1执行,5查看有木有,satrt可以看到效果

1.launchctl load   /Library/LaunchAgents/com.xxxxx.xxxx.plist #加载plist文件
2.launchctl unload /Library/LaunchAgents/com.xxxxx.xxxx.plist #卸载
3.launchctl start  /Library/LaunchAgents/com.xxxxx.xxxx.plist #立即运行,先load,在执行start
4.launchctl stop   /Library/LaunchAgents/com.xxxxx.xxxx.plist #立即停止
5.launchctl list | grep xxxx #查看列表

    

    好!就是酱紫!时间你自己设置就好!我比较喜欢60s执行一次,妥妥的!

 

 

参考:

代码:https://github.com/niezw/crontab_to_clear_mac_arm

具体关于launchctl的其他操作,可以看看:https://my.oschina.net/shede333/blog/470377

sudo不需要密码:http://www.examw.com/os/windows/133193/

 



© 著作权归作者所有

共有 人打赏支持
康州牧码人
粉丝 6
博文 24
码字总数 10993
作品 0
深圳
程序员
不管会不会,我是这样在mac上n次安装与卸载mysql的

咬咬牙,坚持就会成为习惯 最近公司安排任务去研究unity ar ,这对于一心在web开发,特别是前端技术的我,可以说带来了不少困扰和情绪上的变动。可是当我静下心来想想,梦想是梦想,实际是实...

ziven先生
2017/03/30
0
0
Android 异步编程

文章作者:朱鸿,淘宝资深架构师 原文出处:http://hugozhu.myalert.info/2014/06/29/46-async-android.html Android的线程和内存模型 Android操作系统在boot后,会启动一个Zygote(受精卵)进...

鉴客
2014/07/01
1K
1
Oracle下定时删除归档日志脚本

一、报错信息 前几天网站突然访问不了,并且报了如下错误: ora-27101: shared memory realm does not exist ora-01034: oracle not available 11g ORA-24324: service handle not initiali......

M四月天
2017/12/06
0
0
优化Linux系统资源和加快启动速度的方法

编辑/etc/inittab文件 大部分Linux的发行套件都建立六个虚拟控制台,如果你的内存资源比较紧张,而且使用一个已经足够,可以编辑/etc/inittab文件,节省可贵的内存空间。在下面五行的前面加上...

范堡
2009/05/07
550
0
Mac上,执行定时任务:launchctl

在Mac上定时执行任务 在Mac上,执行定时任务,有两种方式: 使用 沿袭Linux常用的命令 毕竟咱是在mac上开发,这里只讲的用法 1.首先需要编写plist文件 下图是我的一个很简单的任务plist文件:...

shede333
2015/06/24
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

qduoj~前端~二次开发~打包docker镜像并上传到阿里云容器镜像仓库

上一篇文章https://my.oschina.net/finchxu/blog/1930017记录了怎么在本地修改前端,现在我要把我的修改添加到部署到本地的前端的docker容器中,然后打包这个容器成为一个本地镜像,然后把这...

虚拟世界的懒猫
33分钟前
1
0
UML中 的各种符号含义

Class Notation A class notation consists of three parts: Class Name The name of the class appears in the first partition. Class Attributes Attributes are shown in the second par......

hutaishi
45分钟前
0
0
20180818 上课截图

小丑鱼00
今天
1
0
Springsecurity之SecurityContextHolderStrategy

注:下面分析的版本是spring-security-4.2.x,源码的github地址是: https://github.com/spring-projects/spring-security/tree/4.2.x 先上一张图: 图1 SecurityContextHolderStrategy的三个......

汉斯-冯-拉特
今天
0
0
LNMP架构(Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl)

Nginx负载均衡 网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时...

蛋黄_Yolks
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部