Running firefox on multiple machines sharing NFS disk space

From Applied Optics Wiki
Revision as of 10:36, 2 March 2011 by Matt (talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Firefox, at least recent versions, is braindead when it comes to running on multiple machines sharing the same NFS space (as is the case for our network). This is a fault with firefox and a widely reported bug but the firefox dev team seem determined to do nothing about it. Konqueror and Epiphany handle this situation very well and the fix isn't difficult so it is a mystery to me why such a useful feature has been removed from firefox.

Anyway if you don't want to / can't use Konqueror or Epiphany here is a half way house fix that does pretty much what you want. Save the script below (GPL) and call it netfox. Instead of running firefox run netfox (change what your firefox icons do). Provided you use this instead of firefox directly it will detect firefox running on a remote machine and optionally remote kill it so you can run firefox locally (with all your tabs restored).

To remote kill you'll need to setup ssh keys between your remote machines. I should have finished the script by making it all automatic but I got this far and it serves me well enough for me to stop tinkering with it.


#!/bin/sh
# (c) GPL Matt Clark 2011
HN=`hostname`
echo hostname set to $HN
if  test -e ~/.mozilla/firefox/lock_host ; then
        LM=`cat ~/.mozilla/firefox/lock_host`
        echo Firefox has taken a lock out on the following machine:
        cat ~/.mozilla/firefox/lock_host
        if [ "$LM" = "$HN" ] ; then
                echo Running a repeat firefox
                /usr/bin/firefox
                exit
        else
                #ANS=`kdialog --yesno "Firefox is locked on machine $LM \n Do you wish me to try to kill it?"`
                kdialog --yesno "Firefox is locked on machine $LM \n Do you wish me to try to kill it?"
                #ANS=$?
                #cho "Debug, ANS=$ANS"
                if [ $? = 0 ]; then
                #if test yes = $ANS ; then
                        echo "Trying to kill the remote firefox"
                        #RES=`ssh -o "StrictHostKeyChecking no" $LM "killall -regexp firefox"`
                        echo "No result" > /tmp/.netfoxsshres
                        ssh -o "StrictHostKeyChecking no" $LM "killall -regexp firefox" 2> /tmp/.netfoxsshres
                        RES=`cat /tmp/.netfoxsshres`
                        rm  -f /tmp/.netfoxsshres
                        kdialog --msgbox "Result was $RES, now try again"
                        else
                                exit
                        fi
                exit
                fi
        fi
echo No lock_host detected
echo Making lock_host
touch ~/.mozilla/firefox/lock_host
echo $HN >> ~/.mozilla/firefox/lock_host
date >> ~/.mozilla/firefox/lock_host.log
echo $HN >> ~/.mozilla/firefox/lock_host.log
#uname -n > ~/.mozilla/firefox/lock_host

echo Running firefox
/usr/bin/firefox $1 $2 $3 $4 $5
echo Removing lock_host
rm -f ~/.mozilla/firefox/lock_host
date >> ~/.mozilla/firefox/lock_host.log