Intelligenter Hintergrundübertragungsdienst – BITS

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

Ein BITS-Job durchläuft in seinem Leben einige Stadien, die immer gleich ablaufen (MSDN-Artikel). Grob zusammengefasst beginnt der Job logischerweise bei seiner Erstellung. Hier werden dem Job bereits einige Eigenschaften mitgegeben: Sein Typ (Upload, Download), seine Gesamtgröße und die Anzahl an bereits übertragenen Bytes, die gesamte Anzahl an Dateien und die Anzahl an bereits übertragenen Dateien, seine Erstellungs-, Änderungs- und Fertigstellungszeit, und noch einige mehr – lässt sich alles über die bitsadmin.exe herausfinden bzw. ändern:
/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

Dieser Eintrag wurde veröffentlicht in IT. Lesezeichen auf den Permanentlink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert