У меня есть каталог с большим количеством .sh файлов в нем, все из которых, когда выполнено, открывают терминал и начинают загрузку youtube-dl. С тех пор существуют так многие, я надеялся найти способ активировать их внезапно, открыв несколько различных терминалов сразу, в противоположность выполнению их всех отдельно. Я все еще очень плохо знаком с программированием, таким образом, я не абсолютно уверен, как сделать это и мог ли я создать сценарий для выполнения их всех, используйте команду и т.д. Любая справка ценится, спасибо.
В то время как можно действительно выполнить весь .sh
, файлы в каталоге с для цикла как предложили Yaron, это действительно по сложному подходу для взятия. Не пишите много сценариев, если единственной разницей между ними будет RL, то они загрузят! И нет абсолютно никакой причины породить окно терминала для каждого из них также!
Вместо этого запишите свои URL YouTube в файл, один на строку:
http://youtube.com/foo
http://youtube.com/bar
http://youtube.com/baz
Затем для загрузки их, использование (file
название файла с URL):
while read url; do
youtube-dl "$url"
done < file
, Который загрузит каждое видео в файле, один за другим. Если Вы хотите загрузить их всех одновременно (не хорошая идея, если у Вас есть слишком многие), можно выполнить каждую команду загрузки в фоновом режиме путем добавления &
:
while read url; do
youtube-dl "$url" &
done < file
Примечание, файлы должны быть, выполняются - способный - Вы могли бы хотеть выполнить следующую команду в каталоге, содержащем эти
.sh
файлы прежде, чем запустить вышеупомянутый скрипт:chmod +x *.sh
следующий сценарий возьмет все концы файлов с .sh
и выполнит их.
#/bin/bash
for shfile in *.sh
do
./$shfile
done
Вы можете скопировать/вставить вышеупомянутые строки (без первой строки #/bin/bash
) в Ваш терминал, и это добьется цели (благодарит @terdon за Ваш комментарий).
можно сохранить этот сценарий в другой папке (например, /tmp/execute_all.sh
и заставить его выполниться - способное использование:
chmod +x /tmp/execute_all.sh
Затем входят в каталог с эти .sh
файлы и выполняют использование сценария:
/tmp/execute_all.sh
сценарий попытается выполнить все файлы, который заканчивается .sh
Если программа веб-т.е. для Linux, Попытка, делающая php файл для обработки оболочки. и файл оболочки для обработки php..
, Например: файл runAllShell.php может содержать цикл.:
<?php
// Developed by A T.
// Count the files
$directory = '/put/directory/path_here/';
$files = glob($directory . '*.*');
if ( $files !== false )
{
$filecounter = count( $files );
}
else
{
echo "No Files were found";
}
$fileCount = $filecounter;
// Start the index
$fileNumber = 1;
while($fileNumber <= fileCount){
shell_exec('$fileNumber . ".sh"');
// get some feedback
echo "The ".$fileNumber." file has been excecuted";
// increment file number
$fileNumber++;
}
?>
удостоверяются, что все .sh файлы в каталоге численно заказаны, чтобы это работало т.е.: 1.sh 2.sh 3.sh и так далее.
Я испытал это, некоторые видеосайты не очень стабильны, и что я должен несколько раз повторять загрузку. Параллель GNU может сделать это:
cat urls.txt | parallel --retries 50 --timeout 1000% --joblog +my.log youtube-dl
Это выполнит одно задание на ядро процессора и попробует 50 раз, если загрузка перестанет работать. Это уничтожит задания, которые берут 10 дольше, чем среднее время выполнения (например, если загрузка застревает). Это также добавит в файл my.log
, таким образом, Вы будете видеть состояние каждого задания.