В настоящее время я создаю около 100 файлов из моего сценария, я хотел бы перебирать через эти файлы в партиях из двадцати и выполнять их через другой скрипт, а затем удалять файлы, когда я это сделаю (очистка) Я считаю, что GNU Parallel может это сделать, но я точно не знаю, как это сделать?Запуск GNU Параллельный файл существует
# test if files exists and run
if [ "$(ls -A ${base_dir}/schedule)" ]; then
while [ "$(ls -A ${base_dir}/schedule)" ]; do
# current run of 20 files
batch=`ls ${base_dir}/schedule | head -n 20`
# parallel run on 4 processors
parallel -j4 ./script.sh ${batch} ::: {1..20}
# cleanup
for file in "${batch}"; do
rm "${base_dir}/schedule/${file}"
done
done
fi
ожидается выход будет что-то вроде
# running first batch of twenty
./scipt.sh 1466-10389-data.nfo # after file has finished, rm 1466-10389-data.nfo
./scipt.sh 1466-10709-data.nfo # etc
./scipt.sh 1466-11230-data.nfo # etc
./scipt.sh 1466-11739-data.nfo
./scipt.sh 1466-11752-data.nfo
./scipt.sh 1466-13074-data.nfo
./scipt.sh 1466-14009-data.nfo
./scipt.sh 1466-1402-data.nfo
./scipt.sh 1466-14401-data.nfo
./scipt.sh 1466-14535-data.nfo
./scipt.sh 1466-1588-data.nfo
./scipt.sh 1466-17012-data.nfo
./scipt.sh 1466-17611-data.nfo
./scipt.sh 1466-18688-data.nfo
./scipt.sh 1466-19469-data.nfo
./scipt.sh 1466-19503-data.nfo
./scipt.sh 1466-21044-data.nfo
./scipt.sh 1466-21819-data.nfo
./scipt.sh 1466-22325-data.nfo
./scipt.sh 1466-23437-data.nfo
# wait till all are finished, OR queue up next file so all times
# twenty files are running at until the directory is empty
Это не выполняет файлы параллельно, он также перекликает все файлы в script.sh как один параметр, и удаляет весь каталог. Это неверно. = (Я обновлю свой вопрос, чтобы он стал более понятным? – ehime
Хорошо, что неправильно понял. Любая причина, почему вы хотите создать партии из 20, а не просто партии из 4? – damienfrancois
Только что понял, что я написал '-p' (print) чем '-P' (параллель). Тем не менее, он действительно подал бы 20 файлов на сценарий. Тогда вместо« -n 20 »вам понадобится' -n 1'. И идея состоит в том, чтобы удалить все в конце. не будет работать партиями по 20. – damienfrancois