Como executar vários arquivos .command simultaneamente?

0

Eu tenho uma pasta de .command files (tarefa regular) no Mac OS X, que gostaria de executar simultaneamente.

No momento, tenho percorrido cada arquivo no diretório, um por um, para executá-lo. usando algo como:

#!/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

O acima está funcionando, mas é bem lento ... Por questões de velocidade, eu gostaria de executar os comandos (todos os itens no meu diretório) de uma só vez.

Os comandos são independentes uns dos outros e não precisam se comunicar, e se eu fizer isso manualmente tudo funciona corretamente e eu recebo um grande aumento de velocidade ...

Qual é a melhor maneira de conseguir isso? Eu tentei usar parênteses dentro do meu loop while em uma tentativa de executar dentro de um novo subshell em cada iteração, mas o processo ainda estava executando um arquivo de cada vez.

    
por user1718699 25.06.2015 / 12:56

2 respostas

1

Iniciar seus scripts em segundo plano evitará que o loop espere e faça exatamente o que você deseja:

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

Os logs serão misturados no seu arquivo de log embora ...

    
por 25.06.2015 / 14:52
0

Por que não tentar /usr/sbin/periodic ? Você pode usar o periodic.conf para controlar seu log ou redirecionar a saída para um arquivo de log.

    /usr/sbin/periodic ~/Desktop/My\ Automation/Resources/Temp/ >> /path/to/logfile
    
por 25.06.2015 / 13:55

Tags