Wuala läuft nie 100% stabil. Das kann sicherlich jeder Nutzer bezeugen - immerhin ist Wuala eine Software im Beta-Stadium (, die dafür dennoch erstaunlich stabil läuft).
Allerdings ist ein nahezu 100% laufendes Wuala für den Serverbetrieb wichtig, denn sonst erhält man die 100 Gigabyte Speicher nicht - nur, weil sich Wuala mal wieder verabschiedet hat und man nicht die Muße hat, stündlich zu gucken, ob noch alles läuft.
Ich habe seit einigen Wochen ein Python-Skript in Betrieb , dass einen nahtlosen
Betrieb von Wuala erlaubt. Dabei wird das Skript mittels python alive.py user aufgerufen
und wird, sobald kein weiterer Prozess von Wuala läuft, Wuala neustarten. Dabei wird Wuala
als Hintergrundprozess aufgerufen oder per dtach verbunden.
Zusätzlich kann mit den Argumenten status user bzw. kill user die pid des Wualas für user
ausgeben bzw. das Wuala des user killen.
# python alive.py wuala &
# python alive.py status wuala
4829
# python alive.py kill wuala
# python alive.py status wuala
None
# screen alive.py wuala #output after two weeks
2010.06.24-01:32:: restart
2010.07.07-11:42:: restart
cmd anlegen.#!/usr/bin/env python
'''
Author: posativ <info@posativ.org>
Date : 20. July 2010
Revision: 1
This software can be redistributed and modified under the following restricitons:
1. name the author
2. no commercial use
3. publish any modification
Requirements: python>=2.4 <http://python.org/>, wuala <http://wuala.com/>, root-permissions
Optional : dtach <http://dtach.sourceforge.net/>
'''
import re
from os import popen
from sys import argv
from time import time, localtime, strftime, sleep
cmd = 'cd ~/wuala; ./wuala > /dev/null &'
#cmd = 'cd ~/wuala; dtach -n ~/dtach ./wuala' # if you want to use dtach
def ps(user):
'''returns pid of wuala'''
s = popen('ps -Fu %s | grep loader[0-9].jar | grep -v grep' % user)
for line in s:
m = re.match('%s +(\d+)' % user, line.strip())
if m:
return int(m.group(1))
return None
def kill(user):
'''kill -9 pid'''
pid = ps(user)
killseq = 'kill -9 %s' % pid
if pid:
popen("su %s -c '%s'" % (user, killseq))
sleep(1)
def start(user, cmd):
'''launch wuala using dtach'''
popen("su %s -c '%s'" % (user, cmd))
def loop(user):
'''main loop: checks every 60 seconds, if wuala is running. If not, it will launch wuala'''
while True:
if not ps(user):
print '%s:: restart' % strftime('%Y.%m.%d-%H:%M', localtime(time()))
start(user, cmd)
sleep(60*1)
if __name__ == '__main__':
if len(argv) == 2:
loop(argv[1])
elif len(argv) > 2:
if argv[1] == 'status' and len(argv) == 3:
print ps(argv[2])
elif argv[1] == 'kill' and len(argv) == 3:
kill(argv[2])
else: print 'usage: %s user' % argv[0]