У меня есть цикл в сценарии оболочки, и требуется время, чтобы обработать только несколько файлов в списке. Как запустить процесс в фоновом режиме и выбрать следующий файл, пока первый файл все еще обрабатывается?
for newfile in `ls new*`
do
time consuming process &
done
Я попробовал & в конце команды после> / dev / null 2> & 1, но похоже, что это не работает.
Чтобы перевести процесс в фоновый режим, просто поместите &
в конце и удалите ;
вы использовали для завершения команды до done
for newfile in new* ; do
long_running_command 2>&1 > /dev/null &
done
Вам не нужен
`ls new*`
вы можете просто использовать
new*
оболочка расширит его за вас.
пример
touch new1
touch new2
for newfile in new* ; do ls $newfile 2>&1 > /dev/null & done
производит
[1] 92197
[1]+ Done ls $newfile 2>&1 > /dev/null
[1] 92198
[1]+ Done ls $newfile 2>&1 > /dev/null