실행하고 싶은 명령의 거대한 목록(모두 동일한 작업 수행)을 컴파일하고 있지만 목록을 컴파일하는 데 시간이 오래 걸리기 때문에 완료되기 전에 실행을 시작하고 싶습니다. 다른 하나는 더 길어서 목록이 고갈될 위험이 없습니다.)
명령 목록을 실행하는 일반적인 방법은 명령을 나열하는 쉘 스크립트를 작성하는 것이지만 스크립트 실행을 시작하면 더 이상 명령을 추가할 수 없습니다.
지금까지 제가 찾은 방법은 명령을 넣고 command.list
갖는 것입니다 parallel --jobs 1 --line-buffer :::: command.list
. 그러나 여기에는 비-유틸리티에 대한 사용 parallel
(GNU 병렬을 사용하고 있으므로 more-utils의 프로그램과 작동하는지 모르겠습니다)이 포함됩니다. 병렬 실행 은 좀 과용된 것 같아요 parallel
.
더 쉬운 방법이 있나요? 뭔가를 엉망으로 만들어서 목록이 모두 없어지면 어떤 명령이 실행되었는지 추적할 수 있으면 좋을 것 같습니다.
답변1
에서:https://www.gnu.org/software/parallel/man.html#example-gnu-parallel-as-queue-system-batch-manager
true >jobqueue; tail -n+0 -f jobqueue | parallel --joblog my.log &
echo my_command my_arg >> jobqueue
my_job_generator >> jobqueue
그러면 완료된 작업 기록(my.log)이 제공됩니다.
GNU 병렬 버전 20220222는 작업만 출력합니다.N(그리고 에 추가하세요 my.log
) 작업할 때n+1추가되었습니다. 이것이 허용되지 않으면 다른 더미 작업을 추가하면 됩니다.
echo true dummy >> jobqueue
이전 버전의 동작은 약간 달랐습니다.