프로세스를 여러 번 실행하는 빠르고 더러운 방법

프로세스를 여러 번 실행하는 빠르고 더러운 방법

저는 프로세스를 여러 번 시작할 수 있는 매우 간단한 bash 스크립트를 찾고 있습니다. 나에게 가장 중요한 것은 프로세스가 종료된 후 모든 것이 자동으로 정리된다는 것입니다.

예상 사용량:

bash multiplerun.sh 5 executable.sh parameters_to_executable

제가 직접 작성할 수도 있겠지만 시간이 오래 걸리기 때문에 저는 *ix 시스템을 잘 사용하지 못하기 때문에 전문가에게 물어보기로 했습니다.

편집: 아, 병렬로 실행하고 싶다는 것을 추가하는 것을 잊었습니다. 하나씩 실행하는 것은 매우 간단합니다.

답변1

프로그램을 병렬로 시작하는 방법은 다음과 같습니다.

#!/bin/bash

count=$1
command=$2
shift 2

for ((i=0;i<count;i++)); do
  $command "$@" &
done
wait
echo done

지시를 기다리면 좀비가 나타나지 않게 됩니다. 프로그램에 tty가 필요하지 않은 경우 루프를 다음으로 바꿀 수 있습니다.

for ((i=0;i<count;i++)); do
  nohup $command "$@" </dev/null >/dev/null 2>&1 &
done

이런 방식으로 프로세스가 셸에서 분리됩니다.

답변2

GNU 병렬이 있는 경우http://www.gnu.org/software/parallel/설치 후 다음을 수행할 수 있습니다.

seq 5 | parallel -N0 executable.sh parameters_to_executable

다음과 같이 간단하게 GNU Parallel을 설치할 수 있습니다.

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem

자세히 알아보려면 GNU Parallel 소개 비디오를 시청하세요. https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

관련 정보