Gibt es ein Tool / einen Befehl in Linux, mit dem ich einen Befehl in mehreren Registerkarten gleichzeitig ausführen kann? Ich möchte den gleichen Befehl ausführen: ./myprog argument1 argument2
gleichzeitig in mehr als einer Shell, um zu überprüfen, ob die Mutexe in einem Thread-Programm einwandfrei funktionieren. Ich möchte in der Lage sein, die Anzahl der Instanzen dieses Programms zu erhöhen, um meinen Code später unter Druck zu setzen.
Ich suche so etwas wie das, was die Wand macht. Ich kann mir vorstellen, tty zu verwenden, aber das scheint nur eine Menge Schmerz zu sein, wenn ich das auf viel mehr Muscheln skalieren muss.
shell
terminal
parallelism
Arpith
quelle
quelle
myprog
Instanzen erzeugt und deren Ausgabe für Sie aggregiert.Antworten:
Wie von mavillan bereits vorgeschlagen, verwenden Sie einfach einen Terminator . Es erlaubt, viele Terminals gekachelt darzustellen. Wenn Sie die Sendefunktion aktivieren, können Sie auf jedem Terminal denselben Befehl gleichzeitig eingeben.
Hier ist ein Beispiel mit dem Datumsbefehl, der an ein Raster von 32 Terminals gesendet wird.
quelle
tmux hat diese Fähigkeit. (zusammen mit vielen anderen nützlichen Funktionen in der gleichen Richtung)
Kann erfolgen über:
quelle
Multixterm
Ein weiteres Tool, das Sie zur Liste hinzufügen können, heißt
multixterm
. Es werdenxterm
Terminals verwendet. Sie können es folgendermaßen aufrufen:Und dann wird Ihnen eine grafische Benutzeroberfläche angezeigt.
Sie können dann mit dem Hochfahren von
xterm
Fenstern beginnen, indem Sie auf dienew xterm
Schaltfläche klicken . Hier zum Beispiel habe ich 2 aufgerufen. Wenn Sie dann auf das primäre Fenster klicken, können Sie in beiden Fenstern gleichzeitig Befehle eingeben:Keyboardcast
Scheint nur unter Ubuntu verfügbar zu sein, ähnelt Multixterm.
Auszug
quelle
Dies kann mit iTerm2 erreicht werden
Referenz: http://korishev.com/blog/2014/02/28/iterm2-broadcast-input/
quelle
Sie können etwas tun wie:
Oder wenn die Ausgabe jedes Befehls während der Ausführung relevant ist, können Sie den Bildschirm einrichten.
Der Bildschirm erfordert mehr manuelle Arbeit.
quelle
tail -f
die Protokolldatei anstatt hundert Bildschirme einzurichten?tail -f *.log
Ich bin ein KDE-Benutzer, mit Konsole 2.13.2 unter KDE 4.13.3 können Sie dies tun:
Konsole öffnen
Ansicht vertikal teilen
Schreiben Sie gleichzeitig auf jedes Terminal im Fenster
quelle
Versuchen Sie es mit Terminator (Emulator-Terminal). Es kann viele Shell-Sitzungen im selben Fenster geben und Sie können einen Befehl an alle senden.
Terminator
quelle
Sie könnten ein Tool wie MobaXterm verwenden, mit dem Sie gleichzeitig eine Verbindung herstellen und dann Ihre Befehle in alle Ihre Fenster einfügen können.
quelle
Wenn Sie nur die Ausgabe der 100. Programmausführung sehen möchten:
quelle
Sie können
konsole
durch steuernDCOP
. Ein Beispiel ist von hier :quelle
Ich stimme dem obigen Kommentar @msw zu. Hiermit wird ein Skript geschrieben, das von einem Hintergrundprozess gestartet wird
sh
, undsh
die pid des untergeordneten Prozesses ausgedruckt, damit Sie ihn und seine untergeordneten Prozesse während der Ausführung überwachen können.quelle
@ Jinpeng war mit GNU Parallel auf dem richtigen Weg , nur nicht die Implementierung.
Beispiel: Führen Sie 10 parallele Instanzen Ihres Programms aus, wobei jeder Thread Ihr Programm nur einmal ausführt:
Beispiel: Führen Sie 10 parallele Threads aus, wobei jeder dieser Threads Ihr Programm unendlich ausführt:
Sie können dies leicht auf die Hunderte von Threads skalieren, indem Sie das
10
in meinen Beispielen ersetzen .Wenn Ihr Programm Standardnachrichten ausgibt und Sie diese so anzeigen möchten, wie sie erstellt wurden (und nicht die Standardnachricht, in der sie sortiert werden), kann die
--ungroup
Option parallel nützlich sein.Wenn Sie viele Threads von Ihrer Workstation ausführen und nicht möchten, dass die Dinge nicht mehr reagieren, sollten
nice
Sie den gesamten Teilbaum des Prozesses zum Startzeitpunkt berücksichtigen .Randnotiz, GNU Parallel ist in der Regel standardmäßig nicht installiert , sondern ist in der Regel in Ihrem normalen Paket repos, so installieren Sie es wie jedes andere Paket:
dnf install parallel
,apt-get install parallel
,brew install parallel
etc.quelle
Mit können Sie Prozesse im Hintergrund starten
nohup
.Beispiel:
Ausgabe:
Denken Sie daran, die Aufgabe später mit dem folgenden Befehl abzubrechen
PID
:Um den Prozess in den Vordergrund zu stellen, müssen Sie die Jobnummer eingeben, in diesem Fall
[1]
:quelle
gnu parallel ist genau das Werkzeug, das Sie suchen.
parallel -j 9 yourcommand
quelle
Meine kleine zu mahlen:
Legt die Terminatorkonfiguration (Layoutbegriffe) für viele Fenster in einer Gruppe fest.
EDIT: Zumindest kann terminator Broadcasts an jedes Terminal in derselben Gruppe senden. Diese Funktion ist umschaltbar - Sie können sie also aktivieren, indem Sie "su" schreiben. Deaktivieren und schreiben Sie dann das Passwort für einzelne Terminals und aktivieren Sie es erneut.
quelle