동시에 여러 .command 파일을 실행하는 방법은 무엇입니까?

동시에 여러 .command 파일을 실행하는 방법은 무엇입니까?

Mac OS X에 동시에 실행하려는 .command파일 폴더(일반 작업)가 있습니다.

지금은 디렉토리의 각 파일을 하나씩 반복하여 실행했습니다. 다음과 같은 것을 사용하십시오:

#!/bin/bash
LAUNCHLOG=~/Desktop/My\ Automation/Resources/Logs/_AutoLaunchAgent.txt
mkdir -p ~/Desktop/My\ Automation/Resources/Logs/
mkfile -n 0k "$LAUNCHLOG"
chmod 0777 "$LAUNCHLOG"
FILES=`find -f ~/Desktop/My\ Automation/Resources/Temp/`;
while read -r line; do
    "$line" >>"$LAUNCHLOG"
done <<< "$FILES"
sleep 10

위의 코드는 작동하지만 속도가 매우 느립니다. 속도상의 이유로 명령(디렉토리의 모든 항목)을 즉시 실행하고 싶습니다.

명령은 모두 서로 독립적이며 통신이 필요하지 않습니다. 이 작업을 수동으로 수행하면 모든 것이 잘 작동하고 속도가 크게 향상됩니다...

이를 달성하는 가장 좋은 방법은 무엇입니까? while 루프에서 괄호를 사용하여 각 반복마다 새 하위 쉘에서 실행하려고 시도했지만 프로세스는 여전히 한 번에 하나의 파일을 실행합니다.

답변1

백그라운드에서 스크립트를 시작하면 루프가 기다리지 않고 원하는 작업을 수행할 수 있습니다.

while read -r line; do
    (bash "$line" >>"$LAUNCHLOG") &
done <<< "$FILES"

하지만 로그는 로그 파일에 혼합됩니다...

답변2

한번 시도해 보는 것은 어떨까요 /usr/sbin/periodic? period.conf를 사용하여 로깅을 제어하거나 출력을 로그 파일로 리디렉션할 수 있습니다.

    /usr/sbin/periodic ~/Desktop/My\ Automation/Resources/Temp/ >> /path/to/logfile

관련 정보