Hi On Monday 12 April 2004 22:59, Soeren Wengerowsky wrote:
Um genau zu sein, es sind ram-dateien. Ich möchte die links da drin (manchmal einer, manchmal mehr) mit wget downloaden. Da nun aber der Speed irgendwie immer nur 10 kb/s oder so ist, möchte ich immer 10 (oder halt eine begrenzte Anzahl) downloads Gleichzeitig machen. Dazu möchte ich ein script machen.... Mir fehlt auch irgendwie noch der Ansatz dazu.
Ich schätze, dazu benötigt man screen, oder? screen brauchst du nur wenn du dich ausloggen willst und im Hintergrund ein Prozess mit shell weiterlaufen soll. Ich habe ähnliches mal mit screen -d -m probiert. Leider war es irgendwie erfolglos. Was du eher brauchst ist wget -b.
Ich habe hier soetwas ausprobiert: for i in `cat blabblubb`; do screen -d -m wget $i & ;done; Wenn dann eher for i in `cat blabblubb`; do wget -b $i ; done Und auch das, würde ich zur Übersicht in ein Skript schreiben.
Ich weiß jetzt nicht genau was ram-Dateien sind. Obiges funktioniert nur, wenn in blabblubb nur die links stehen. Wenn da noch einige Zeilen sonstiger Kram drinstehen, dann verstopft dein System nur mit wget-tasks die früher oder später irgendeinen Fehler produzieren. Selbst wenn in der Datei nur links stehen kann das zur Überlastung des Systems führen. Die von dir vorgeschlagene Begrenzung auf 10 wget-Instanzen fehlt noch. xargs -n 10 hilft auch nicht wirklich (Ich fürchte David hat dich nicht richtig verstnden). Das würde nur ein wget mit maximal 10 URLs starten. Da müsste man wohl wget -n [Anzahl_links/10] --max-procs=0 arbeiten. Aber dann ist da wieder das Problem mit der möglicherweise hohen Anzahl von wget-Instanzen und der daraus resultierenden Systemlast. Ohne es getestet zu haben würde ich ein while ((` ps |grep wget |wc -l` < 10 )); do sleep 2; done Innerhalb der for-Schleife vorschlagen. So würde in der for-Schleife solange ein neues wget in den Hintergrund geschickt bis 10 wgets laufen. Dann wird 2 Sekunden gewartet und erneut geschaut wieviele wgets noch laufen. In etwa so: for i in `cat blabblubb` do wget -b $i while ((` ps |grep wget |wc -l` < 10 )) do sleep 2 done done mfg Axel