为了在不允许更改配置的情况下运行 Firefox,我设置了一个tmpfs
,并在启动浏览器之前从中创建了两个覆盖。脚本运行良好,按预期
创建和销毁,但当启动到时,有些显然会失败,并且对 Firefox 的后续调用会抱怨它们自己的正在运行的实例。我可以验证,只有从执行脚本时,某些挂载才会保留。mounts
launcher
umounts
launcher
脚本如下:
#!/usr/bin/bash
# set variables
FOX="/usr/bin/firefox"
pkill `basename $FOX` || true
#find working directories:
#find ~ -type d -iname "*fox*"
function errout () {
zenity --info --text="$@"
exit 1
}
CACHE=~/.cache/mozilla/firefox
ZILLA=~/.mozilla/firefox
FREE=`free | awk 'NR==2 {print $4;}'`
TEMP=/mnt/tmp # this one gets built in fstab
if [[ "$FREE" -lt 200000 ]]
then
errout "zu wenig Speicherplatz"
fi
if ! test -d "$CACHE"
then
errout "$CACHE ist kein Verzeichnis"
fi
if ! test -d "$ZILLA"
then
errout "$ZILLA ist kein Verzeichnis"
fi
if ! test -d "$TEMP"
then
errout "$TEMP ist kein Verzeichnis"
fi
if [[ "$USER" == "uk" ]]
then
PWD=SUDOPASSWORD # of course not :-)
fi
echo $PWD | sudo -S true >& /dev/null
if [[ `mount | awk /^tmpfs/ | grep -cw "$TEMP"` == "0" ]]
then
sudo mount tmpfs -t tmpfs -o defaults,size=250m "$TEMP"
else
: # es ist noch nicht sicher, dass der Platz reichen wird
fi
# setup overlays:
mkdir -p "$TEMP/helpfox/"{Clower,Cupper,Cwork,Zlower,Zupper,Zwork}
sudo mount --bind "$CACHE" "$TEMP/helpfox/Clower"
sudo mount --bind "$ZILLA" "$TEMP/helpfox/Zlower"
sudo mount -t overlay overlay -olowerdir="$TEMP/helpfox/Zlower",\
upperdir="$TEMP/helpfox/Zupper",workdir="$TEMP/helpfox/Zwork" "$ZILLA"
sudo mount -t overlay overlay -olowerdir="$TEMP/helpfox/Clower",\
upperdir="$TEMP/helpfox/Cupper",workdir="$TEMP/helpfox/Cwork" "$CACHE"
sudo -k
$FOX
# destroy overlays:
sleep 2
echo $PWD | sudo -S true >& /dev/null
mount | awk '$3 ~ /helpfox/ { print $3; }' | xargs -r -l sudo umount
sudo rm -rf $TEMP/helpfox
zenity --info --text="Die Blase ist abgebaut"
sudo -k
答案1
我现在无法访问他们的笔记本电脑,因此无法验证我的理论,但是……我非常确信,脚本在终端中运行良好但无法从启动器运行的原因可能是在路径名中使用了“~”。用户运行时可以正确解释“~”,但启动器可能无法正确解码。如果事实证明确实如此,则修复方法可能是替换
CACHE=~/.cache/mozilla/firefox
经过
CACHE=`echo ~/.cache/mozilla/firefox`
ZILLA 也一样