Zakładając, że użyłeś https://www.dropbox.com/download?plat=lnx.x86, a nie pakietu .deb, możliwym sposobem na poczekanie, by program uruchamiający Dropbox czekał, byłby skrypt powłoki. Właściwie myślę, że użyłeś pakietu .deb, ponieważ powiedziałeś, że „załatał menedżera plików”. W każdym razie poniższy skrypt powinien działać niezależnie od metody instalacji.
O ile widzę, mountall(8)
jest uruchamiany jako „upstart job” w Ubuntu (cokolwiek to jest). Działa do momentu zamontowania wszystkich systemów plików (w tym NFS). Możemy sprawdzić, czy działa lub go uruchomić. Kiedy sygnał USR1 jest odbierany przez ten proces, wszystkie systemy NFS są montowane. Jeśli wierzchowce się powiodą, mountall
umiera. Ten skrypt musi być uruchamiany jako superużytkownik.
/ usr / local / bin / dropbox-wait-mount
#!/bin/sh
runas={$1:-root}
mpid=`pidof mountall`
if [ -z "$mpid" ] ; then
mountall --daemon --no-events -q
mpid=`pidof mountall`
else
echo mountall is running, going to notify it to mount nfs shares
fi
kill -USR1 $mpid # see /etc/init/mountall-net.conf and mountall(8)
mpid=`pidof mountall`
while [ -n "$mpid" ]; do
echo waiting for all mounts
sleep 30
kill -USR1 $mpid # see /etc/init/mountall-net.conf and mountall(8)
sleep 1
mpid=`pidof mountall`
done
echo should be safe to run dropbox now
exec su $runas -c /home/$runas/.dropbox-dist/dropboxd
Strona podręcznika radzi, aby nie polegać na funkcjonalności mountall
, ale biorąc pod uwagę naturę „tymczasowych rozwiązań” , myślę, że możesz z tego korzystać przez pewien czas.
I dla pewnej integracji z zadaniami początkowymi Ubuntu:
/etc/init/dropbox.conf
# based on ssh.conf
description "Dropbox daemon"
env RUNAS=root # use /etc/init/dropbox.override
#start on stopped mountall-net RESULT=ok
start on remote-filesystems
stop on runlevel [!2345]
respawn
respawn limit 10 5
umask 022
# 'sshd -D' leaks stderr and confuses things in conjunction with 'console log'
console none
pre-start script
test -x /usr/local/bin/dropbox-wait-mount || { stop; exit 0; }
end script
# if you used to set SSHD_OPTS in /etc/default/ssh, you can change the
# 'exec' line here instead
exec /usr/local/bin/dropbox-wait-mount $RUNAS || { stop; exit 0; }
/etc/init/dropbox.override
env RUNAS=jaroslav
Ten przykład powinien działać tylko po zamontowaniu wszystkich sieciowych systemów plików, ale można go również uruchomić ręcznie:
start dropbox #RUNAS=jaroslav