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. alive.py - automatisches Neustarten von Wuala, falls es crasht ============================================================== 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](http://dtach.sourceforge.net/) 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. Beispiel: wuala --------------- :::console # 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 Hinweise -------- - Wuala muss per default in *~/wuala* installiert sein, sonst muss man selbst Hand in `cmd` anlegen. - das Skript __muss__ mit root-Rechten laufen - zur Vereinfachung empfehle ich [screen](http://www.gnu.org/software/screen/) alive.py [ [Download](files/?p=alive.py) ] ------------------------------------------ :::python #!/usr/bin/env python ''' Author: posativ 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 , wuala , root-permissions Optional : dtach ''' 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]