У меня есть каталог с большим количеством файлов .sh в нем, все из которых при запуске открывают терминал и запускают загрузку youtube-dl. Поскольку их так много, я надеялся найти способ активировать их все сразу, открыв сразу несколько разных терминалов, а не выполнять их отдельно. Я все еще очень новичок в программировании, поэтому я не совсем уверен, как это сделать, и могу ли я создать скрипт для запуска их всех, использовать команду и т. Д. Любая помощь приветствуется, спасибо.
Хотя вы действительно можете запустить все .sh файлы в каталоге с циклом for, предложенным Яроном, это действительно сложный подход. Не пишите много скриптов, если только разница между ними - это 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 файлы в каталоге с циклом for, предложенным Яроном, это действительно сложный подход. Не пишите много скриптов, если только разница между ними - это 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 файлы в каталоге с циклом for, предложенным Яроном, это действительно сложный подход. Не пишите много скриптов, если только разница между ними - это 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 файлы в каталоге с циклом for, предложенным Яроном, это действительно сложный подход. Не пишите много скриптов, если только разница между ними - это 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
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 Parallel может это сделать:
cat urls.txt | parallel --retries 50 --timeout 1000% --joblog +my.log youtube-dl
Это запустит одно задание на ядро процессора и попробует 50 раз, если загрузка завершится с ошибкой. Он будет убивать задания, которые занимают 10 дольше, чем среднее время выполнения (например, если загрузка застряла). Он также добавит файл my.log, чтобы вы могли видеть статус каждого задания.
Я испытал, что некоторые видеосайты не очень стабильны, и мне приходится несколько раз повторять загрузку. GNU Parallel может это сделать:
cat urls.txt | parallel --retries 50 --timeout 1000% --joblog +my.log youtube-dl
Это запустит одно задание на ядро процессора и попробует 50 раз, если загрузка завершится с ошибкой. Он будет убивать задания, которые занимают 10 дольше, чем среднее время выполнения (например, если загрузка застряла). Он также добавит файл my.log, чтобы вы могли видеть статус каждого задания.
Если программа работает в сети, то есть для 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 и т. д.
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
Я испытал, что некоторые видеосайты не очень стабильны, и мне приходится несколько раз повторять загрузку. GNU Parallel может это сделать:
cat urls.txt | parallel --retries 50 --timeout 1000% --joblog +my.log youtube-dl
Это запустит одно задание на ядро процессора и попробует 50 раз, если загрузка завершится с ошибкой. Он будет убивать задания, которые занимают 10 дольше, чем среднее время выполнения (например, если загрузка застряла). Он также добавит файл my.log, чтобы вы могли видеть статус каждого задания.
Если программа работает в сети, то есть для 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 и т. д.
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
Я испытал, что некоторые видеосайты не очень стабильны, и мне приходится несколько раз повторять загрузку. GNU Parallel может это сделать:
cat urls.txt | parallel --retries 50 --timeout 1000% --joblog +my.log youtube-dl
Это запустит одно задание на ядро процессора и попробует 50 раз, если загрузка завершится с ошибкой. Он будет убивать задания, которые занимают 10 дольше, чем среднее время выполнения (например, если загрузка застряла). Он также добавит файл my.log, чтобы вы могли видеть статус каждого задания.
Если программа работает в сети, то есть для 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 и т. д.
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