Hallo Leute,
ich hatte vor kurzem ein etwas intensiveres Zusammentreffen mit dem „Intelligenten Hintergrundübertragungsdienst“ von Windows (BITS – Background Intelligent Transfer Service), welches mich dazu veranlasst hatte, mich etwas intensiver mit dem Dienst auseinander zu setzen. Um vielleicht dem ein oder anderen von euch viel Arbeit und Mühe zu sparen, hier einige Punkte, die mir dabei geholfen haben, mit dem Dienst mittlerweile wieder im Grünen zu sein 😉
BITS wird in der Windows-Welt vor allem verwendet, um Updates für Microsofts Betriebssystem und Komponenten herunterzuladen, aber auch andere Programme verwenden den Dienst um Dateien im Hintergrund hoch- und herunterzuladen (Beispielsweise Mods-Pakete für Civilisation V oder der Youtube Video Uploader)
Eines der wohl wichtigsten Tools in diesem Zusammenhang ist der BITSadmin, ein Kommandozeilen-basiertes Administrationswerkzeug für den Hintergundübertragungsdienst. Ab Windows Vista wird BITSadmin standardmäßig mit ausgeliefert, alle XP-User müssen sich die Windows XP SP2 Support-Tools von Microsoft herunterladen (KB838079 – 32bit only!)
Da sich die bitsadmin.exe entweder direkt unter ..\Windows\system32\ befindet, oder in einem Ordner, der vom Setup der Support-Tools in die PATH-Variable geschrieben wird, kann man sie üblicherweise direkt aus der Eingabeaufforderung starten.
Bitsadmin – Allgemeine Benutzung
Ohne Parameter und Befehle gestartet, listet die bitsadmin.exe eine ganze Latte an Möglichkeiten auf, für die Sie genutzt werden kann – daraus ein Auszug der wichtigsten (meiner Meinung nach) Für diejenigen, die die UAC verwenden sei erwähnt, dass sich die meisten Funktionen der bitsadmin.exe nur „als Administrator“ ausführen lassen…
BITSADMIN version 3.0 [ 7.5.7601 ] BITS administration utility. (C) Copyright 2000-2006 Microsoft Corp. /LIST [/ALLUSERS] [/VERBOSE] List the jobs /MONITOR [/ALLUSERS] [/REFRESH sec] Monitors the copy manager /RESET [/ALLUSERS] Deletes all jobs in the manager /LISTFILES job Lists the files in the job /SUSPEND job Suspends the job /RESUME job Resumes the job /CANCEL job Cancels the job /COMPLETE job Completes the job
Die Angabe des /ALLUSERS Parameter ist meiner Meinung nach meistens nicht ganz so optional, wie es in der Beispielausgabe durch die eckigen Klammern aussieht – da der Dienst standardmäßig als LocalSystem läuft, und die meisten Jobs nicht vom User erstellt werden (wie z.B. Windows-Updates) werden diese auch ohne den Parameter nicht angezeigt. Hängt nun einer dieser Jobs, kann man in der Benutzer-Ansicht lange nach einem Fehler suchen…
Durch /LIST (/ALLUSERS!) werden alle Jobs angezeigt, die zu dem Zeitpunkt des Kommandos in der Warteschlange von BITS waren. Der Parameter /VERBOSE listet direkt viele Details zu den einzelnen Jobs auf, eine Liste die bei mehreren Jobs recht schnell ziemlich lang werden kann – meist sind auch nur die Details eines einzelnen Jobs interessant, diese könnt ihr euch wesentlich übersichtlicher anzeigen lassen. Die Liste, die ihr erhaltet ist wie folgt aufgeteilt:
{7A7C1C73-D817-471B-8875-7145B80B5D84} 'WU Client Download' SUSPENDED 0 / 1 0 / 134257 {0E6B4644-DBE1-43CB-A3AE-A53F655B5CB4} 'WU Client Download' SUSPENDED 0 / 1 0 / 329967 {936C2A86-E66B-47AB-BC20-B6F2AD61F498} 'WU Client Download' SUSPENDED 0 / 1 0 / 40490 {86152BFC-EF0B-458E-BEF8-73C4483C18CA} 'WU Client Download' SUSPENDED 0 / 1 0 / 8180 {8C0E4585-48A2-43C0-8939-3EB230503246} 'WU Client Download' SUSPENDED 0 / 1 0 / 448740 {94DAFC7B-4198-4785-816F-6B127BF6371D} 'WU Client Download' SUSPENDED 0 / 1 0 / 149886
Zunächst wird eine eindeutige Job-ID angezeigt (Hash-Wert in geschweiften Klammern, GUID), gefolgt vom Job-Namen, seinem Status, die Anzahl an Dateien in diesem Job und die Anzahl der übertragenen Bytes.
/MONITOR bietet euch die gleiche Ansicht, wie /LIST, mit dem Unterschied, dass die Ansicht alle X Sekunden (Default: 5) erneuert wird, und der Status der einzelnen Jobs damit aktueller ist. Üblicherweise reicht jedoch die Jobliste mit /LIST völlig aus. Wie auch bei /LIST gilt immer /ALLUSERS mit angeben! 🙂
Sollten Jobs temporär hängen, oder seid ihr euch sicher, dass die Jobs problemlos neu gestartet werden können, so könnt ihr diese mit /RESET abbrechen. Windows-Updates lassen sich beispielsweise über die Systemsteuerung ganz einfach neu „suchen“, damit werden die entsprechenden Download-Jobs erneut angelegt. Für das /RESET-Kommando gilt, es können keine Jobs abgebrochen werden, die von einem anderen Benutzer angelegt wurden (ausgenommen ihr seid Administratoren, natürlich – aber selbst da gibt es eine kleine Einschränkung… dazu später…) – (… /ALLUSERS!)
Bitsadmin – Troubleshooting
/GETBYTESTOTAL job Retrieves the size of the job /GETBYTESTRANSFERRED job Retrieves the number of bytes transferred /GETFILESTOTAL job Retrieves the number of files in the job /GETFILESTRANSFERRED job Retrieves the number of files transferred /GETCREATIONTIME job> Retrieves the job creation time /GETMODIFICATIONTIME job Retrieves the job modification time /GETCOMPLETIONTIME job Retrieves the job completion time ...
Mit dem Befehl /GETSTATE lässt sich der aktuelle Status eines Jobs anzeigen. Dieser hat immer einen der folgenden Werte:
QUEUED — Der Job ist in Warteschlange CONNECTING — BITS verbindet sich gerade mit dem Server TRANSFERRING — BITS überträgt gerade eine Datei aus dem Job SUSPENDED — Der Job wurde pausiert ERROR — Ein nicht wiederherstellbarer Fehler ist aufgetreten TRANSIENT_ERROR — Ein wiederherstellbarer Fehler ist aufgetreten ACKNOWLEDGED — Der Job wurde erfolgreich beendet CANCELLED — Der Job wurde abgebrochen
Sollte der Job nun einen TRANSIENT_ERROR anzeigen, so wird der Job nochmal erneut gestartet. Sollte die Anzahl der eingestellten Wiederholungen pro Job (Retry’s) erreicht sein, wird der TRANSIENT_ERROR zu einem ERROR. Hier können wir als nächstes mit dem Befehl /GETERROR job eine genaue Fehlermeldung zu dem jeweiligen Downloadjob ausgeben lassen.
Die angezeigte Fehlermeldung lässt bereits ziemlich genau darauf schließen, was beim Download schief ging.
Bei Rückfragen meldet euch, hinterlasst Kommentare, schaut auf Facebook (Klick) vorbei, was euch am besten gefällt!
Grüße
Hannes