Existe-t-il un outil / une commande sous Linux que je peux utiliser pour exécuter une commande dans plusieurs onglets simultanément? Je veux exécuter la même commande: ./myprog argument1 argument2
simultanément dans plus d'un shell pour vérifier si les mutex fonctionnent correctement dans un programme threadé. Je veux pouvoir augmenter le nombre d'instances de ce programme afin de mettre mon code sous tension ultérieurement.
Je cherche un peu quelque chose comme ce que fait le mur. Je peux penser à utiliser des tty, mais cela me semble très pénible si je dois l'adapter à beaucoup plus de coquillages.
shell
terminal
parallelism
Arpith
la source
la source
myprog
instances enfants et agrège leur sortie pour vous.Réponses:
Comme mavillan déjà suggéré, utiliser juste terminaison . Il permet d'afficher de nombreux terminaux en mosaïque. Lorsque vous activez la fonction de diffusion, vous pouvez entrer la même commande simultanément sur chaque terminal.
Voici un exemple avec la commande de date diffusée sur une grille de 32 terminaux.
la source
tmux a cette capacité. (avec beaucoup d'autres fonctionnalités utiles dans la même veine)
Peut être fait via:
la source
Multixterm
Un autre outil à ajouter à la liste est celui appelé
multixterm
. Il utilise desxterm
terminaux. Vous pouvez l'invoquer comme suit:Et une fois en place, une interface graphique vous sera présentée.
Vous pouvez ensuite commencer à faire tourner les
xterm
fenêtres en cliquant sur lenew xterm
bouton. Ici, par exemple, j'ai appelé 2. Si vous cliquez ensuite sur la fenêtre principale, vous pouvez commencer à taper des commandes simultanément dans les deux fenêtres:diffusion sur clavier
Apparaît être uniquement disponible sur Ubuntu, ressemble à multixterm.
extrait
la source
Cela peut être réalisé avec iTerm2
Référence: http://korishev.com/blog/2014/02/28/iterm2-broadcast-input/
la source
Vous pouvez faire quelque chose comme:
Ou si la sortie de chaque commande est pertinente lors de l'exécution, vous pouvez configurer l'écran.
L'écran nécessite plus de travail manuel.
la source
tail -f
le fichier journal au lieu de configurer une centaine d'écrans.tail -f *.log
Je suis un utilisateur de KDE. Avec konsole 2.13.2 sur KDE 4.13.3, vous pouvez le faire:
konsole ouverte
fractionner la vue verticalement
écrire simultanément sur chaque terminal à l'intérieur de la fenêtre
la source
Essayez Terminator (terminal émulateur). Il peut avoir plusieurs sessions de shell dans la même fenêtre et vous pouvez diffuser une commande à toutes.
Terminateur
la source
Vous pouvez utiliser un outil tel que MobaXterm qui vous permettra de vous connecter simultanément, puis de coller vos commandes dans toutes vos fenêtres.
la source
Si vous voulez seulement voir le résultat de la 100ème exécution du programme:
la source
Vous pouvez contrôler à
konsole
traversDCOP
. Un exemple est à partir d'ici :la source
Je suis d'accord avec le commentaire que @msw fait ci-dessus. Cela vous écrira un script à lancer par un
sh
processus en arrière-plan et imprimerash
le pid du processus enfant afin que vous puissiez le surveiller et surveiller ses enfants pendant son fonctionnement.la source
@Jinpeng était sur la bonne voie avec GNU Parallel , mais pas la mise en œuvre.
Exemple: exécutez 10 instances parallèles de votre programme, chaque thread exécutant votre programme une seule fois:
Exemple: exécutez 10 threads parallèles, chacun de ces threads exécutant votre programme indéfiniment:
Vous pouvez facilement mettre cela à l'échelle des centaines de threads en remplaçant le
10
dans mes exemples.Si votre programme produit des messages stdout et que vous souhaitez les voir au fur et à mesure de leur production (plutôt que le message par défaut qui les assemble), l'
--ungroup
option de mise en parallèle peut être utile.Si vous exécutez beaucoup de threads à partir de votre poste de travail et que vous ne voulez pas que les choses ne répondent plus, prenez en compte
nice
l'ensemble de la sous-arborescence de processus au moment du lancement.Note latérale, parallèle GNU est généralement pas installé par défaut mais est habituellement dans vos prises en pension de paquet normal, donc il suffit d' installer comme tout autre paquet:
dnf install parallel
,apt-get install parallel
,brew install parallel
, etc.la source
Vous pouvez démarrer des processus en arrière-plan avec
nohup
.Exemple:
Sortie:
N'oubliez pas de tuer la tâche plus tard avec le donné
PID
:Pour placer le processus au premier plan, vous devez entrer le numéro de travail, dans ce cas
[1]
:la source
gnu parallel est exactement l'outil que vous recherchez.
parallel -j 9 yourcommand
la source
Mon petit moulin:
Confectionnera le terminateur (termes de mise en page) pour plusieurs fenêtres d'un groupe.
EDIT: au moins, le terminateur est capable d’envoyer des émissions dans chaque terminal du même groupe. Cette fonction est commutable - vous pouvez donc l'activer pour écrire 'su -' puis désactiver et écrire un mot de passe personnel pour les terminaux onces et l'activer à nouveau.
la source