一段让firefox工作在tempfs中的脚本
发表于 : 2012-08-05 11:18
引自http://www.webupd8.org/2009/05/speed-up ... le-in.html,略做修改。
第一步:about:config
第二步:准备工作
清空firefox缓存,在选项中关闭firefox缓存自动管理
打包profile:
修改fstab,加入一行
第三步:自动脚本
接下来要做的事要小心:
1. 检查打包好的packed.tar,确认文件是否正常,无误则清空~/.mozilla/firefox/1234.default路径下所有文件。
2. 运行一次上面的脚本,检查~/.mozilla/firefox/1234.default中文件是否正常,是否存在.unpacked文件;
3 打开firefox,检查profile工作是否正常。
4. 如果无误,再次运行脚本,并检查~/.mozilla/firefox下有无生成正确的packed.rar和packed.rar.old。
第四步:运行环境
运行环境1:crontab ,每隔一段时间运行一次,比如整点运行:
运行环境2:登入脚本,登出脚本。
在桌面启动程序中加入这段脚本;在~/.bash_logout中加入这段脚本,需要引用脚本的完整路径名。
说明:与原脚本相比主要修改两处,一是在载入packed.tar时先判断firefox是否在运行,如果无则不载入lock文件。测试发现
如果firefox未运行载入lock文件,打开firefox后会出现进程崩溃提示,这是无意义的。二是原来的脚本只使用cron运行,但
存在明显的漏洞。如果运行间隔过短,太浪费系统资源;并且在初始登录和注销阶段,会存在时间差问题,导致profile无法
及时导入,或未能及时导出。
另外,对tempfs运行机制还缺乏了解,还不确定在什么情况下tempfs的内容会被系统清空,初步测试显示在桌面注销时tempfs
并不会清空,也就是说在注销时实际上并不需要从ram中导出profile,但是运行登出脚本仍然是必须的,因为在关机或重启时,
tempfs会被清空。
最后,尝试使用Ubuntu的Upstart Jobs失败,原因是linux桌面对用户自定义的Upstart job支持很差。这样的脚本,理想情况应该
运行在 start on started mountall 和 start on stopping mountall环境中。
第一步:about:config
代码: 全选
set browser.cache.disk.capacity to 20000 or thereabouts
set browser.safebrowsing.enabled to false
set browser.safebrowsing.malware.enabled to false
清空firefox缓存,在选项中关闭firefox缓存自动管理
打包profile:
代码: 全选
$ cd .mozilla/firefox && tar cpf packed.tar abcd1234.default
代码: 全选
firefox /home/steven/.mozilla/firefox/abcd1234.default tmpfs size=128M,noauto,user,exec,uid=1000,gid=100 0 0
代码: 全选
#!/bin/bash
# Change this to match your correct profile
PROFILE="1234.default"
HOME=/home/your_name
cd "${HOME}/.mozilla/firefox"
if test -z "$(mount | grep -F "${HOME}/.mozilla/firefox/${PROFILE}" )"
then
mount "${HOME}/.mozilla/firefox/${PROFILE}"
fi
if test -f "${PROFILE}/.unpacked"
then
tar --exclude '.unpacked' -cpf packed.tmp.tar "$PROFILE"
mv packed.tar packed.tar.old
mv packed.tmp.tar packed.tar
echo "$(date +%Y%m%d%H%M): firefox profile packed from ram" >> ${HOME}/.mozilla/firefox/pack_ffox.log
else
if test -z "$pgrep firefox |grep -F '[0-9]'"
then
tar xpf packed.tar
else
tar xpf --exclude 'lock' packed.tar
fi
touch "${PROFILE}/.unpacked"
echo "$(date +%Y%m%d%H%M): firefox profile unpacked to ram" >> ${HOME}/.mozilla/firefox/pack_ffox.log
fi
1. 检查打包好的packed.tar,确认文件是否正常,无误则清空~/.mozilla/firefox/1234.default路径下所有文件。
2. 运行一次上面的脚本,检查~/.mozilla/firefox/1234.default中文件是否正常,是否存在.unpacked文件;
3 打开firefox,检查profile工作是否正常。
4. 如果无误,再次运行脚本,并检查~/.mozilla/firefox下有无生成正确的packed.rar和packed.rar.old。
第四步:运行环境
运行环境1:crontab ,每隔一段时间运行一次,比如整点运行:
代码: 全选
$ crontab -e
0 */1 * * * <path_to_the_script>
在桌面启动程序中加入这段脚本;在~/.bash_logout中加入这段脚本,需要引用脚本的完整路径名。
说明:与原脚本相比主要修改两处,一是在载入packed.tar时先判断firefox是否在运行,如果无则不载入lock文件。测试发现
如果firefox未运行载入lock文件,打开firefox后会出现进程崩溃提示,这是无意义的。二是原来的脚本只使用cron运行,但
存在明显的漏洞。如果运行间隔过短,太浪费系统资源;并且在初始登录和注销阶段,会存在时间差问题,导致profile无法
及时导入,或未能及时导出。
另外,对tempfs运行机制还缺乏了解,还不确定在什么情况下tempfs的内容会被系统清空,初步测试显示在桌面注销时tempfs
并不会清空,也就是说在注销时实际上并不需要从ram中导出profile,但是运行登出脚本仍然是必须的,因为在关机或重启时,
tempfs会被清空。
最后,尝试使用Ubuntu的Upstart Jobs失败,原因是linux桌面对用户自定义的Upstart job支持很差。这样的脚本,理想情况应该
运行在 start on started mountall 和 start on stopping mountall环境中。