J'ai un shell script qui dit data.sh
. Pour que ce script s'exécute je vais passer un seul argument disons Table_1.
J'ai un fichier de test que j'obtiendrai à la suite d'un autre script.
Maintenant, dans un fichier de test, j'ai plus de 1000 arguments à passer au script.
Le fichier ressemble à ce qui suit :
Table_1
Table_2
Table_3
Table_4
and..so..on
Maintenant je veux exécuter le script pour qu'il s'exécute en parallèle.
Je fais cela en utilisant une tâche cron.
Tout d'abord, je divise le fichier de test en 20 parties en utilisant la commande split sous Linux.
split -l $(($(wc -l < test )/20 + 1)) test
Le fichier de test sera ensuite divisé en 20 parties telles que xaa,xab,xac et ainsi de suite.
Ensuite, exécutez le travail cron :
* * * * * while IFS=',' read a;do /home/XXXX/data.sh $a;done < /home/xxxx/xaa
* * * * * while IFS=',' read a;do /home/XXXX/data.sh $a;done < /home/xxxx/xab
and so on.
Comme cela implique beaucoup de processus manuels. J'aimerais le faire de manière dynamique.
Voici ce que je veux réaliser :
1) Dès que je reçois le fichier de test, je voudrais qu'il soit automatiquement divisé en 20 fichiers et stocké à un endroit particulier.
2) Ensuite, je voudrais programmer la tâche cron pour chaque jour 5 heures du matin en passant les 20 fichiers comme arguments au script.
Quelle est la meilleure façon de mettre cela en œuvre ? Toute réponse avec explication sera appréciée.