一段让firefox工作在tempfs中的脚本

sh/bash/dash/ksh/zsh等Shell脚本
回复
funicorn
帖子: 1318
注册时间: 2005-09-13 4:56
系统: Ubuntu Jammy Jellyfi

一段让firefox工作在tempfs中的脚本

#1

帖子 funicorn » 2012-08-05 11:18

引自http://www.webupd8.org/2009/05/speed-up ... le-in.html,略做修改。

第一步: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
修改fstab,加入一行

代码: 全选

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>
运行环境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环境中。
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: 一段让firefox工作在tempfs中的脚本

#2

帖子 枫叶饭团 » 2012-08-05 13:08

我直接把缓存扔内存里。。。虽然每次都会被清空
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
联系:

Re: 一段让firefox工作在tempfs中的脚本

#3

帖子 cuihao » 2012-08-05 13:09

:em01 缓存扔内存,profile都让profile-sync-daemon自动处理了。
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
funicorn
帖子: 1318
注册时间: 2005-09-13 4:56
系统: Ubuntu Jammy Jellyfi

Re: 一段让firefox工作在tempfs中的脚本

#4

帖子 funicorn » 2012-08-05 13:20

cuihao 写了::em01 缓存扔内存,profile都让profile-sync-daemon自动处理了。
这个东西ubuntu下没有吧,好像arch才有?
jtshs256
帖子: 22323
注册时间: 2010-07-19 21:41
系统: OS X

Re: 一段让firefox工作在tempfs中的脚本

#5

帖子 jtshs256 » 2012-08-05 13:30

3l正解
躺平
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
联系:

Re: 一段让firefox工作在tempfs中的脚本

#6

帖子 cuihao » 2012-08-05 14:53

funicorn 写了:
cuihao 写了::em01 缓存扔内存,profile都让profile-sync-daemon自动处理了。
这个东西ubuntu下没有吧,好像arch才有?
:em20 看了一下,好像确实是arch-only的……
不过,既然是在Arch这么简单的系统上应用的,移植应该也不困难。
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
funicorn
帖子: 1318
注册时间: 2005-09-13 4:56
系统: Ubuntu Jammy Jellyfi

Re: 一段让firefox工作在tempfs中的脚本

#7

帖子 funicorn » 2012-08-05 14:57

cuihao 写了:
funicorn 写了:
cuihao 写了::em01 缓存扔内存,profile都让profile-sync-daemon自动处理了。
这个东西ubuntu下没有吧,好像arch才有?
:em20 看了一下,好像确实是arch-only的……
不过,既然是在Arch这么简单的系统上应用的,移植应该也不困难。
刚找到了一个移植的deb包,还不错,用rsync确实比tar更科学
头像
xzc8825745
帖子: 622
注册时间: 2011-06-04 20:24
联系:

Re: 一段让firefox工作在tempfs中的脚本

#8

帖子 xzc8825745 » 2012-08-05 15:07

太麻烦了,这个是我的脚本.

代码: 全选

#!/bin/bash
MOZHDD="${HOME}/.mozilla-hdd"
MOZTMPFS=/dev/shm/mozilla
INTERVAL=60
MOZHOME="${HOME}/.mozilla"
rsync -avi --delete "${MOZHDD}/" "${MOZTMPFS}/"
rm -r $MOZHOME
ln -s $MOZTMPFS $MOZHOME
( while true; do sleep ${INTERVAL}; rsync -avi --delete "${MOZTMPFS}/" "${MOZHDD}/"; done; ) &
只要把.mozilla改成.mozilla-hdd就行了.
funicorn
帖子: 1318
注册时间: 2005-09-13 4:56
系统: Ubuntu Jammy Jellyfi

Re: 一段让firefox工作在tempfs中的脚本

#9

帖子 funicorn » 2012-08-05 15:22

别捣乱,如果这个脚本刚run完之后第50秒你关机重启了,没保存的session咋办?
xzc8825745 写了:太麻烦了,这个是我的脚本.

代码: 全选

#!/bin/bash
MOZHDD="${HOME}/.mozilla-hdd"
MOZTMPFS=/dev/shm/mozilla
INTERVAL=60
MOZHOME="${HOME}/.mozilla"
rsync -avi --delete "${MOZHDD}/" "${MOZTMPFS}/"
rm -r $MOZHOME
ln -s $MOZTMPFS $MOZHOME
( while true; do sleep ${INTERVAL}; rsync -avi --delete "${MOZTMPFS}/" "${MOZHDD}/"; done; ) &
只要把.mozilla改成.mozilla-hdd就行了.
回复